欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

什么是session?

程序员文章站 2022-07-15 15:28:35
...
  1. HttpSession概述

  • 会话跟踪session

        session也是一个域对象之一,它的范围是在一个会话范围之类有效,session既然是域对象,那么当然就要有getAttribute()和setAttribute()系列的方法了。

         在一个会话内共享一个session对象,所以session中可以保存一个会话内的数据,例如当前用户的信息。

         session的范围大于request,可以在一个会话中多个请求之间共享数据,但session的范围小于ServletContext(application),session不能在多个用户之间共享数据。

         ServletContext:在服务器已启动就创建,直到服务器停止才会销毁。

         HttpSession:在当前会话内有效,浏览器请求之后创建该对象,直到浏览器关闭才销毁。

         HttpServletRequest:只在一次请求范围之内。

  • 获取session对象

使用request.getSession()方法就可以获取session对象。

有了session,就不用使用Cookie来跟踪会话了,但是session不能像Cookie那样长命,一但用户关闭浏览器窗口,那么session就死掉了。

范例:

 

  • session存储值
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;

public class Regist01 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        // 获得Session对象(它的值是存储在服务器端的)
        HttpSession session = request.getSession();

        // 设置session的属性,在session中的属性在整次会话(浏览器不关闭)都有作用
        session.setAttribute("username", username);
        session.setAttribute("password", password);

        request.getRequestDispatcher("/regist1.html").forward(request, response);
    }
}
  • session获取值
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpSession;
import java.io.IOException;

public class Regist02 extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        request.setCharacterEncoding("UTF-8");

        // 根据request中获取session
        HttpSession session = request.getSession();
        // 从session获取用户名和密码
        String username = (String) session.getAttribute("username");
        String password = (String) session.getAttribute("password");


        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        response.getWriter().println("用户名:" + username);
        response.getWriter().println("密码:" + password);



    }
}

 

相关标签: 什么是session?