session

Session:

Session:

package session;

import javax.servlet.ServletContext;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpSession;

/**

 * 前提条件:客户端必须启用会话才行,如果禁用会话则失效

 * request.getSession():

 * 获取session对象时先判断该对象是否存在

 * 如果存在则获取session对象,如果不存在则创建session对象

 * @author 13554

 *URL:http://localhost:8080/sessionProject/session01

 */

@WebServlet("/session01")

public class Session1 extends HttpServlet {

         @Override

          protected void service(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp) throws javax.servlet.ServletException, java.io.IOException{

                   //获取session对象

                   HttpSession session=req.getSession();

                   //获取session会话标识【唯一标识】

                   String sessionID=session.getId();

                   System.out.println("session会话标识:"+sessionID);//session会话标识:DD5212F160E4CD48340FAADFD16B1CAA

                   //获取session创建时间【无论访问几次,该时间戳为第一次创建的时间戳】

                   System.out.println("session创建时间:"+session.getCreationTime());//session创建时间:1598103617292

                   //获取session最后一次访问的时间【以最后一次访问的时间戳为准】

                   System.out.println("session最后一次访问的时间:"+session.getLastAccessedTime());//session最后一次访问的时间:1598103617292

                   //判断是否是新的session对象【初次访问为是,再次访问url则为否】

                   System.out.println("判断是否是新的session对象:"+(session.isNew()?"是":"否"));//判断是否是新的session对象:是

//               ServletContext  context=session.getServletContext();

//               context.

//               System.out.println(":"+session.);

                   //session02重定向过来的

                   resp.getWriter().print("session.sname:"+req.getSession().getAttribute("sname"));

                   resp.getWriter().print("request.rname:"+req.getAttribute("rname"));

         }

}

/**

 * COOKIE SESSION的区别

 * 1、数据存放位置不同:cookie数据存放在客户的浏览器上,session数据放在服务器上。

 * 2、安全程度zhi不同:cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。

 * 3、性能使用程度不同:session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

 * 4、数据存储大小不同:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储与服务端,浏览器对其没有限制。

 * 5、session的底层依赖cookie实现

 */

package session;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpSession;

/**

 * session:

 * getAttribute(key)--获取域对象

 * setAttribute(key,val)--设置域对象

 * removeAttribute(key)--移除域对象

 * request:

 * getAttribute(key)--获取域对象

 * setAttribute(key,val)--设置域对象

 * 请求转发:

 * 一次请求,session、request作用域都有效

 * 重定向:

 * 两次请求,session作用域有效,request作用域无效

 * @author 13554

 *URL:http://localhost:port/sessionProject/session02

 */

@WebServlet("/session02")

public class Session2 extends HttpServlet {

         @Override

          protected void service(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp) throws javax.servlet.ServletException, java.io.IOException{

                   //获取session对象

                   HttpSession session=req.getSession();

                   //设置session域对象

                   session.setAttribute("sname", "session02");

                   //设置request对象

                   req.setAttribute("rname", "request02");

                   //请求转发

         //      req.getRequestDispatcher("/view/index.jsp").forward(req, resp);

                   //重定向

                   resp.sendRedirect("session01");

         }

}

package session;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpSession;

/**

 * Session设置超时时间:【一旦有操作session重新计时】

 * 1.tomcat的web.xml中设置超时时间,默认超时时间30分钟,可以参照修改如下配置:

 *   <session-config>

 *      <session-timeout>30</session-timeout>

 * </session-config>

 * web文件路径

 * /Servers/Tomcat v9.0 Server at localhost-config/web.xml

 * F:\Program Files\apache-tomcat-9.0.16\conf/web.xml

 * 2.设置最大不活动时间:【单位秒计】

 *session.setMaxInactiveInterval(15);

 *3.立即销毁session:

 *session.invalidate();

 *4.关闭浏览器或切换其他浏览器失效

 *session底层依赖cookie,cookie对象默认存活时间为关闭浏览器,JSESSION

 *5.关闭服务器

 *关闭服务器 session销毁

 *session失效意味着此次会话结束,数据共享结束

 * @author 13554

 *URL://http://localhost:8080/sessionProject/session03

 */

@WebServlet("/session03")

public class SessionTimeOutSet extends HttpServlet {

         @Override

          protected void service(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp) throws javax.servlet.ServletException, java.io.IOException{

                   //获取session对象

                   HttpSession session=req.getSession();

                   System.out.println("是否新session?:"+(session.isNew()?"是":"否"));//15秒之后刷新URL 结果为是,15秒内结果为 否

                   //获取最大不活动时间

                   int time=session.getMaxInactiveInterval();

                   System.out.println("最大不活动时间:"+time+"秒");//第一次打印默认销毁时间:1800秒,第二次打印设置的时间:15秒

                   //设置最大不活动时间:【单位秒计】

                   session.setMaxInactiveInterval(15);

                   //获取最大不活动时间

                   int time2=session.getMaxInactiveInterval();

                   System.out.println("最大不活动时间:"+time2+"秒");//15秒

                  

                   //立即销毁session

                   //session.invalidate();

                  

         }       

}

Jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

<title>INDEX界面</title>

<!-- http://localhost:8080/sessionProject/view/index.jsp -->

</head>

<body>

<%

String sname=(String)request.getSession().getAttribute("sname");

String rname=(String)request.getAttribute("rname");

out.println("Session域对象sname:"+sname);

out.println("request域对象rname:"+rname);

%>

</body>

</html>

备注:学习笔记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值