session的作用,生命周期
session的原理
session使用细节,多浏览器共享session
重启浏览,关闭cookie的话无解
禁用cookie了--->解决方案 重写URL --->response.encodeURL("day07/servlet/SessionDemo1");
response.encodeRedirectURL("day07/servlet/SessionDemo1");
javascript:void(0) //去掉超链接默认行为
//手工以cooie形式发sessionid,以解决关闭浏览器后,上次买的东西还在(cooike未禁用)
客户端防表单重复提交和服务器端session防表单重复提交(服务器有延迟)
El表达式用于获取数据(${data})
6 总结
Session将信息保存在服务器上,而Cookie保存在客户端上
Session比Cookie更安全,Session比Cookie更占资源
开发原则:Session要尽量少用--尽量少向Session中保存信息
session使用了Cookie的机制,如果Cookie被禁用,则Session也无法使用,因为客户端的session ID以cookie形式,保存在了客户端的内存当中,这个时候我们可以通过url重写,来保证session的有效性.
重写url的方法如下
resp.encodeURL(request.getRequestURL().toString());
解决:
1.javascript阻止表单重复提交
<script type="text/javascript">
var iscommitted =false;//记录表单是否提交,2.设置按钮不可用
function dosubmit(){
if(!iscommitted){
iscommitted =true;
return true;
}else{
return false;
}
}
</script>
2。服务器端防止表单重复提交
public class FormServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//产生随机数(表单号)
TokenProccessor tp =TokenProccessor.getInstance();
String token =tp.generateToken();
boolean b =isTokenValid(request);
if(!b){
System.out.println("不要重复提交");
return;
}
request.getSession().removeAttribute("token");
System.out.println("想数据库中提交注册。。。。");
}
//判斷表單是否提交
public boolean isTokenValid(HttpServletRequest request) {
String client_token = request.getParameter("token");
if (client_token == null) {
return false;
}
String server_token = (String) request.getSession().getAttribute(
"token");
if (server_token == null) {
return false;
}
if (!server_token.equals(client_token)) {
return false;
}
return true;
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
static class TokenProccessor { // 令牌
/**
* 1.把构造方法私有 2.自己创建一个 3.对外暴露一个方法,允许获取上面创建的对象
*/
private TokenProccessor() {
}
private static final TokenProccessor instance = new TokenProccessor();
public static TokenProccessor getInstance() {
return instance;
}
//任意的二进制数据是三个字节 ,指纹128位字节
public String generateToken() {
String token = System.currentTimeMillis() + new Random().nextInt()
+ "";
try {
MessageDigest md = MessageDigest.getInstance("md5");
byte[] md5 = md.digest();
//上传下载用到base64
// base64編程:把三个字节变成四个字节 ,编之后最大不会超过64
BASE64Encoder encoder = new BASE64Encoder();
encoder.encode(md5);
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
return null;
}
}
分享到:
相关推荐
这是对cookie与session的知识点的讲述
包括Session的定义,特点,重要属性,优缺点,作用和使用场景,以及介绍Session的作用域及相关判断,总结了Cookie与Session之间的区别。 相关的博客连接:...
本课程系统地讲解了SESSION这个知识点,主要讲解了Session的概念,它是如何产生,如何工作,如何存放和如何消亡的,以及Session在JavaWeb中的体现和操作,在最后用一个小例子来演示了如何通过Servlet来操作Session。...
内容概要:内容包括 7 / 5 / 4 层网络模型、 HTTP 报文格式与版本、TCP 三次握手与四次挥手、TCP / UDP 的对比、Cookie 与 Session 的关系与对比、常见的负载均衡算法等面试中最常见的八股文知识点(这些知识点在...
10、Servlet中的forward和redirect有什么区别: ...4)Session(会话对象) 5)Application(应用程序对象) 6)Out(输出对象) 7)Config(配置对象) 8)Page(页面对象) 9)Exception(异常对象)
主要给大家介绍在php中是如何使用session实现保存用户登录信息的,涉及到php session 用户登录等一些知识点,使用session保存用户登录信息要比cookie安全很多。感兴趣的朋友一起学习吧
网络安全知识点复习 软件1203班 石爱芳 造成网络不安全的主要的原因 软件本身设计不良或系统设计上的缺陷 使用者习惯及方法不正确 网络防护不够严谨 威胁企业安全的网络危险行为 浏览不明邮件附件 安装未授权应用 ...
2019 Mock Exam A Morning Session ...这份文件是2019年CFA考试考纲内容的资料,适用于6月份和12月份的考试,比直接看原版书教材更高效便捷,同时每一个知识点在里面都有重难点标注出来,特别好用。
1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................
最通俗的关于Cookie, Session,Token和JWT的相关笔记和理解。在下章笔记中主要介绍一下主要介绍Token。包括Token的定义,特点,重要属性,优缺点,作用和...【前端知识】Cookie, Session,Token和JWT的发展及区别(三)
PHP——基础知识、http-get、http-post、cookie与session、面向对象、mysql扩展、pdo、文件处理、动态图像处理
主要介绍了Python处理session的方法以及相关知识点总结,有需要的朋友们学习下。
java面试笔试资料包括JAVA基础核心知识点深度学习Spring面试题等资料合集: JAVA核心知识点整理-282页 Java与哈希算法.docx Java中Lambda表达式的使用.docx JAVA多线程之线程间的通信方式.docx Java注解详解.docx ...
CFA2019 mock exam morning Session ...这份文件是2019年CFA考试考纲内容的资料,适用于6月份和12月份的考试,比直接看原版书教材更高效便捷,同时每一个知识点在里面都有重难点标注出来,特别好用。
2019 Mock Exam A Afternoon Session ...这份文件是2019年CFA考试考纲内容的资料,适用于6月份和12月份的考试,比直接看原版书教材更高效便捷,同时每一个知识点在里面都有重难点标注出来,特别好用。
v1 : 填入openai账号 或者 session token 以及 dokuwiki账号 将dokuwiki 默认文件夹 复制到 DokuWikiStick文件夹 (里面应该有俩文件夹,一个server,一个dokuwiki 打开格式文件夹,输入格式,里面放了格式的参考...
知识点 Javascript知识点 jQuery知识点 14 Bootstrap知识点 17 JDBC & 配置文件 & 连接池 19 Xml文档及解析 31 反射 33 Http协议和Tomcat服务器 36 JavaWeb核心之Servlet 41 HttpServletResponse 46 ...
在本篇文章里小编给大家整理的是关于php如何实现session共享知识点内容,有需要的朋友们跟着学习参考下。
JavaWeb每日总结思维导图,包含JavaWeb开发的多项技术,方便复习知识点使用。内容包括:MySQL、MySQL约束&多表、MySQL多表&事务、JDBC、数据库连接池、HTML、CSS、JS基础&高级、BootStrap、XML、Tomcat、Servlet&...
4、支持高度灵活的窗口(Window)操作 time、count、session 5、基于轻量级分布式快照(CheckPoint)实现的容错 保证exactly-once语义 6、基于JVM实现独立的内存管理 7、Save Points(保存点) Flink系统架构中包含...