jsp中的异常----java.lang.IllegalStateException

来源:互联网 发布:mac常用快捷键大全 编辑:程序博客网 时间:2024/06/09 07:57

在写servlet 文件时,遇到了java.lang.IllegalStateException异常,刚开始一直不知道错误出现在哪里,后来才发现。

以下是异常提示:

java.lang.IllegalStateException: Cannot forward after response has been committedat org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:302)at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)at servlet.UserListByPowerServlet.doPost(UserListByPowerServlet.java:68)at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)at java.lang.Thread.run(Thread.java:619)


出现异常的servlet文件是UserListByPowerServlet.java,文件代码如下

 

 

public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setCharacterEncoding("utf-8");request.setCharacterEncoding("utf-8");String power=request.getParameter("power");String pNo=request.getParameter("pNo");String po="0";if(power.equals("1")){po="超级管理员";}else if(power.equals("2")){po="普通管理员";}else if(power.equals("3")){po="普通用户";}if(power.equals("0")){request.setAttribute("pNo", pNo);request.getRequestDispatcher("userListServlet?pNo="+pNo).forward(request, response);return;}if(pNo==null || pNo.equals("") || pNo.trim().equals("0")){pNo="1";}int p=1;try{/////////////////////////////////当用户输入的是字符串时p=Integer.parseInt(pNo);}catch(Exception e){p=1;}oj_UserDao ud=new oj_UserDaoImpl();int pageSize=10;int totalCount=ud.totalCount2(po);int pageCount=totalCount%pageSize==0?totalCount/pageSize:totalCount/pageSize+1;if(p>=pageCount){///////////////////当输入的数字大于总页数时p=pageCount;}List list=ud.getUserList2(po,p, pageSize);request.setAttribute("pNo", pNo);request.setAttribute("totalCount", totalCount);request.setAttribute("pageCount" ,pageCount);request.setAttribute("userList", list);  request.setAttribute("power",power);request.getRequestDispatcher("tab/UserList.jsp").forward(request, response); }


 

 

大家看到上面的两句request.getRequestDispatcher("").forward(request, response);了吧,就是这两个语句冲突造成的异常,解决办法就是在第一个句子执行完之后,在其后面

加上return语句,让其不在往下执行!!!!!!这样就OK了!!!

 

 

 

 

原创粉丝点击