Servlet——Session

一、Session概述

Session即会话,是Web开发中的一种会话跟踪技术

Session是以javax.servlet.http.HttpSession的接口对象的形式出现的


二、Session与Cookie区别

  • Cookie是将会话状态保存在了客户端
  • Session是将会话状态保存在了服务端

三、Session的创建

  • HttpSession session=request.getSession();

四、对Session域属性空间的操作(跨请求)

Session是一个专门用于存放数据的集合,一般称这个用于存放数据的内存空间为域属性空间


五、request的getSession()方法:参数true或false

  1. 一般情况下,若要向Session写入数据,则需要request.getSession(true),意义是:有老的Session用老的Session,没有老的Session创建新的Session
  2. 若要从Session中读取数据,则需要request.getSession(false),意义是:有老的Session用老的Session,没有老的Session则返回null。因为要读取数据只有老的Session中才有可能存在要查找的数据,新建的Session中是不可能有要查找的数据的

六、Session基本用法

其中对跨请求有一个对比,request不跨请求,session跨请求


index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="some" method="Post">
        USER:<input type="text" name="username"/><br>
        <input type="submit" value="submit">
    </form>
</body>
</html>

SomeServlet.java

package com.xulinjie;

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

/**
 * @author Administrator
 *
 */
public class SomeServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取用户提交参数
        String username = request.getParameter("username");

        //将参数放入request域
        request.setAttribute("user", username);



        /*
         * 下面是session请求响应部分,与上面区分开
         */
        //获取session对象
        HttpSession session = request.getSession();

        //向session域中写入属性
        session.setAttribute("username_s", username);

        response.getWriter().println("SomeServlet :"+username);
        response.getWriter().println("SomeServlet :"+session);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

OtherServlet.java

package com.xulinjie;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class OtherServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //从request中读取user域
        String user = request.getParameter("user");

        //获取session
        HttpSession session = request.getSession(false);

        //从session中读指定属性
        String username=null;
        if(session!=null)
        {
            username=(String) session.getAttribute("username_s");
        }

        PrintWriter out=response.getWriter();
        out.println("OtherServlet_request:user:"+user);
        out.println("OtherServlet_session:session_username:"+username);
        out.println("OtherServlet:session:"+session);

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}
结果

1、在表单输入数据

这里写图片描述

2、表单提交后,session接收响应

这里写图片描述

3、session支持跨请求
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值