Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JSP中设置内容类型和状态代码_Jsp_Jstl_Http Status Code 404_Content Type_Page Directives - Fatal编程技术网

在JSP中设置内容类型和状态代码

在JSP中设置内容类型和状态代码,jsp,jstl,http-status-code-404,content-type,page-directives,Jsp,Jstl,Http Status Code 404,Content Type,Page Directives,这是一个由两部分组成的问题。 第1部分:我想根据我正在做的Accept标题设置jsp页面的内容类型 <c:if test="${fn:contains(header['accept'], 'xml')}"> <c:set var="contentType" value="application/xml;charset=UTF-8"/> </c:if> <c:if test="${fn:contains(header['accept'], 'jso

这是一个由两部分组成的问题。
第1部分:我想根据我正在做的
Accept
标题设置jsp页面的
内容类型

<c:if test="${fn:contains(header['accept'], 'xml')}">
    <c:set var="contentType" value="application/xml;charset=UTF-8"/>
</c:if>
<c:if test="${fn:contains(header['accept'], 'json')}">
    <c:set var="contentType" value="application/json;charset=UTF-8"/>
</c:if>
<jsp:directive.page contentType='${contentType}'/>

对此,我得到了类似
我也试过了

为此我得到了
集合中的无效属性:“ContentType”

我的另一个EL表达式得到了正确的计算,因此我已经对
isaligned
属性进行了实验。我也不想使用scriptlet标记。
第2部分:我想动态设置
状态代码
,而不需要JSP页面上的scriptlet标记的帮助。
目前我正在做


我知道它可以在
servlet
过滤器中设置,但我希望它可以从
jsp
页面或通过
custom
标记进行设置。请指导我完成此操作。

解决方案
我偶然发现了我以前的工作,我在其中使用了
setAttribute()
,所以我尝试了这个方法,它成功了,这就是它的实现方式。
对于这两个部分,通过扩展
BodyTagSupport
来创建自定义标记,我们可以通过以下方式获得
HttpServletResponse
对象:

HttpServletResponse response = (HttpServletResponse) pageContext.getResponse();
一旦你有了
响应
对象,你就可以轻松地设置
内容类型
状态代码