什么是session?

  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);



    }
}

 

你可能感兴趣的:(java)