"getOutputStream() has already been called" 在 jsp 页面中使用 jnlp 标签
"getOutputStream() has already been called" while using jnlp tags inside jsp page
我正在尝试从 jsp 页面转到 jnlp 文件以获取已注册用户的指纹,
文件如下..
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String protocol = request.getScheme();
String domain = request.getServerName();
String port = Integer.toString(request.getServerPort());
String a = protocol + "://" + domain + ":" + port + path;
path = protocol + "://" + domain + ":" + port + path + "/";
%>
<%@page contentType="application/x-java-jnlp-file" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="<%=path%>" href="">
<information>
<title>Mytitle</title>
<vendor>Myvendor</vendor>
</information>
<security><all-permissions/></security>
<resources>
<!-- Application Resources -->
<j2se version="1.6+" href="http://java.sun.com/products/auto/j2se"/>
<jar href="jnlp/FingerPrintApplet.jar" main="true"/>
</resources>
<application-desc main-class="ui.InvitationApplet">
<argument>${firstName}</argument>
<argument>${lastName}</argument>
<argument>${loginId}</argument>
<argument>${roleId}</argument>
<argument>${urlCode}</argument>
<argument>${mainRecordOfficer}</argument>
<argument>${middleName}</argument>
<argument>${employeeId}</argument>
<argument>${createdBy}</argument>
<argument><%=a%></argument>
<argument>${invitedUnder}</argument>
<argument>${login_type}</argument>
</application-desc>
</jnlp>
但是每次 jsp 页面被点击时,jnlp 都会被下载,但我得到异常
java.lang.IllegalStateException: getOutputStream() has already been called for this response
我也知道这个异常是由于编译的 jsp 文件中新行的“空格”引起的,为此我还在 jsp[ 的顶部添加了下面一行=16=]
<%@ page trimDirectiveWhitespaces="true" %>
但我仍然遇到同样的问题,然后我还做了一些愚蠢的事情,比如手动删除 jsp 文件中的空格,比如
<%@ page .....%><%@ page.....%>
但还是一样的异常。
发生这种情况是因为,jsp 页面中默认保留空格,可能会作为一行添加到输出中,因此会出现上面解释的异常,要摆脱这种情况,只需在中添加以下行web.xml
这应该是固定的。
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
</jsp-property-group>
</jsp-config>
我正在尝试从 jsp 页面转到 jnlp 文件以获取已注册用户的指纹, 文件如下..
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String protocol = request.getScheme();
String domain = request.getServerName();
String port = Integer.toString(request.getServerPort());
String a = protocol + "://" + domain + ":" + port + path;
path = protocol + "://" + domain + ":" + port + path + "/";
%>
<%@page contentType="application/x-java-jnlp-file" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="<%=path%>" href="">
<information>
<title>Mytitle</title>
<vendor>Myvendor</vendor>
</information>
<security><all-permissions/></security>
<resources>
<!-- Application Resources -->
<j2se version="1.6+" href="http://java.sun.com/products/auto/j2se"/>
<jar href="jnlp/FingerPrintApplet.jar" main="true"/>
</resources>
<application-desc main-class="ui.InvitationApplet">
<argument>${firstName}</argument>
<argument>${lastName}</argument>
<argument>${loginId}</argument>
<argument>${roleId}</argument>
<argument>${urlCode}</argument>
<argument>${mainRecordOfficer}</argument>
<argument>${middleName}</argument>
<argument>${employeeId}</argument>
<argument>${createdBy}</argument>
<argument><%=a%></argument>
<argument>${invitedUnder}</argument>
<argument>${login_type}</argument>
</application-desc>
</jnlp>
但是每次 jsp 页面被点击时,jnlp 都会被下载,但我得到异常
java.lang.IllegalStateException: getOutputStream() has already been called for this response
我也知道这个异常是由于编译的 jsp 文件中新行的“空格”引起的,为此我还在 jsp[ 的顶部添加了下面一行=16=]
<%@ page trimDirectiveWhitespaces="true" %>
但我仍然遇到同样的问题,然后我还做了一些愚蠢的事情,比如手动删除 jsp 文件中的空格,比如
<%@ page .....%><%@ page.....%>
但还是一样的异常。
发生这种情况是因为,jsp 页面中默认保留空格,可能会作为一行添加到输出中,因此会出现上面解释的异常,要摆脱这种情况,只需在中添加以下行web.xml
这应该是固定的。
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<trim-directive-whitespaces>true</trim-directive-whitespaces>
</jsp-property-group>
</jsp-config>