ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaWeb作用域

2022-06-13 00:00:24  阅读:166  来源: 互联网

标签:JavaWeb ServletException 作用域 resp req 保存 servletA 级别


JavaWeb作用域

综述

javaweb有四个不同级别的作用域,分别是page页面级别、一次请求级别、一次会话级别、整个web级别。page没有进行实现

请求级别

只对一次request有效,结束请求时保存的数据就会消失

示例代码

servletA

@Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 在servletA中保存一个值到request中,在servletB中读取
        req.setAttribute("item_a", "这是Servlet A保存的值");
        resp.sendRedirect("/JavaWebDemo_war_exploded/request/b");
    }

servletB

@Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 从reqquest中获取servletA存的值
        System.out.println("读取到的servlet a 保存的值是:" + req.getAttribute("item_a"));
    }

测试

首先访问servletA,写入值。在访问servletB读取值。结果如下:

image-20220612232615239

表明,在前一个servlet中写入的数据到另一个servle中就会消失

会话级别

保存的数据可以持续一个会话,即第一次调用request.getSession()开始到session过期为止。

测试代码

@Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 在servletA中保存一个值到Session中,在另一个Servlet中读取
        req.getSession().setAttribute("item_a", "这是Servlet A保存的值");
        resp.sendRedirect("/JavaWebDemo_war_exploded/scope/session/b");
    }
@Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 从session中获取a存的值
        System.out.println("读取到的servlet a 保存的值是:" + req.getSession().getAttribute("item_a"));
    }

测试

首先访问servletA写入数据,再访问servletB读取数据

image-20220612233618734

成功读取到对应值,再使用其他浏览器或工具访问b,如下图

image-20220612233740162

第一行是eage访问结果,第二行使用ApiPost访问结果,表明session级别存储的数据是针对浏览器的

web级别

web级别的数据会保存在web服务器中,在写入之后,只有在服务器关闭才会消失

测试代码

@Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 在servletA中保存一个值到ServletContext中,在另一个Servlet中读取
        ServletContext application = req.getServletContext();
        application.setAttribute("item_a", "这是Servlet A保存的值");
        resp.sendRedirect("/JavaWebDemo_war_exploded/scope/web/b");
    }
@Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 从ServletContext中获取a存的值
        ServletContext application = req.getServletContext();
        System.out.println("读取到的servlet a 保存的值是:" + application.getAttribute("item_a"));
    }

结果

image-20220612234911936

上面为网页访问servlet获取到的,下面为apipost访问获取到的,均有值。

标签:JavaWeb,ServletException,作用域,resp,req,保存,servletA,级别
来源: https://www.cnblogs.com/mrystar/p/16369336.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有