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

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

Servlet/JSP-07 Session应用的更多相关文章

  1. 面试题:servlet jsp cook session 背1

    一.Servlet是什么?JSP是什么?它们的联系与区别是什么? Servlet是Java编写的运行在Servlet容器的服务端程序,狭义的Servlet是指Servlet接口,广义的Servlet是 ...

  2. javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  3. servlet&jsp高级:第三部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. Servlet&jsp基础:第五部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  5. Servlet&JSP基础

    Servlet     JSP     JSP四种基本语法:     JSP注释<%--注释内容-->     JSP声明<%!变量.函数%>     JSP表达式<%= ...

  6. Servlet&JSP中的知识点

    先sun提出的是Servlet体系,这个体系使得使用JAVA的程序员也能开发基于B/S架构的WEB应用程序,使用Servlet类将HTTP请求和响应封装在标准JAVA类中来实现各种WEB应用方案.随着 ...

  7. 马士兵Servlet&Jsp学习

    Servlet&JSP 1>http常见错误信息:  404--url地址找不找,  403--禁止访问  500--服务器内部错误  2>Servlet的生命周期:  *生命全过 ...

  8. 基于Servlet+jsp的web计算器

    基于Servlet+jsp的web计算器 这次老大为了让我们自己复习web中页面的跳转给布置得任务 天下代码一大抄,关键看你怎么抄 首先我想到的计算算法不是什么堆栈,是简单的(其实很复杂,但是我就只需 ...

  9. [ Servlet / JSP ] J2EE Web Application 中的 JSESSIONID 是什么?

    JSESSIONID is a cookie in J2EE web application which is used in session tracking. Since HTTP is a st ...

  10. Servlet+JSP例子

    前面两节已经学习了什么是Servlet,Servlet接口函数是哪些.怎么运行.Servlet生命周期是什么?  以及Servlet中的模式匹配URL,web.xml配置和HttpServlet.怎么 ...

随机推荐

  1. 如何改变 FMX ListView 颜色

    需求:改变 ListView 颜色 适用:Firemonkey 任何平台 操作:Style 是改变控件外观最便捷的途径,ListView 也不例外,下面示范使用 StyleBook 来设定 ListV ...

  2. FNV哈希算法

    由来:FNV哈希算法全名为Fowler-Noll-Vo算法,是以三位发明人Glenn Fowler,Landon Curt Noll,Phong Vo的名字来命名的,最早在1991年提出. 特点和用途 ...

  3. 优化JavaScripe 提升首页加载速度的几种方案解析

    优化目的: 1. 减少load量. 2. 优化js,加快页面加载速度. 网站中最影响网站打开速度的是什么?我会告诉是网站中的javascript,简称JS.模板中引用的JS文件越多,打开速度越慢,细读 ...

  4. 「轉」Java的内存机制

    0.参考资料: http://www.j2megame.org/index.php/content/view/2246/125.html 1.Java的内存机制 Java 把内存划分成两种:一种是栈内 ...

  5. Js 风骚的代码

    1.写自动调用的匿名函数 当我们写完一个函数立即调用时,总是 function a(){ } a(); 或许 var a = function(){ } a(); 而高手总是 (function(){ ...

  6. java 字符串zlib压缩/解压

    今天在测公司的中间件时发现,增加netty自带的zlib codec压缩处理后,就报decompress failed, invalid head之类的异常.后来发现,直接用bytebuf处理报文体是 ...

  7. 【GOF23设计模式】备忘录模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_备忘录模式.多点备忘.事务操作.回滚数据底层架构 package com.test.memento; /** * 源发器类 ...

  8. HTML(.js) – 最简单的方式操作 DOM 的 JS 库

    HTML(.js) 是一个轻量的(压缩后~2kb) JavaScript 库,简化了与 DOM 交互的方法. 这个 JavaScript 库的方法可读性很好,并具有搜索和遍历 DOM 的方法.相比 j ...

  9. [deviceone开发]-打开新页动画效果

    一.简介 do_App的openPage支持16种过场动画,这个示例直观的展示16种动画的效果.适合初学者. 二.效果图 三.相关下载 https://github.com/do-project/co ...

  10. NavigationBar隐藏后,返回时表现不完美

    是这样的,app首页头部可能要自定义,所以选择把NavigationBar隐藏,所以在viewWillAppear时这样写: self.navigationController?.setNavigat ...