Java中的域对象
创始人
2024-02-18 19:34:31
0

什么是域对象?   

那些能放数据并存储传递数据作为数据存放区域的对象

能够存储数据,获取数据,传递数据的对象

Servlet三大域对象

  • Request域                HTTPServletRequest          一次请求/请求转发
  • Session域                 HTTPSession                       一次会话(跨请求)
  • Application域          ServletContext                    任意一次请求和会话(跨会话)

setAttribute(name,value); 设置修改数据
getAttribute(name);获得数据的方法
removeAttribute(name);移除数据的方法

JSP四大域对象

  • Page域
  • Request域
  • Session域
  • Application域

1.Request域

有范围  :  一次请求内有效,请求转发时数据可以传递,除此之外该域没有办法实现数据共享

生命周期  :  创建 每发生一次请求创建一个独立的请求域

使用service方法中或者请求转发有效

销毁 请求结束,已经向浏览器响应数据

测试代码

向request域中放入数据

package com.msb.testRequest;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/*** @Author: Ma HaiYang* @Description: MircoMessage:Mark_7001*/
@WebServlet(urlPatterns = "/addToRequest.do")
public class Servlet1 extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 向request域中添加数据List x=new ArrayList<>();Collections.addAll(x, "a","b","c");req.setAttribute("list", x);req.setAttribute("gender","boy");req.setAttribute("gender","girl");req.setAttribute("name","晓明");// 请求转发req.getRequestDispatcher("/readFromRequest.do").forward(req,resp);// 重定向//resp.sendRedirect("readFromRequest.do");}
}

request域中读取数据

package com.msb.testRequest;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/*** @Author: Ma HaiYang* @Description: MircoMessage:Mark_7001*/
@WebServlet(urlPatterns="/readFromRequest.do")
public class Servlet2 extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 移除域中的互数据req.removeAttribute("gender");// 从request域中读取数据List list =(List) req.getAttribute("list");System.out.println(list);System.out.println(req.getAttribute("gender"));System.out.println(req.getAttribute("name"));//获取Request中的请求参数System.out.println(req.getParameter("username"));System.out.println(req.getParameter("password"));}
}

2.Session域

有效范围 : 单次会话内有效,可以跨多个请求

生命周期 :   创建 会话的产生,第一次发生请求,会话的开始

使用 本次会话之内,浏览器和服务器之间发生多次请求和响应有效

销毁 会话结束,如:浏览器失去JSESSIONID、到达最大不活动时间、手动清除

测试代码

Session域中放入数据

package com.msb.testSession;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/*** @Author: Ma HaiYang* @Description: MircoMessage:Mark_7001*/
@WebServlet(urlPatterns = "/addToSession.do")
public class Servlet1 extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 向Session域中添加数据HttpSession session = req.getSession();List x=new ArrayList<>();Collections.addAll(x, "a","b","c");session.setAttribute("list", x);session.setAttribute("gender","boy");session.setAttribute("gender","girl");session.setAttribute("name","晓明");// 重定向resp.sendRedirect("readFromSession.do");}
}

从Session域中读取数据

package com.msb.testSession;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;
/*** @Author: Ma HaiYang* @Description: MircoMessage:Mark_7001*/
@WebServlet(urlPatterns="/readFromSession.do")
public class Servlet2 extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {HttpSession session = req.getSession();// 移除域中的互数据//session.removeAttribute("gender");// 从request域中读取数据List list =(List) session.getAttribute("list");System.out.println(list);System.out.println(session.getAttribute("gender"));System.out.println(session.getAttribute("name"));//获取Request中的请求参数System.out.println(req.getParameter("username"));System.out.println(req.getParameter("password"));}
}

3.Application域

有效范围 :  当前web服务内,跨请求,跨会话

生命周期 : 创建 项目启动 ,使用 项目运行任何时间有效

销毁 项目关闭

测试代码

Application域中放入数据


import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/*** @Author: Ma HaiYang* @Description: MircoMessage:Mark_7001*/
@WebServlet(urlPatterns = "/addToApplication.do")
public class Servlet1 extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 向Application域中添加数据ServletContext application = req.getServletContext();List x=new ArrayList<>();Collections.addAll(x, "a","b","c");application.setAttribute("list", x);application.setAttribute("gender","girl");application.setAttribute("name","晓明");}
}

Application域中读取数据

package com.msb.testApplication;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;
/*** @Author: Ma HaiYang* @Description: MircoMessage:Mark_7001*/
@WebServlet(urlPatterns="/readFromApplication.do")
public class Servlet2 extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext application = this.getServletContext();// 从application域中读取数据List list =(List) application.getAttribute("list");System.out.println(list);System.out.println(application.getAttribute("gender"));System.out.println(application.getAttribute("name"));}
}

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...