当前位置: 首页 > 工具软件 > session > 使用案例 >

Java——Session使用

勾炜
2023-12-01


前言

本文主要介绍Session的基本知识及基本使用方法


一、Session是什么?

服务器为了保存用户状态而创建的一个特殊的对象。

当浏览器第一次访问服务器时,服务器创建一个session对象(该对象有一个唯一的id,一般称之为sessionId),服务器会将sessionId以cookie的方式发送给浏览器。
当浏览器再次访问服务器时,会将sessionId发送过来,服务器依据sessionId就可以找到对应的session对象。

二、使用步骤

1.设置session

代码如下(示例):



import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class SessionIndexServlet
 */
@WebServlet("/SessionIndexServlet")
public class SessionIndexServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SessionIndexServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	
	  protected void doGet(HttpServletRequest request, HttpServletResponse
	  response) throws ServletException, IOException { // TODO Auto-generated
			HttpSession session = request.getSession();
		 	session.setAttribute("name", "wangwei");
		 	response.sendRedirect("/servlet/SessionLogin"); }

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

2.获取session

代码如下(示例):



import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class SessionLoginServlet
 */
@WebServlet("/SessionLogin")
public class SessionLoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public SessionLoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		HttpSession session =request.getSession();
		String name =(String)session.getAttribute("name");
		response.getWriter().println("name"+name);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

3.销毁session

Session 的销毁

为了避免Session中存储的数据过大,Session需要销毁:

超时自动销毁。

从用户最后一次访问网站开始,超过一定时间后,服务器自动销毁Session,以及保存在Session中的数据。
Tomcat 服务器默认的Session超时时间是30分钟可以利用web.xml设置超时时间单位是分钟,设置为0表示不销毁。

<session-config> <session-timeout>20</session-timeout> </session-config>

调用API方法,主动销毁Session

使用 session.invalidate()

public class DeleteServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        HttpSession session = request.getSession();
        session.invalidate();
        response.setContentType(
                "text/html; charset=utf-8");
        response.getWriter().println("呵呵!"); 
    }
}

参考:—什么是Session

三、Cookie和Session区别

相同点

  • 这俩都是浏览器和服务器之间交互的工具,都是用来跟踪浏览器用户身份的会话方式。

  • 都是在第一次访问时,由服务器产生的
    不同点

  • 存放位置不同

     cookie保存在客户端,
     
     session保存在服务端
    
  • 存取方式不同

     cookie只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。
     
     session中能够存取任何类型的数据
    
  • 安全性不同

     cookie存储在浏览器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修改cookie中的内容。
     
     session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。
    

总结

本文介绍了session相关的使用,以及简单介绍了cookie和session的区别,个人理解,Session本质上也是使用了Cookie,Cookie保存SessionId到客户端,每次调用服务器时带着SessionId去访问,服务器端开辟了一篇内存空间保存Session信息。
 类似资料: