目录
4、session有什么特点,有什么用,为什么会出现session
1、设置session超时失效
几种方式中 代码设置> 项目配置文件 > Tomcat配置 。 项目配置文件用的较多
1.1、springboot 项目设置
springboot 1.x :
server.session.timeout=300
单位 秒
springboot 2.0 :
server.servlet.session.timeout = 10000000
单位 秒
1.2、web.xml
<session-config>
<session-timeout>15</session-timeout>
</session-config>
单位 分
1.3、java代码设置
session.setMaxInactiveInterval(30*60);//以秒为单位,即在没有活动30分钟后,session将失效
设置为-1永不过期
springboot(未试):
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer(){
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
container.setSessionTimeout(1800);//单位为S
}
};
}
---------------------
在启动器中加上 ↑
1.4、tomcat 服务器设置
tomcat默认session超时失效时间为30分钟。
修改:在tomcat-7.0\conf\web.xml中设置,以下是tomcat7.0中默认配置:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
1.5、其他
2、什么是session
开会谈话,信息包含在话语中,所以它能保存信息。
3、怎么使用session
增:
在servlet中调用request.getSession();或者request.getSession(true); 服务器会产生session。
然后可以在session中设置值:session.setAttribute("一个key", 一个value);
如果要覆盖session需要在配置文件中设置。
如果调用request.getSession(false);将不会产生session。
需要注意的是,单纯使用servlet不会产生session,使用jsp默认会产生session。因为jsp编译成class文件时会调用到上面产生session的方法。
jsp产生session参考:https://blog.csdn.net/cxl0921/article/details/76854313
删:
删除一个键:session.removeAttribute("key");
删除所有键:session.invalidate();
改:
获取后重新设置。
查:
HttpSession session=request.getSession();
session.getAttribute("name"); 获取对应的name参数信息,
查询所有session 看 7。
还有一个查询id方法getid
String getId( ),获取当前的会话ID。每个会话在服务器端都存在一个唯一的标示sessionID,session对象发送到浏览器的唯一数据就是sessionID,它一般存储在cookie中。
4、session有什么特点,有什么用,为什么会出现session
保持状态:比如保持登录状态。
session类似于map是键值对的形式存在的。
session的过期时间是从session不活动的时候开始计算,如果session一直活动,session就总不会过期,从该Session未被访问,开始计时; 一旦Session被访问,计时清0;
为什么出现:因为他有状态,http是无状态的(没有记忆功能),两次请求时不知道是不是访问过。
5、request、response
待续
6、servlet
待续
7、其他
遍历所有session:
//方法一:通过遍历的方法进行遍历
String FileName="";
HttpSession session=request.getSession();//获取session
Object name=session.getAttribute("AddFileName");
System.out.println(name);
Enumeration enumeration =session.getAttributeNames();//获取session中所有的键值对
//遍历enumeration中的键值对
String[] names=session.getValueNames();
for(int i=0;i<names.length;i++){
if(names[i].equals("AddFileName")){
FileName+=session.getValue(names[i])+"@";
System.out.println(FileName);
}
}
//方法二:通过for循环进行遍历
while(enumeration.hasMoreElements()){
String AddFileName=enumeration.nextElement().toString();//获取session中的键值
String value=(String)session.getAttribute(AddFileName);//根据键值取出session中的值
System.out.println(value);
FileName+=value+"@";
System.out.println(FileName);
//String FileName= (String)session.getAttribute("AddFileName");
}
设置session可覆盖:待续
8、面试问:
待续
参考来源:
https://www.cnblogs.com/diewufeixian/p/4221747.html
https://blog.csdn.net/fanbingfu/article/details/78318855
https://blog.csdn.net/qq_31971675/article/details/52081742
https://zh.wikipedia.org/wiki/%E4%BC%9A%E8%AF%9D_(%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6)