我的程序在一个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");
}有时候客户端重新连接到网络线程就释放了,很奇怪的问题。
或者改用response.sendDirect("");
forward的url里看一下你写的是什么
我这里不能用response.sendDirect(""),因为有数据要传递TO: eureka0891(迷茫中...)
客户端把整个流程走通都没有问题,绝对正常。现在是系统异常,我发现经常有线程吊死,就查找到这里,其中login.jsp是一个登陆页面,需要用户输入
requestDispatcher.forward(request, response);之后不能有代码了,因为已经跳转了,回到这儿也是没用的
用
if, else 来控制怎么跳转,在forward,和redirect之后不要写东西了,
在requestDispatcher.forward(request, response)之后可以有代码的,我试过,它是把代码都处理完了才跳转的
不过,编程习惯上不推荐
用getServletContext().getRequestDispatcher("result.jsp")试过,没有用
TO:troyzhang(troyzhang)
是呀,应该不会的,可是我用debug模式进去tomcat,发现那个进程还在。我把整个流程讲详细一下吧:
我这边是linux下面的tomcat,用的技术是struts,启的服务是一个认证,终端用户到我这里,我首先检查有没有登陆,如果没有,通过returnLonginRequest方法弹出登陆页面。
现在发现在弹出登陆页面之前,用户掉线,这个进程就会死掉