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 和表单域中得验证码的值
>>② 比较两者是否一致:若一致则验证通过,受理请求; 若不一致则重定向回提交页面,提示验证码错误
Servlet/JSP-07 Session应用的更多相关文章
- 面试题:servlet jsp cook session 背1
一.Servlet是什么?JSP是什么?它们的联系与区别是什么? Servlet是Java编写的运行在Servlet容器的服务端程序,狭义的Servlet是指Servlet接口,广义的Servlet是 ...
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- servlet&jsp高级:第三部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Servlet&jsp基础:第五部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Servlet&JSP基础
Servlet JSP JSP四种基本语法: JSP注释<%--注释内容--> JSP声明<%!变量.函数%> JSP表达式<%= ...
- Servlet&JSP中的知识点
先sun提出的是Servlet体系,这个体系使得使用JAVA的程序员也能开发基于B/S架构的WEB应用程序,使用Servlet类将HTTP请求和响应封装在标准JAVA类中来实现各种WEB应用方案.随着 ...
- 马士兵Servlet&Jsp学习
Servlet&JSP 1>http常见错误信息: 404--url地址找不找, 403--禁止访问 500--服务器内部错误 2>Servlet的生命周期: *生命全过 ...
- 基于Servlet+jsp的web计算器
基于Servlet+jsp的web计算器 这次老大为了让我们自己复习web中页面的跳转给布置得任务 天下代码一大抄,关键看你怎么抄 首先我想到的计算算法不是什么堆栈,是简单的(其实很复杂,但是我就只需 ...
- [ 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 ...
- Servlet+JSP例子
前面两节已经学习了什么是Servlet,Servlet接口函数是哪些.怎么运行.Servlet生命周期是什么? 以及Servlet中的模式匹配URL,web.xml配置和HttpServlet.怎么 ...
随机推荐
- HDU 5703 Desert 水题 找规律
已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这 ...
- Java空白final
Java 1.1允许我们创建"空白final",它们属于一些特殊的字段.尽管被申明为final,但却未得到一个初始值. 无论在哪种情况下,空白final都必须在实际使用前得到正确的 ...
- 网上图书商城3--Book模块
小技巧一:分页 ①PageBean<Book> findByCriteria(List<Expression> exprList, int pc) --- 通用的查询方法(p ...
- Android 手机卫士9--短信备份
AToolActivity.java protected void showSmsBackUpDialog() { //1,创建一个带进度条的对话框 final ProgressDialog prog ...
- Spring Mvc 的自定义拦截器
spring mvc的拦截器 SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户 ...
- JS中数组去除重复的方法
function unique(arr) { var result = [], hash = []; for (var i = 0, elem; (elem = arr[i]) != null; i+ ...
- CSS中兼容的一面-----Hack
国庆了,出去玩耍,也有好长时间没有更新博客了.. 今天就和大家共享一篇技术博文吧.. CSS中兼容的一面-----Hack技术大全 兼容范围: IE:6.0+,FireFox:2.0+,Opera 1 ...
- JScript中的条件注释详解(转载自网络)
JScript中的条件注释详解-转载 这篇文章主要介绍了JScript中的条件注释详解,本文讲解了@cc_on.@if.@set.@_win32.@_win16.@_mac等条件注释语句及可用于条件编 ...
- JavaScript 开发者经常忽略或误用的七个基础知识点(转)
JavaScript 本身可以算是一门简单的语言,但我们也不断用智慧和灵活的模式来改进它.昨天我们将这些模式应用到了 JavaScript 框架中,今天这些框架又驱动了我们的 Web 应用程序.很多新 ...
- [ javascript canvas 插件演示 ] canvas 插件演示
<!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title ...