当前位置: 首页 > news >正文

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

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

文章目录

  • 前言
  • 一、Java Web中的域
    • 概念
    • 常见的四种域
    • 域的作用范围
  • 二、四种域应用的具体场景
    • 1.Page
    • 2.Request
    • 3.Session
    • 4.application


前言

本文介绍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有效)<request(一次请求) <session(一次会话)< application(当前web应用)

域的作用范围

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

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.Page

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

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

2.Request

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

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

3.Session

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

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

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

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

4.application

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

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

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

总结:

  • 域主要体现在Controller返回视图的同时,能够提供一个数据管理的范围,能够在本视图或者在一定范围内,对这个数据进行访问
  • 需要定义Map不如用page,请求转发Servlet带给jsp的数据存request
  • 请求重定向带过去的数据存Session,全局的数据存application

相关文章:

  • html制作一个酷炫的记事本(源码)
  • Java项目:超市管理系统(java+SSM+JSP+LayUI+jQ+Mysql)
  • MATLAB 2--结构化程式与自定义函数
  • Go学习笔记 -- 并发原理
  • 【MindSpore产品】【数据处理功能】加入数据增强之后,报出卷积输入类型不同的问题
  • 基于Nexus搭建docker镜像源仓库
  • Estimating High-Dimensional Directed Acyclic Graphs with the PC-Algorithm
  • Linux文件查找find
  • Vue--》Vue中实现数据代理
  • 深度学习入门(十) 模型选择、过拟合和欠拟合
  • RK3399驱动开发 | 12 - AP6255 SDIO WiFi 调试(基于linux4.4.194内核)
  • 牛客网-《刷C语言百题》第二期
  • 测试开发需要掌握哪些技能?
  • 巴什博弈——范围拿物品问题
  • 【Mybatisplus】初识Mybatisplus+SpringBoot整合
  • 【编程碎笔】-Java中关于next(),nextInt(),nextLine()的深度解剖
  • 2023年荆州市高新技术企业申报条件以及奖励补贴政策(附申报时间)汇总!
  • macOS Ventura 正式版你确定不更新,好用到爆的功能你不想尝试一下?
  • 云存储架构框架设计 | 最佳实践
  • 阿里巴巴面试题- - -多线程并发篇(三十)