抛出此方法
java.lang.IllegalStateException:在提交响应后无法转发
我无法发现问题.有帮助吗?
int noOfRows = Integer.parseInt(request.getParameter("noOfRows"));
String chkboxVal = "";
// String FormatId=null;
Vector vRow = new Vector();
Vector vRow1 = new Vector();
String GroupId = "";
String GroupDesc = "";
for (int i = 0; i < noOfRows; i++) {
if ((request.getParameter("chk_select" + i)) == null) {
chkboxVal = "notticked";
} else {
chkboxVal = request.getParameter("chk_select" + i);
if (chkboxVal.equals("ticked")) {
fwdurl = "true";
Statement st1 = con.createStatement();
GroupId = request.getParameter("GroupId" + i);
GroupDesc = request.getParameter("GroupDesc" + i); …Run Code Online (Sandbox Code Playgroud) servlets response forward illegalstateexception requestdispatcher
晚上好,我想知道如何清除写入PrintWriter的数据,即打印后是否可以从PrintWriter中删除数据?
在这个servlet中,我将一些文本打印到响应中,并在#i表示的行中删除所有以前打印的数据并打印新内容:
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
String uName = request.getParameter("uName");
String uPassword = request.getParameter("uPassword");
if (uName .equals("Islam")) {
out.println("Valid-Name");
if (uPassword !=null) {
if (uPassword .equals("Islam")) {
// # clear the writer from any printed data here
out.println("Valid-password");
} else {
out.println("");
out.println("InValid-password");
}
}
} else {
out.println("InValid-Name");
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我尝试了out.flush()但旧的打印文本仍然存在
我有一个 Tomcat 8 Web 应用程序,它使用 2 MB png 图像作为“启动/登录页面”背景。该图像在外部样式表中被引用。
如果我清除浏览器缓存,直接请求图像的 URL,但在图像加载之前离开图像,它将完全杀死我的 Web 应用程序。它无法为任何请求提供更多响应。
我收到此错误:
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:396)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:344)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:421)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:409)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:97)
at org.apache.catalina.servlets.DefaultServlet.copy(DefaultServlet.java:1795)
at org.apache.catalina.servlets.DefaultServlet.serveResource(DefaultServlet.java:919)
at org.apache.catalina.servlets.DefaultServlet.doGet(DefaultServlet.java:400)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at other.JsCssImgResponseHeaderFilter.doFilter(JsCssImgResponseHeaderFilter.java:36)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at other.CatchAnyExceptionFilter.doFilter(CatchAnyExceptionFilter.java:39)
Run Code Online (Sandbox Code Playgroud)
我正在尝试捕获该异常(或任何与此相关的异常)并显示友好的 ErrorPage.jsp,但我无法重定向到 ErrorPage,因为响应已经提交。
我无法在测试环境中复制它,但我可以在生产中随意打破它。
有谁知道我有哪些选择可以解决此类问题?提前致谢。
顺便说一句,这是我的 Filter 类的 doFilter 方法的样子:
public void doFilter(ServletRequest req,
ServletResponse res,
FilterChain fc) throws IOException, ServletException
{
HttpServletRequest request …Run Code Online (Sandbox Code Playgroud) 我是Java EE世界的初学者.我一直在尝试使用Servlets和JSP创建一个简单的登录系统,遵循此处提供的指南http://come2niks.com/?p=1589.这就是我的doPost()的样子.
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
processRequest(request, response);
try
{
System.out.println("In the Login Servlet");
LoginBean user = new LoginBean();
user.setUserName(request.getParameter("username"));
user.setPassword(request.getParameter("pass"));
LoginDAO db = new LoginDAO();
user = db.login(user);
System.err.println("I am Back !");
if(user.isValid())
{
System.err.println("VALIDED.. ReDirecting..");
System.err.println("Getting Session");
HttpSession session = request.getSession(true);
System.err.println("Got Session");
session.setAttribute("currentSessionUser",user);
System.err.println("Attribute Set");
response.sendRedirect("Login_Success.jsp");
}else
{
System.err.println(" NOT VALIDED.. ReDirecting..");
response.sendRedirect("Login_Failed.jsp");
out.println(" NOT VALIDED.. ReDirecting..");
}
} catch (Throwable exc)
{
System.out.println(exc); …Run Code Online (Sandbox Code Playgroud) 我正在使用部署在 WildFly 8.2 服务器上的 Spring Boot (v1.2.4)。在应用程序中,我使用的是 font awesome v4.3。
对于三个文件,每个文件都小于 100kb,我得到“响应已经提交的异常”,如下所示。
还有许多其他资源 > 100kb 并且仍然可以成功提供服务。
堆栈跟踪如下
2015-06-15 15:52:29,547 ERROR [org.springframework.boot.context.web.ErrorPageFilter] (default task-3) Cannot forward to error page for request [/resources/fonts/fontawesome-webfont.eot] as the response has already been committed. As a result, the response may have the wrong status code. If your application is running on WebSphere Application Server you may be able to resolve this problem by setting com.ibm.ws.webcontainer.invokeFlushAfterService to false: java.io.IOException: An established connection was aborted …Run Code Online (Sandbox Code Playgroud) servlets ×3
java ×2
forward ×1
java-ee ×1
printwriter ×1
response ×1
spring ×1
spring-boot ×1
spring-mvc ×1
tomcat8 ×1
wildfly ×1