今天复习JavaEE时遇到个问题,具体如下:
一个简单的过滤应用,站点下有一html页面用于登录post至loginServlet,loginServlet做登录处理,正确request.getRequestDispatcher至jsp文件夹的主页面(main.jsp),错误给出提示信息;添加Filter拦截直接访问jsp文件夹下的页面Filter代码:public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpServletResponse res=(HttpServletResponse)response;
if (req.getSession().getAttribute("UserId") != null) {
chain.doFilter(request, response);
}else{
//res.sendRedirect("login.html");
req.getRequestDispatcher("../login.html").forward(req, res);
}
}web.xml<filter>
<display-name>MyFilter</display-name>
<filter-name>MyFilter</filter-name>
<filter-class>org.honf.biz.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/jsp/*</url-pattern>
</filter-mapping>OK。问题出来了
首先使用的是response的sendRedirect()方法,这个方法也是页面跳转不过会重新创建request和response对吧?
而使用request的getRequestDispatcher().forward()进行跳转会继续使用forward过去的request和response?
但是在前者运行时断点可以正常结束,而页面没跳转,感觉在多次提交(但是断点只进行一次),最终内存溢出;后者能正常跳转。
在此 请教各位这是为何?哦,对了 运行环境为
jdk 1.6.0_22
tomcat 6.0.29
eclipse 3.6.1
一个简单的过滤应用,站点下有一html页面用于登录post至loginServlet,loginServlet做登录处理,正确request.getRequestDispatcher至jsp文件夹的主页面(main.jsp),错误给出提示信息;添加Filter拦截直接访问jsp文件夹下的页面Filter代码:public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpServletResponse res=(HttpServletResponse)response;
if (req.getSession().getAttribute("UserId") != null) {
chain.doFilter(request, response);
}else{
//res.sendRedirect("login.html");
req.getRequestDispatcher("../login.html").forward(req, res);
}
}web.xml<filter>
<display-name>MyFilter</display-name>
<filter-name>MyFilter</filter-name>
<filter-class>org.honf.biz.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/jsp/*</url-pattern>
</filter-mapping>OK。问题出来了
首先使用的是response的sendRedirect()方法,这个方法也是页面跳转不过会重新创建request和response对吧?
而使用request的getRequestDispatcher().forward()进行跳转会继续使用forward过去的request和response?
但是在前者运行时断点可以正常结束,而页面没跳转,感觉在多次提交(但是断点只进行一次),最终内存溢出;后者能正常跳转。
在此 请教各位这是为何?哦,对了 运行环境为
jdk 1.6.0_22
tomcat 6.0.29
eclipse 3.6.1
解决方案 »
- axis的AdminClient的问题
- amcharts如何让纵坐标层分颜色块!求高手!
- 企业最看重什么?
- Spring+Struts整合开发中有关配置文件的问题
- ssh做了一道题不知道那出错了??那位大侠给看看 谢了!!急急!!
- <bean:message的问题
- 关于proxool使用的问题(来者有分)!!
- 使用struts的template.总是显示不出图片,怎么回事?
- 如何引入javax.xml.soap包的问题
- 求解决java.lang.IllegalArgumentException: id to load is required for loading
- 为什么我一用spring声明式事务`再去获得这个带事务的bean的话就会得到一个代理类啊
- jibx 用在java web 项目中出错!!!
而使用request的getRequestDispatcher().forward()进行跳转会继续使用forward过去的request和response?
以上都对
多次提交是不是浏览器缓存的问题?可以设置参数防止多次提交