Servlet的四大作用域:Page,Request,Session,Application。主要是用来存放共享数据!

一、 Page作用域

对应的作用域访问对象为pageContext对象。

作用范围:当前整个jsp页面。

生命周期:当对JSP的请求时开始,当响应结束时销毁。

package com.ape.view;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet("/Demo1Servlet")
public class Demo1Servlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//处理乱码request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");//获取资源PrintWriter out = response.getWriter();out.print("页面1");// page域(当前页面使用)String name1="张无忌";out.print(name1);out.close();}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

输出结果为:

当我们在页面2输出name1时,发现直接报错输出不了的,证明只在当前页面起作用。

二、Request作用域

对应的作用域访问对象为request对象。

作用范围:request表示一个请求,只要发出一个请求就会创建一个request,它作用于整个请求链(转发并不会终止此请求链)。

生命周期:当浏览器发送请求到后台时创建,当请求结束,request被销毁。

package com.ape.view;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet("/Demo1Servlet")
public class Demo1Servlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//处理乱码request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");//获取资源PrintWriter out = response.getWriter();out.print("页面1");//request域(在同一个请求中使用,需要转发)String name2="周芷若";request.setAttribute("name2", name2);out.print(request.getAttribute("name2"));//转发
//      request.getRequestDispatcher("Demo2Servlet").forward(request, response);out.close();}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

当不转发时,拿到的页面1和页面2的结果如下:

当做了转发后,地址栏并未改变,但是页面2就拿到了值:

三、Session作用域

对应的作用域访问对象为session对象。

作用范围:在当前浏览器进行数据共享,一次会话。

生命周期:在浏览器启动时会创建,当浏览器关闭时被销毁,存在无操作默认销毁时间。

package com.ape.view;import java.io.IOException;
import java.io.PrintWriter;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;@WebServlet("/Demo1Servlet")
public class Demo1Servlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//处理乱码request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");//获取资源PrintWriter out = response.getWriter();HttpSession session = request.getSession();out.print("页面1");//session域(在同一个会话中)String name3="赵敏";session.setAttribute("name3", name3);out.print(session.getAttribute("name3"));out.close();}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}
package com.ape.view;import java.io.IOException;
import java.io.PrintWriter;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;@WebServlet("/Demo2Servlet")
public class Demo2Servlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//处理乱码request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");//获取资源PrintWriter out = response.getWriter();HttpSession session = request.getSession();out.print("页面2");//session域(在同一个会话中)out.print(session.getAttribute("name3"));out.close();}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

输出结果为:

四、Application作用域

对应的作用域访问对象为application对象。

作用范围:整个web项目。

生命周期:在启动Web项目时创建,代表整个web项目,是其中最大的作用域,当服务关闭或时项目停止时被销毁。

package com.ape.view;import java.io.IOException;
import java.io.PrintWriter;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;@WebServlet("/Demo1Servlet")
public class Demo1Servlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//处理乱码request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");//获取资源PrintWriter out = response.getWriter();ServletContext sc = getServletContext();out.print("页面1");//application域(整个应用中,服务器重启)String name4="殷离";sc.setAttribute("name4", name4);out.print(sc.getAttribute("name4"));out.close();}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}
package com.ape.view;import java.io.IOException;
import java.io.PrintWriter;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;@WebServlet("/Demo2Servlet")
public class Demo2Servlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//处理乱码request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");//获取资源PrintWriter out = response.getWriter();ServletContext sc = getServletContext();out.print("页面2");//application域(整个应用中,服务器重启)out.print(sc.getAttribute("name4"));out.close();}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

输出结果为:

 四个作用域的区别:

Application > Session > Request > Page

 小结:

