servlet异常:Cannot forward after response has been committed(转)

今天在用servlet 测试的时候 出现

java.lang.IllegalStateException: Cannot forward after response has been committed

主要原因是servlet 方法中 出现了两次 转向,即

request.getRequestDispatcher("/login.jsp").forward(request, response);   这个出现了两次

 

解决办法:

在任意一个 request.getRequestDispatcher("/login.jsp").forward(request, response); 这个后面加上一个

return; 就行啦

 

而我由于使用是myeclipse导出重写方法(extends HttpServlet后里面的方法):

@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {	
		super.doGet(request, response);
}

@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		super.doPost(request, response);
}

 当我处理完Post请求时想返回时,总是出现异常,我按上面的方式加入return;后仍然是出现这个异常,代码如下:

@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		super.doPost(request, response);
		
		
		request.setCharacterEncoding("UTF-8");
        String word = request.getParameter("word");
        //String word = new String(request.getParameter("word").getBytes("ISO-8859-1"),"UTF-8");
        System.out.println(word);
        try {
            FileReader fr= new FileReader("D:\\OldWTBWorldSpace\\ww\\testFile\\test.txt");
            //可以根据服务器端不同的字典或者数据库修改。此处仅是示例而已......
            BufferedReader br = new BufferedReader(fr);
            ArrayList<String> qlist = new ArrayList<String>();
            String row;
            while((row=br.readLine())!=null){
                if(row.startsWith(word)){
                    qlist.add(row);
                    if(qlist.size()==10){
                        break;
                    }
                }
            }
            
            fr.close();
            request.setAttribute("words", qlist);
            request.setAttribute("word",word);
            RequestDispatcher rd = request.getRequestDispatcher("wordxml.jsp");
            
            try {
				rd.forward(request, response);
	            return ; 
			} catch (Exception e) {
				System.out.println("异常啦!");
				e.printStackTrace();
			}
            
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        
	}
 后来我将 super.doPost(request, response);注释掉后,才正确消除了异常,以此写下这文章,希望能帮到有需要的人。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值