当你在另一个.jsp中包含的.jsp中重复标题时会发生什么?
例如,如果 example.jsp 以此开头:
<?xml version="1.0" encoding="UTF-8"?>
<jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page">
<jsp:directive.page contentType="text/html; charset=UTF-8" />
<div class="content">
<jsp:include page="support.jsp"/>
...
(包括 support.jsp )
然后 support.jsp 启动也:
<?xml version="1.0" encoding="UTF-8"?>
<jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page">
<jsp:directive.page contentType="text/html; charset=UTF-8" />
...
这是一个问题吗?这是不好的做法吗?
当你重复几次只对应于生成的.html页面中的一个标题的标题时,具体会发生什么?
答案 0 :(得分:5)
JSP.5.4&lt; jsp:include&gt;
...
包含的页面无法更改 响应状态代码或设置标头。 这排除了调用类似的方法 setCookie方法。试图调用这些 方法将被忽略。该 约束相当于一个 强加于包括的方法 RequestDispatcher类。
即,将忽略尝试设置内容类型。
答案 1 :(得分:2)
该指令直接转换为ServletResponse.setContentType调用
这种方法的文件说:
设置响应的内容类型 被送到客户端,如果 尚未提交答复。 给定的内容类型可以包括a 字符编码规范,用于 例如,text / html; charset = UTF-8。该 响应的字符编码只是 从给定的内容类型设置if 在getWriter之前调用此方法 被称为。
可以重复调用此方法 更改内容类型和字符 编码。如果,此方法无效 在响应之后调用 承诺。它没有设置 响应的字符编码(如果是) 调用getWriter后调用 或者在回复之后 提交。
容器必须通信 内容类型和字符 用于servlet的编码 如果响应的作者给客户 协议提供了这样做的方法。 在HTTP的情况下,Content-Type 使用标题。
在我看来,最好在顶级JSP页面中使用此指令一次,甚至可能在控制器servlet中,但绝对不在包含的页面中。
对于非JSPX编写的页面,一个 IS 有用的指令应该在所有具有非ascii字符的JSP中设置<%@ page pageEncoding="XXXX" %>
。如果您不想在整个页面上打印\ uXXXX代码,我强烈推荐它。
答案 2 :(得分:0)
这绝对是正常的做法。
你所谓的'header'只是jsp-compiler的指令。