`
lvwenwen
  • 浏览: 934827 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

session知识点

阅读更多
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知识点

    这是对cookie与session的知识点的讲述

    Session相关知识点PDF版本

    包括Session的定义,特点,重要属性,优缺点,作用和使用场景,以及介绍Session的作用域及相关判断,总结了Cookie与Session之间的区别。 相关的博客连接:...

    Session-JavaWeb专题

    本课程系统地讲解了SESSION这个知识点,主要讲解了Session的概念,它是如何产生,如何工作,如何存放和如何消亡的,以及Session在JavaWeb中的体现和操作,在最后用一个小例子来演示了如何通过Servlet来操作Session。...

    计算机网络核心知识点总结

    内容概要:内容包括 7 / 5 / 4 层网络模型、 HTTP 报文格式与版本、TCP 三次握手与四次挥手、TCP / UDP 的对比、Cookie 与 Session 的关系与对比、常见的负载均衡算法等面试中最常见的八股文知识点(这些知识点在...

    JAVA基础知识点汇总

    10、Servlet中的forward和redirect有什么区别: ...4)Session(会话对象) 5)Application(应用程序对象) 6)Out(输出对象) 7)Config(配置对象) 8)Page(页面对象) 9)Exception(异常对象)

    PHP中如何使用session实现保存用户登录信息

    主要给大家介绍在php中是如何使用session实现保存用户登录信息的,涉及到php session 用户登录等一些知识点,使用session保存用户登录信息要比cookie安全很多。感兴趣的朋友一起学习吧

    网络安全知识点复习.docx

    网络安全知识点复习 软件1203班 石爱芳 造成网络不安全的主要的原因 软件本身设计不良或系统设计上的缺陷 使用者习惯及方法不正确 网络防护不够严谨 威胁企业安全的网络危险行为 浏览不明邮件附件 安装未授权应用 ...

    2019 Mock Exam A Morning Session

    2019 Mock Exam A Morning Session ...这份文件是2019年CFA考试考纲内容的资料,适用于6月份和12月份的考试,比直接看原版书教材更高效便捷,同时每一个知识点在里面都有重难点标注出来,特别好用。

    JAVA核心知识点整理(有效)

    1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ........................

    前端知识Token知识点笔记.pdf

    最通俗的关于Cookie, Session,Token和JWT的相关笔记和理解。在下章笔记中主要介绍一下主要介绍Token。包括Token的定义,特点,重要属性,优缺点,作用和...【前端知识】Cookie, Session,Token和JWT的发展及区别(三)

    PHP知识点梳理与简介

    PHP——基础知识、http-get、http-post、cookie与session、面向对象、mysql扩展、pdo、文件处理、动态图像处理

    Python处理session的方法整理

    主要介绍了Python处理session的方法以及相关知识点总结,有需要的朋友们学习下。

    java面试笔试资料包括JAVA基础核心知识点深度学习Spring面试题等资料合集.zip

    java面试笔试资料包括JAVA基础核心知识点深度学习Spring面试题等资料合集: JAVA核心知识点整理-282页 Java与哈希算法.docx Java中Lambda表达式的使用.docx JAVA多线程之线程间的通信方式.docx Java注解详解.docx ...

    CFA2019 mock exam Mornning Session

    CFA2019 mock exam morning Session ...这份文件是2019年CFA考试考纲内容的资料,适用于6月份和12月份的考试,比直接看原版书教材更高效便捷,同时每一个知识点在里面都有重难点标注出来,特别好用。

    2019 Mock Exam A Afternoon Session

    2019 Mock Exam A Afternoon Session ...这份文件是2019年CFA考试考纲内容的资料,适用于6月份和12月份的考试,比直接看原版书教材更高效便捷,同时每一个知识点在里面都有重难点标注出来,特别好用。

    chatgpt实现一个利用chatgpt自动生成wiki词条知识点的小工具,用来整理知识点

    v1 : 填入openai账号 或者 session token 以及 dokuwiki账号 将dokuwiki 默认文件夹 复制到 DokuWikiStick文件夹 (里面应该有俩文件夹,一个server,一个dokuwiki 打开格式文件夹,输入格式,里面放了格式的参考...

    javaweb详细笔记,绝对详细(内含代码)

    知识点 Javascript知识点 jQuery知识点 14 Bootstrap知识点 17 JDBC & 配置文件 & 连接池 19 Xml文档及解析 31 反射 33 Http协议和Tomcat服务器 36 JavaWeb核心之Servlet 41 HttpServletResponse 46 ...

    php实现session共享的实例方法

    在本篇文章里小编给大家整理的是关于php如何实现session共享知识点内容,有需要的朋友们跟着学习参考下。

    JavaWeb每日总结思维导图

    JavaWeb每日总结思维导图,包含JavaWeb开发的多项技术,方便复习知识点使用。内容包括:MySQL、MySQL约束&多表、MySQL多表&事务、JDBC、数据库连接池、HTML、CSS、JS基础&高级、BootStrap、XML、Tomcat、Servlet&...

    Flink知识点总结文档

    4、支持高度灵活的窗口(Window)操作 time、count、session 5、基于轻量级分布式快照(CheckPoint)实现的容错 保证exactly-once语义 6、基于JVM实现独立的内存管理 7、Save Points(保存点) Flink系统架构中包含...

Global site tag (gtag.js) - Google Analytics