• Web开发:Web开发中的域概念整理与解读


    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


    前言

    本文介绍Java Web开发中域的概念,及Web开发中常见的四种域相关知识点

    一、Java Web中的域

    概念

    在Java中,域通常指的是作用域,在类中体现的是,一个类变量的作用域,通常指的是包裹其的括号内部;而在Java Web开发中,所谈及的域,一般指的是域对象,指服务器的内置对象,通常体现在这个内置对象停留和作用时间

    常见的四种域

    Java web中常见的四种域对象如下,

    • page,PageContext对象
    • request : HttpServletRequest对象
    • session : HttpSession对象
    • application : ServletContext对象

    他们的生命周期依次如下
    生命周期就是指对象的创建到销毁的期间

    • page: jsp 页面被执行,生命周期开始,jsp 页面执行完毕 ,生命周期结束
    • request : 用户发送一个请求,开始,服务器返回响应,请求结束,生命周期结束
    • session : 用户打开浏览器访问,创建session(开始),session超时或被声明失效,该对象生命周期结束
    • application: web应用加载的时候创建(开始), web应用被移除或服务器关闭,对象销毁(结束)

    他们的生命周期作用范围从小到大依次为 page(jsp有效)

    域的作用范围

    Web中的域对象,更多指的是存储对象的作用时间
    域对象内部是Map集合的实现 Map

    class PageContext {
        private Map attributes = new HashMap();
        private HttpSession session;
    
        public void setAttribute(String name, Object value) {
        attributes.put(name, value);
        }
    
        public Object getAttribute(String name) {
            attributes.get(name);
        }
    
        public void removeAttribute(String name) {
            attributes.remove(name);
            }
        } 
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    二、四种域应用的具体场景

    原则: 四个域对象在选择的时候,能用范围小的绝不用范围大的

    1.Page

    数据只是暂时存在集合,在jsp页面的其他地方要用,用page(页面中自定义的map)

    什么时候需要用map了,就用page

    2.Request

    数据只是做显示的,看完了就没用了,就存request域

    请求转发, Servlet 产生的处理结果(数据) 交给jsp显示

    3.Session

    数据给用户看完了,一会还要用,会话结束了就没用了

    用户登陆,用户信息发给客户端看,看完了,一会访问别的页面还要看用户信息

    购物车,购物成功了,给用户看购物车,待会随时可以查看购物车

    请求重定向,因为是两次请求,第一次请求的数据,第二次请求还要看

    4.application

    数据给一个用户用完了,别人还要用

    聊天室,聊天记录,需要给所有的用户看

    统计网站在线人数,所有人看到的应该是一个数

    总结:

    • 域主要体现在Controller返回视图的同时,能够提供一个数据管理的范围,能够在本视图或者在一定范围内,对这个数据进行访问
    • 需要定义Map不如用page,请求转发Servlet带给jsp的数据存request
    • 请求重定向带过去的数据存Session,全局的数据存application
  • 相关阅读:
    运维监控Grafana部署
    vim使用教程图文教程(零基础超详细)
    如何使用jest
    力扣(LeetCode)11. 盛最多水的容器(C++)
    1044 Shopping in Mars(二分)
    139.深度学习分布式计算框架-2
    HTML+CSS+JS网页表白代码大全(浪漫的html表白源代码)
    SQLite3交叉编译
    数位统计DP
    拒绝for循环,从take_along_axis开始
  • 原文地址:https://blog.csdn.net/qjyws/article/details/127501204