我的程序在一个tomcat上面运行,外面调用,在调用过程中,客户端的断线了,我发现程序吊死在那里了,检查日志发现:“&&&&&&&&&&&&requestDispatcher”打印了,而“&&&&&&&&&&&requestDispatcher forward”没有打印出来。相关的程序代码如下:  private void returnLonginRequest(HttpServletRequest request,
                                   HttpServletResponse response
                                   ) throws IOException {
      RequestDispatcher requestDispatcher = request.getRequestDispatcher("/login.jsp");
      System.out.println(" &&&&&&&&&&&&requestDispatcher");
      requestDispatcher.forward(request, response);
      System.out.println(" &&&&&&&&&&&&requestDispatcher forward");
   }有时候客户端重新连接到网络线程就释放了,很奇怪的问题。

解决方案 »

  1.   

    在后面加个RETURN试试、
    或者改用response.sendDirect("");
      

  2.   

    到requestDispatcher.forward(request, response);
    forward的url里看一下你写的是什么
      

  3.   

    TO: javalin3012(郎基弩斯枪)
     我这里不能用response.sendDirect(""),因为有数据要传递TO: eureka0891(迷茫中...) 
     客户端把整个流程走通都没有问题,绝对正常。现在是系统异常,我发现经常有线程吊死,就查找到这里,其中login.jsp是一个登陆页面,需要用户输入
      

  4.   

    另外,我详细跟踪了程序,程序已经进入login.jsp,但是由于客户端断线了,程序就吊死在这里了
      

  5.   

    sorry,好久没写servlet了,所以忘记了怎么写
    requestDispatcher.forward(request, response);之后不能有代码了,因为已经跳转了,回到这儿也是没用的

    if, else 来控制怎么跳转,在forward,和redirect之后不要写东西了,
      

  6.   

    to: eureka0891(迷茫中...) 
    在requestDispatcher.forward(request, response)之后可以有代码的,我试过,它是把代码都处理完了才跳转的
     不过,编程习惯上不推荐
      

  7.   

    用getServletContext().getRequestDispatcher("result.jsp");试试呢
      

  8.   

    TO: tjjzs(王、) 
    用getServletContext().getRequestDispatcher("result.jsp")试过,没有用
    TO:troyzhang(troyzhang) 
    是呀,应该不会的,可是我用debug模式进去tomcat,发现那个进程还在。我把整个流程讲详细一下吧:
    我这边是linux下面的tomcat,用的技术是struts,启的服务是一个认证,终端用户到我这里,我首先检查有没有登陆,如果没有,通过returnLonginRequest方法弹出登陆页面。
    现在发现在弹出登陆页面之前,用户掉线,这个进程就会死掉