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;
}
}
分享到:
相关推荐
以下是Session的相关知识点: 1. **依赖关系**:Session通常依赖于Cookie中的jsessionid来标识用户。当服务器找不到客户端的jsessionid或者对应的Session过期或已被销毁,服务器会创建新的Session对象。 2. **创建...
**PHP Session 知识点详解** PHP Session 是一种在服务器端存储用户状态的机制,它允许开发者在用户浏览网站的不同页面之间保持数据。这解决了HTTP协议无状态的问题,因为HTTP请求是独立的,不保留任何关于用户过去...
### JSP管理员登录_session知识点详解 #### 一、概述 在本篇内容中,我们将深入探讨一个关于JSP(JavaServer Pages)中的管理员登录验证功能实现案例,特别关注如何利用`_session`来管理用户的登录状态。通过分析...
Session是Web应用程序中用于跟踪用户状态的一种技术。它在服务器端创建并存储用户会话的信息,确保用户在浏览网站期间的交互数据得以保留,即使页面重载或跳转。Session的引入主要是为了解决Cookie中数据安全性的...
知识点八:ORACLE read by other session 等待事件 * 是指一个会话请求的缓冲区当前正在被另一个会话读取到缓冲区缓存中 * 在 ORACLE 10.1 版本之前,这个事件被归类到 "buffer busy wait" 事件下
### Tomcat集群安装配置_session知识点概述 #### 一、项目背景及环境介绍 根据文档提供的信息,本项目是由西安辉盛科技发展有限责任公司发起的,旨在实现Tomcat集群的搭建,以便于支持高并发访问场景下的应用服务...
知识点:应用程序中所有页面均可以访问 Session 变量。 12. 正确答案:A. Page 知识点:Page 指令用于定义 ASP.NET 页面解析器和编译器所使用的特定的页面的属性。 通过这些问题,我们可以看到,试卷涵盖了 ASP...
知识点:Session 变量是 ASP.NET 应用程序中的一个全局变量,用于存储当前会话的状态信息。 * 题目12:指令用于定义 ASP.NET 页面解析器和编译器所使用的特定的页面的属性。 答案:A. @Page 知识点:@Page 指令用于...
#### 知识点一:Session的概念与作用 Session是一种服务器端技术,用于在用户的会话期间存储用户特定的信息。当用户访问网站时,服务器可能会为该用户创建一个Session对象来存储关于该用户的信息,如登录状态、...
通过对该技术的解释和知识点总结,可以看出 Session 实现购物车是一个复杂的技术,涉及到多个技术点,包括 Hashtable、Session、GridView 和数据库操作。但是,通过正确的实现,可以实现一个功能强大且灵活的购物车...
下面将详细解释`SpringSession`和`Redis`在实现Session共享中的关键知识点。 1. **SpringSession**: - `SpringSession` 是Spring生态系统的一个扩展,它允许我们将HTTP Session数据存储在外部存储(如Redis)中,...
实验"session实验"可能涵盖了以下几个关键知识点: 1. **Session的创建与销毁**:实验可能涉及到如何在服务器端创建一个新的Session,以及在用户登出或会话超时时如何销毁Session。通常,开发者会设置一个会话超时...
下面是关于Springboot实现多服务器session共享的详细知识点: Session共享的原理 在正常情况下,HTTPSession是通过servlet容器创建并管理的,创建成功后都保存在内存中。如果开发者需要对项目进行横向拓展搭建...
【标题】"tomcat-redis-session-manager包集合下载(tomcat8)"涉及的主要知识点是将Redis集成到Tomcat中管理会话(session),以提高Web应用的性能和可扩展性。 【描述】中提到的"所需的tomcat-redis-session-...
本文详细介绍了 Session 在 Web 开发中的作用、Tomcat 中 Session 的管理方式、Session 的持久化机制以及如何计算用户交互间隔等知识点。通过理解这些内容,开发者可以更好地管理和优化 Web 应用中的 Session 行为,...
下面将详细介绍Session的相关知识点。 #### 一、Session概念 1. **HTTP协议的特点**:HTTP协议是无状态的,即每次客户端发起的请求都是独立的,服务器不会保存任何关于之前请求的信息。为了克服这一限制,引入了...
下面是关于 session 的一些重要知识点: * session 是一种服务器端的机制,用于存储用户的信息。 * HttpSession 对象可以存储任何类型的 Java 对象。 * setAttribute() 方法可以将数据存储到 session 中。 * ...
本文将深入探讨标题为"php session操作类"的文件——`session_class.php`中可能包含的关键知识点。 首先,我们来了解Session的基本概念。Session是服务器端的一种存储方式,它允许开发者在用户浏览器关闭前跨页面地...
【知识点详解】: 1. **Tomcat集群**:Tomcat是Apache软件基金会的Java Servlet和JavaServer Pages(JSP)容器,常用于构建Web应用程序。在集群模式下,多台Tomcat服务器可以协同工作,提供更高的可用性和可伸缩性...