一.问题描述:
在register.jsp页面登录后,后台请求分派到index.jsp,然后每次刷新都会做如下截图提示。
二.背景:
1.Java写的后台
2.浏览器网址登录前和登录后一直是:http://localhost:8080/diary/User.do?action=login
3.在register.jsp页面登录后,后台请求分派到index.jsp
request.getRequestDispatcher("index.jsp").forward(request, response);// 请求分派页面
三.分析
此处register.jsp和index.jsp页面是独立的,登录的表单在register.jsp页面,index.jsp页面没有任何表单。可是为什么会有这样的提示呢?分析页面的过程:
在register.jsp登录页:http://localhost:8080/diary/login.jsp;
登录后:http://localhost:8080/diary/User.do?action=login;
刷新:http://localhost:8080/diary/User.do?action=login;
由于后台是用的请求分派把index.jsp的内容发送到客户端的,而此时客户端的页面网址并不会发生改变,刷新页面时,浏览器请求的是User.do?action=login并不是index.jsp,而User.do?action=login这个请求包含表单提交,所以会提示。
四.解决办法
后台处理register.jsp的servlet将请求分派改为重定向,此时网址会变,问题解决。
response.sendRedirect("index.jsp");