java - session有关 - 设置session超时 - 怎么使用session 等

目录

 

1、设置session超时失效

1.1、springboot 项目设置

1.2、web.xml

1.3、java代码设置

1.4、tomcat 服务器设置

1.5、其他

2、什么是session

3、怎么使用session

增:

删:

改:

查:

4、session有什么特点,有什么用,为什么会出现session

5、request、response

6、servlet

7、其他

8、面试问:


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)

https://zhidao.baidu.com/question/758123072726759484.html

https://blog.csdn.net/cxl0921/article/details/76854313

猜你喜欢

转载自blog.csdn.net/sinat_32238399/article/details/83094803