用户刷新页面的重复提交数据问题及WEB-INF文件夹相关解析

       问题:对于浏览器提示“您所查找的网页要使用已输入的信息。返回此页可能需要重复已进行的所有操作。是否要继续操作?”,很多程序猿做网页可能会遇到刷新页面时,浏览器刷新时提示上述文字。继续之后浏览器就会再次将上次的请求发送给页面,造成重新刷新页面时数据多次提交的问题



      原因:首先分析服务器中使用的是request.getRequestDispatcher(url).forward(HttpServletRequest,HttpServletResponse);方法,导致url并未刷新,页面在服务器内部就完成了转发过程,导致多次访问访问此url,刷新url时重复提交数据。



      解决方法:可以将原过程jsp-servlet-jsp,转变为jsp-servlet(通过response.sendRedirect(url))-servlet-jsp,在其中新建一个新的servlet,使用第一个servlet处理数据如session,然后重定向到第二个servlet,再转发到最后的jsp页面,(由于中间有一个重定向的过程,url会变成第二个servlet的访问URL,因此刷新不会重复提交数据)



      扩展:可能有些小伙伴听到我上面的解释会好奇为什么这么麻烦要新加一个servlet,我也猜到你们心里可能想的就是使过程变为jsp-srvlert(-重定向)-jsp,因此我要给大家普及一下,在一个web项目中存放在web-root根目录下的jsp页面或者别的配置文件,可以通过浏览器输入相应的url直接访问下载,这是一个很危险的过程,很容易让有心人分析出网站中的一下相关数据,因此项目中jsp文件都是存放在web-root中WEB-INF中的,此文件夹中的文件不能通过浏览中输入相应的url获取到,可以通过src中的servlet文件转发跳转,因此比较安全,这就是为什么上面的过程为什么不用jsp-srvlert(-重定向)-jsp模式,因为根本通过浏览器输入URL是直接访问不到WEB-INF中的文件的!

     如果各位小伙伴有什么更好的想法请告知我!谢谢大家了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值