什么是session?

    session是一种会话技术,用于保存共享的会话数据至服务器端

session和cookie的区别

    cookie:由服务器创建,保存在浏览器端
    session:由服务器创建,保存在服务器端

session原理

    浏览器访问服务器,服务器创建session对象和ID属性,session对象储存在服务器,ID属性带回浏览器(用cookie带回去),浏览器再次访问服务器,带着ID访问,服务器选择响应的session对象进行“服务”。

session的API

    获取或者创建session:
    request.getSession(boolean creat)
    request.getSession()
    获得session的ID属性:session.ID()
    session域的应用:
    共享数据、传递数据、一个存一个取—–域范围一次会话
    setAttribute(String name.Object obj)存数据
    Object getAttribute(String name)取数据
    removeAttribute(String name)删除(清除)数据

获取Session对象

HttpSession session=request.getSession();

存入数据(域的使用)

session.setAttribute("infor","http://www.adminlog.xyz");

完整代码

SessionServlet

package Session;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/SessionServlet")
public class SessionServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out=response.getWriter();
        //获取Session对象
        HttpSession session=request.getSession();
        //设置保存ID属性的cookie的生存时长
        //则在规定时间后刷新"http://localhost:8080/GetSessionServlet"之前显示的ID会消失(生存周期到此结束'60s')
        Cookie cookie=new Cookie("JSESSIONID", session.getId());
        cookie. setMaxAge(60);
        out.print(session.getId()+"<br>"+"<hr />");
        //存入数据
//        将网址存入infor
        session.setAttribute("infor","http://www.adminlog.xyz");
        //
        out.println("ID为:"+session.getId()+"<br>"+"<hr />"+"3秒后跳转到GetSessionServlet服务器");
        response.setHeader("Refresh","3;URL=/GetSessionServlet");
        //重定向至GetServlet
//        response.sendRedirect("/GetSessionServlet");
    }
}

GetSessionServlet

package Session;

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;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/SessionServlet")
public class SessionServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out=response.getWriter();
        //获取Session对象
        HttpSession session=request.getSession();
        //存入数据
//        将网址存入infor
        session.setAttribute("infor","http://www.adminlog.xyz");
        //
        out.println("ID为:"+session.getId()+"<br>"+"<hr />"+"3秒后跳转到GetSessionServlet服务器");
        response.setHeader("Refresh","3;URL=/GetSessionServlet");
        //重定向至GetServlet
//        response.sendRedirect("/GetSessionServlet");
    }
}