我从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上运行调试器,一切都井然有序。
更新:如果没有这个标签"<% response. getwwriter ().write(obj.getTitle());%>",但是当标签在那里时,正文和标题都写在顶部,模板写在底部。getTitle()返回字符串
我很快就明白了,但这很棘手。"response. getwwriter()"和JSP的"out"变量(我不知道)不是一回事。
这是一个巧合,我的代码以前工作。
在使用"out" (JSPWriter)变量之前,我还必须包含jsp.api.jar。
相关信息:
JspWriter和printwwriter在Java EE中的区别?
JspWriter和printwwriter的区别是什么?