无脚本JSP

无脚本JSP,jsp,scriptlet,Jsp,Scriptlet,有没有任何方法可以在不使用scriptlet的情况下在JSP中执行以下等效操作 <% response.setContentType("text/plain"); %> 我不能简单地使用 因为我需要在a的不同分支中的两个位置设置内容类型,JSP编译器只允许一个这样的指令 此外,我不能编写两个单独的JSP并转发到servlet中的一个或另一个,因为当身份验证失败时,容器会触发JSP 干杯, 堂 编辑: 如果需要有条件地设置MIME类型,可以使用 <% if( branch

有没有任何方法可以在不使用scriptlet的情况下在JSP中执行以下等效操作

<% response.setContentType("text/plain");  %>
我不能简单地使用

因为我需要在a的不同分支中的两个位置设置内容类型,JSP编译器只允许一个这样的指令

此外,我不能编写两个单独的JSP并转发到servlet中的一个或另一个,因为当身份验证失败时,容器会触发JSP

干杯, 堂

编辑:

如果需要有条件地设置MIME类型,可以使用

<% 
if( branch condition ) { 
  response.setContentType("text/plain");
} else {
  response.setContentType("text/html"); 
}
%>
显然,以上是一个与原始问题背道而驰的脚本。不想使用scriptlet有什么特别的原因吗

<% response.setContentType("text/plain");  %>
更好的方法可能是在servlet中执行分支逻辑,并将请求转发给只处理显示的JSP。如果内容本身不同,您可以选择使用两个单独的JSP,每种内容类型一个

编辑:

如果需要有条件地设置MIME类型,可以使用

<% 
if( branch condition ) { 
  response.setContentType("text/plain");
} else {
  response.setContentType("text/html"); 
}
%>
显然,以上是一个与原始问题背道而驰的脚本。不想使用scriptlet有什么特别的原因吗

<% response.setContentType("text/plain");  %>

更好的方法可能是在servlet中执行分支逻辑,并将请求转发给只处理显示的JSP。如果内容本身不同,您可以选择使用两个单独的JSP,每种内容类型一个JSP。

文本/普通响应和文本/html响应听起来像两个非常不同的响应,几乎没有共同点

创建2个JP,并在servlet中进行分支


如果它们确实有公共元素,您仍然可以使用includes。

文本/普通响应和文本/html响应听起来像是两个非常不同的响应,几乎没有共同点

创建2个JP,并在servlet中进行分支


如果它们确实有公共元素,您仍然可以使用includes。

最简单的方法是创建一个可以执行此操作的标记文件标记,然后使用它

在WEB-INF/tags目录中创建文件setMimeType.tag

<%@tag description="put the tag description here" pageEncoding="UTF-8"%>
<%@ attribute name="mimeType" required="true"%>
<%
    response.setContentType(jspContext.findAttribute("mimeType"));
%>
然后,在JSP中,将以下内容添加到标题:

<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>
然后在JSP中,您可以执行以下操作:

<t:setMimeType mimeType="text/plain"/>
是的,标记文件不是无脚本的,但实际的JSP页面是无脚本的。你可以说我在吹毛求疵,但我不同意,因为我认为标记文件是放置脚本之类东西的完美媒介,因为它们在封装和抽象方面提供了很好的功能。另外,唯一的另一个解决方案是用Java编写自己的JSP标记处理程序,这对于像这样简单的事情来说是疯狂的


需要jsp2.0,但我发现JSP标记文件对JSP开发是一个巨大的福音。

最简单的方法是创建一个标记文件标记来完成这项工作,然后使用它

在WEB-INF/tags目录中创建文件setMimeType.tag

<%@tag description="put the tag description here" pageEncoding="UTF-8"%>
<%@ attribute name="mimeType" required="true"%>
<%
    response.setContentType(jspContext.findAttribute("mimeType"));
%>
然后,在JSP中,将以下内容添加到标题:

<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %>
然后在JSP中,您可以执行以下操作:

<t:setMimeType mimeType="text/plain"/>
是的,标记文件不是无脚本的,但实际的JSP页面是无脚本的。你可以说我在吹毛求疵,但我不同意,因为我认为标记文件是放置脚本之类东西的完美媒介,因为它们在封装和抽象方面提供了很好的功能。另外,唯一的另一个解决方案是用Java编写自己的JSP标记处理程序,这对于像这样简单的事情来说是疯狂的


需要JSP 2.0,但我发现JSP标记文件对JSP开发来说是一大福音。

对不起,我忘了提到为什么我不能使用它,我已经更新了问题除了被认为是一种不好的做法之外,没有特别的理由不想使用scriptlet。对不起,我忘了提到为什么我不能使用它,我已经更新了问题,没有特别的理由不想使用scriptlet,除了它被认为是一种不好的做法之外。