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 和表单域中得验证码的值

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

  • 相关阅读:
    设计模式学习笔记之设计原则
    设计模式学习笔记之生成器模式
    设计模式学习笔记之适配器模式、外观模式
    java中的日期类型之间转换
    JS刷新当前页面的几种方法总结
    Java_枚举
    动态规划详解_2
    Java算法-动态规划详解
    Java经典算法题_2
    Java算法
  • 原文地址:https://www.cnblogs.com/techroad4ca/p/5562160.html
Copyright © 2011-2022 走看看