【Servlet】保存作用域

一、引入

原始情况下,保存作用域我们可以认为有四个:page(页面级别),request(一次请求响应范围),session(一次会话范围),application(整个应用程序范围)

page目前已经不用了,除非我们学的是之前老的jsp技术。


二、request:一次请求响应范围

image-20240402155812527

Demo01Servlet.java

@WebServlet("/demo01")
public class Demo01Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.向request保存作用域保存数据
        request.setAttribute("uname", "lili");
        // 2.客户端重定向
        response.sendRedirect("demo02"); // demo2不可以获取到

        // 3.服务器转发
        request.getRequestDispatcher("demo02").forward(request, response); // demo2可以获取到
    }
}

Demo02Servlet.java

@WebServlet("/demo02")
public class Demo02Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.获取request保存作用域保存的数据,key为name
        Object unameObj = request.getAttribute("uname");
        System.out.println(unameObj);
    }
}

二、session:一次会话范围内有效

image-20240402155803507

Demo03Servlet.java

@WebServlet("/demo03")
public class Demo03Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.向session保存作用域保存数据
        request.getSession().setAttribute("uname", "lili");
        // 2.客户端重定向
        response.sendRedirect("demo04"); // demo3可以获取到

        // 3.服务器转发
        request.getRequestDispatcher("demo04").forward(request, response); // demo3也可以获取到
    }
}

Demo04Servlet.java

@WebServlet("/demo04")
public class Demo04Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.获取request保存作用域保存的数据,key为name
        Object unameObj = request.getSession().getAttribute("uname");
        System.out.println(unameObj);
    }
}

三、application:一次应用范围内有效

除非tomcat停止掉,tomcat一停止,这个应用程序就结束了。

Demo05Servlet.java

@WebServlet("/demo05")
public class Demo05Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.向application保存作用域保存数据。
        // ServletContext叫servlet上下文。正常情况下,不严谨的情况来讲,当前的web程序可以称之为servlet程序,因为它里面有大量的控制器组件叫servlet,表示这一次的tomcat启动了,上下文开始了,tomcat停止,上下文就结束了
        ServletContext application = request.getServletContext();
        application.setAttribute("uname", "lili");
        // 2.客户端重定向
        response.sendRedirect("demo06"); // demo2不可以获取到

        // 3.服务器转发
        request.getRequestDispatcher("demo06").forward(request, response); // demo6可以获取到
    }
}

Demo06Servlet.java

@WebServlet("/demo06")
public class Demo02Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.获取request保存作用域保存的数据,key为name
        Object unameObj = request.getServletContext.getAttribute("uname");
        System.out.println(unameObj);
    }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值