浅析Servlet中的四大作用域相关推荐

  1. java的四大作用域_JSP中的四大作用域

    什么是作用域? 我们在写代码的时候,都会遇到变量的作用域的问题:比如这是一个局部变量,出了它的作用域就无法访问了.对于作用域的概念,最简单的理解就是: 在你的地盘,你还算根葱:出了你的地盘,你啥也不是 ...

  2. Java Web(五) JSP详解(四大作用域九大内置对象等)

    前面讲解了Servlet,了解了Servlet的继承结构,生命周期等,并且在其中的ServletConfig和ServletContext对象有了一些比较详细的了解,但是我们会发现在Servlet中编 ...

  3. JSP四大作用域(9大内置对象)

    更多免费教学文章请关注这里 1.什么是JSP? JSP本质上就是一个servlet,因为servlet输出html太麻烦了,所以就有了JSP,JSP就是专门用来书写html的,当然其中也能写java代 ...

  4. jsp是在html中添加什么作用域,JSP九个内置对象 四大作用域 动作指令

    九个内置对象: 1.application:javax.servlet.ServletContext的实例,代表JSP所属的web应用本身,常用的方法有getAttribute(). 2.config ...

  5. 【Servlet】总结 JSP的四大域对象、Servlet的四个作用域:pageContext、request、session、application

    JSP的四大域对象:pageContext.request.session.application 这四个域对象,都提供了一对相同的方法: 设置一个属性: setAttribute("属性名 ...

  6. JSP九大内置对象和四大作用域和Servlet的三大作用域对象

    一.JSP九大内置对象:内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用 内置对象特点: 由JSP规范提供,不用编写者实例化. 通过Web容器实现和管理 所有 ...

  7. JSP中四大作用域详解

    在学习时读到一篇好文章,分享给大家~~ 转自https://www.cnblogs.com/WindSun/p/10209534.html 四大作用域 为了在页面.请求.和用户之间传递和共享数据,JS ...

  8. JSP中四大作用域和九大内置对象

    文章目录 九大内置对象 一.out对象 二.request对象 三.response对象 四.config对象 五.session对象 六.application对象 七.page对象 八.pageC ...

  9. Servlet四大作用域

    Servlet四大作用域 Appliccation(ServletContext) 生命周期 在启动Web项目时创建,代表整个web项目,是其中最大的作用域,当服务关闭或时项目停止时被销毁 作用域范围 ...

  10. Servlet的四大作用域

    一.application(ServletContext) 1.生命周期:当Web应用被加载进容器时创建代表整个web应用的application对象,当服务器关闭或Web应用被移除时,applica ...

最新文章

  1. 数学建模入门例题python_[Python与数学建模-入门使用]-2Python基础知识
  2. ECCV18 Oral | MIT谷歌视频运动放大让计算机辅助人眼“明察秋毫”
  3. python 内部函数传参_python中函数传参详解
  4. poj 1087 A Plug for UNIX 【最大流】
  5. 孙叫兽进阶之路之如何进行情绪管理
  6. springboot(四)——@EnableConfigurationProperties是如何起作用的你知道吗
  7. pads9.5 (PCB design)
  8. mysql 连接 110 超时_Nginx和mysql上行超时超时(110:连接超时)
  9. 用java写一个单例类_Java 写一个单例模式(Singleton)出来
  10. 水题 Codeforces Round #304 (Div. 2) A. Soldier and Bananas
  11. mysql 字段加减_Mysql数据清洗—Null值的处理技巧
  12. 结构化数据与非结构化数据理解
  13. 庆贺:上传资源时已支持不允许动态调分
  14. 数学建模竞赛题目 学校食堂就餐问题
  15. RS485无线通讯模块工作原理详解
  16. 手把手教你写CSS行内样式与内联样式
  17. WPS Excel快捷键
  18. waitpid status参数介绍
  19. matlab检验相关性显著性检验,显著性检验matlab.ppt
  20. 程序化广告(5):广告投放

热门文章

  1. 3-9 G: LZY的时间转化
  2. 基于深度学习的单目视觉深度估计研究综述
  3. EXCEL单元格内怎么换行?Alt+Enter
  4. 域名whois查询违规吗_WHOIS域ID隐私保护如何工作? 我需要域名WHOIS隐私吗?
  5. 【进程管理器】PM2应用进程管理器
  6. 设计logo原来这么简单
  7. java 图片实现毛玻璃_iOS毛玻璃效果的实现及图片模糊效果的三种方法
  8. 上海电力学院计算机组成与结构试卷,数据结构
  9. win7时间同步出错
  10. 第一章概述-------第一节--1.7 计算机网络体系结构