This question already has answers here:
Difference between JspWriter and PrintWriter in Java EE?
                                
                                    (2个答案)
                                
                        
                                3年前关闭。
            
                    
我从我的JSP页面中获得了拆分输出,第一个是writer.write()输出,第二个是省略了标签的JSP。

我有以下简单的JSP页面

<%@ page import="com.AAA.SiteTemplate.RenderPageInterface" %>
<%@ page import="java.io.Writer" %>
<%@ page import="java.io.IOException" %>
<%@ page import="com.NatureRelaxation.SiteTemplate.RenderPageInterfaceNull" %><%--
  Created by IntelliJ IDEA.
  User:
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <%
        RenderPageInterface obj = (RenderPageInterface) request.getAttribute("renderPageInterface");
        if (obj == null){
            obj = new RenderPageInterfaceNull();
        }
    %>
    <title><% response.getWriter().write(obj.getTitle()); %></title>
    <style type="text/css">
    </style>
</head>
<body>
<%
obj.renderHTML(response.getWriter());
%>
</body>
</html>


我通过这个小功能包括了它:

public static void doRequest(HttpServletRequest req, HttpServletResponse res, RenderPageInterface renderPageInterface) throws ServletException, IOException{
    req.setAttribute("renderPageInterface", renderPageInterface);
    RequestDispatcher rd = req.getRequestDispatcher("/WEB-INF/templates/header.jsp");
    rd.include(req, res);
}


我现在得到的回应是

My page titleMypagebody....





<html>
<head>

    <title></title>


等等。中间有4个换行符。我认为这一定是编译器错误,但是清除缓存(IntelliJ)并重新启动,重新部署到Tomcat 8并不能解决该错误。在重新启动服务器之前,所有操作均正常进行,但现在没有任何修复方法。我什至在JSP上运行调试器,一切正常。

更新:

它在没有此标记“ ”的情况下运行良好,但是当该标记存在时,正文和标题都写在顶部,模板写在顶部底部。 getTitle()返回一个字符串。

最佳答案

我很快就知道了,但这确实很棘手。 “ response.getWriter()”和JSP的“ out”变量(我不知道)不是同一回事。

碰巧的是,我的代码以前可以工作。

在使用“ out”(JSPWriter)变量之前,我还必须包含jsp.api.jar。

这里的相关信息:

Difference between JspWriter and PrintWriter in Java EE?

what is difference between JspWriter and PrintWriter?

08-05 20:01