本主要讲述javaWeb项目的作用域

作用域有:page【前端】,request【请求】,session【会话】,application【项目】

主要介绍request,session和application作用域

一. request作用域

  以请求转发为例【浏览器 -> RequestServlet1 -> RequestServlet2】,说明request作用域

  RequestServlet1的声明如下

@WebServlet("/requestServlet1")
public class RequestServlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 接收前端传过来的参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println("RequestServlet1收到 " + "name: " + username + " " + "password: " + password);
        // 将请求转发给RequestServlet2
        // 请求转发时,得到路径之后,要转发给路径下的servlet2
        req.getRequestDispatcher("/requestServlet2").forward(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }
}

  RequestServlet2的声明如下

@WebServlet("/requestServlet2")
public class RequestServlet2 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 接收requestServlet1传过来的参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println("RequestServlet2收到 " + "name: " + username + " " + "password: " + password);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }
}

  由于请求转发,是同一个请求,因此可以共享数据

  tomcat日志,运行结果如下

RequestServlet1收到 name: 郑威 password: zw123
RequestServlet2收到 name: 郑威 password: zw123

  但是对于不同的请求,数据是不能共享的。

二. Session作用域

  参考这篇博客:(230条消息) session的使用和作用域_众犇的博客-CSDN博客

  Session在网络中被称为会话。由于HTTP协议是一种无状态的协议,也就是当一个客户端发送请求,服务器端收到请求,并返回响应后,该连接就结束了,而服务器不保存任何相关的信息。为了弥补这一缺点,HTTP协议提供了session。通过session可以在应用程序的web页面间进行跳转时,保存用户的状态,使得整个用户会话一直存在下去,直到浏览器关闭。

  1. session范围
  在一次会话范围内容有效
  2. session方法

vip

  3. session的生命周期
  session的生命周期包括三个阶段:创建、活动、销毁
  创建:
  当客户端第一次访问某个jsp或者servlet的时候,服务器会为当前会话创建一个SessionId,每次客户端向服务器发送请求时,都会将此sessionId携带过去,服务端会对此sessionId进行校验。
  活动:
  某次会话当中通过超链接打开的新页面属于同义词会话。
  只要当前页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同一次会话。本次会话的所有页面都关闭后再重新访问某个Jsp或者Servlet将会创建新的会话。

  注意事项:注意原有会话还存在,只是这个旧的SessionID任然存在服务端,只不过再也没有客户端会携带它然后交予服务端校验。
  销毁:
  Session的销毁只有三种方式:
  1.调用了session.invalidate()方法
  2.session过期(超时)
  3.服务器重新启动

  Tomcat默认session超时时间为30分钟。

三. Application作用域

作用于整个web项目