Java(JSP):在“sub-jsp”中重复内容Type头

时间:2010-05-24 17:42:15

标签: java jsp content-type

当你在另一个.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页面中的一个标题的标题时,具体会发生什么?

3 个答案:

答案 0 :(得分:5)

来自JSP Specification

  

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的指令。