zoukankan      html  css  js  c++  java
  • Servlet/JSP-07 Session应用

    Session应用

    一. 避免表单重复提交

    1. 表单重复提交的情况

      ①在表单提交到一个 Servlet,而 Servlet 又通过请求转发的方式响应了一个 JSP 或者 HTML 页面,此时浏览器地址栏还保留着 Servlet 路径,在此响应页面点击”刷新“按钮

      ② 在响应页面尚未到达时,重复点击表单的”提交“按钮

      ③ 点击”返回“按钮或者浏览器的回退按钮,再点击”提交“按钮

    2. 如何避免表单重复提交?

    原理:在表单中做一个标记,当表单提交到Servlet时,检查标记是否存在且是否和预定义的一致,若一致则受理请求,若不一致或没有标记,则提示重复提交。

    方法:

      ① 仅提供一个隐藏域,<input type="hidden" name="token" value="tomas" />    无法实现:没有办法清除请求参数

      ② 把标记放在 request 中。无法实现:因为当表单页面显示后(包括刷新),本次JSP页面对应request已被销毁,在提交的时候已经是一个新的request

      ③ 把标记放在 session 中。可以实现,步骤如下:

        1> 在原表单页面,生成一个随机值(时间戳)token

        2> 在原表单页面, 将 token 值放入 session 中

        3> 在原表单页面, 将 token 值放入隐藏域中

        1>> 在表单提交的目标 Servlet 中,获取 session 和隐藏域中的 token 值

        2>> 比较两个值是否一致:若一致则受理请求,且把session 中的 token 值清除

        3>> 若不一致,则直接响应提示:重复提交。

        

    二. 验证码

      1.实现原理:和避免表单重复提交一样

      2.步骤:

        >① 在要提交的表单页面,生成一个验证码的图片,同时将此验证码对应的字符串放入 session(此步由一个 Servlet 完成)

        >② 在要提交的表单页面,定义一个文本域,用于输入验证码

        >>① 在目标 Servlet 中获取 session 和表单域中得验证码的值

        >>② 比较两者是否一致:若一致则验证通过,受理请求; 若不一致则重定向回提交页面,提示验证码错误

  • 相关阅读:
    JSP学习笔记
    Java之String、StringBuffer、StringBuilder的区别
    Android开发笔记——Handler总结
    深搜_八皇后(HDU_2553)
    广搜_优先队列和记录搜索路径(HDU_1026)
    深搜_素数环(HDU_1016)
    深搜_奇偶减枝(HDU_1010)
    转载 ASP.NET MVC学习之(5):Html.ActionLink
    启动万维网发布服务(W3SVC)
    What is POID
  • 原文地址:https://www.cnblogs.com/techroad4ca/p/5562160.html
Copyright © 2011-2022 走看看