Java中的域对象

什么是域对象?   

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

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

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 {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 向request域中添加数据
        List<String> 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 {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 移除域中的互数据
        req.removeAttribute("gender");
        // 从request域中读取数据
        List<String> list =(List<String>) 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 {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 向Session域中添加数据
        HttpSession session = req.getSession();
        List<String> 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 {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session = req.getSession();
        // 移除域中的互数据
        //session.removeAttribute("gender");
        // 从request域中读取数据
        List<String> list =(List<String>) 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 {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 向Application域中添加数据
        ServletContext application = req.getServletContext();
        List<String> 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 {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletContext application = this.getServletContext();
        // 从application域中读取数据
        List<String> list =(List<String>) application.getAttribute("list");
        System.out.println(list);
        System.out.println(application.getAttribute("gender"));
        System.out.println(application.getAttribute("name"));
    }
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值