• ServletConfig与ServletContext


    目录

    ServletConfig

    ServletConfig的介绍

    ServletConfig配置方式

    ServletConfig的常用方法

    ServletContext

    ServletContext的介绍

    ServletContext配置方式

    ServletContext常用方法


    • ServletConfig

    • ServletConfig的介绍

    • ServletConfig是Servlet的配置参数对象
    • 在Servlet的规范中,允许为每一个Servlet都提供一些初始化的配置
    • 所以,每个Servlet都有一个自己的ServletConfig
    • 作用:
    • 在Servlet初始化时,把一些配置信息传递给Servlet
    • 生命周期:和Servlet相同
    • ServletConfig配置方式

    • 在<servlet>标签中,通过<init-param>标签来配置;
    • 有两个子标签
    • 前面介绍也提到过,这些配置信息都是以键值对进行体现的
    • 所以这两子标签分别是:
    • <param-name>:代表初始化参数的key
    • <param-value>:代表初始化参数的value
      1. <?xml version="1.0" encoding="UTF-8"?>
      2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
      3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
      5. version="4.0">
      6. <servlet>
      7. <servlet-name>cpc</servlet-name>
      8. <servlet-class>com.example.servletdemo1.HelloServlet</servlet-class>
      9. <init-param>
      10. <param-name>tjrac</param-name>
      11. <param-value>2021tj</param-value>
      12. </init-param>
      13. <init-param>
      14. <param-name>hdu</param-name>
      15. <param-value>2022tj</param-value>
      16. </init-param>
      17. </servlet>
      18. <servlet-mapping>
      19. <servlet-name>cpc</servlet-name>
      20. <url-pattern>/cpc/*</url-pattern>
      21. </servlet-mapping>
      22. </web-app>
    • ServletConfig的常用方法

    • 常用方法
    • getInitParameter(String name)
    • 根据参数名称获取参数的值
    • 返回值:String
    • getInitParameterNames()
    • 获取所有参数名称的枚举
    • 返回值:Enumeration<String>
    • getServletName()
    • 获取Servlet的名称
    • 返回值:String
    • getServletContext()
    • 获取ServletContext对象
    • 返回值:ServletContext
    • 使用示例
    • 第一步:声明ServletConfig
    • 第二步:通过重写init方法,来对ServletConfig对象进行赋值
    • 第三步:演示ServletConfig常用方法
      1. package com.example.servletdemo1;
      2. import java.io.*;
      3. import java.util.Enumeration;
      4. import javax.servlet.ServletConfig;
      5. import javax.servlet.ServletContext;
      6. import javax.servlet.http.HttpServlet;
      7. import javax.servlet.ServletException;
      8. import javax.servlet.http.HttpServletRequest;
      9. import javax.servlet.http.HttpServletResponse;
      10. public class HelloServlet extends HttpServlet {
      11. private ServletConfig config;
      12. public void init(ServletConfig config) throws ServletException {
      13. this.config = config;
      14. }
      15. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      16. //根据key获取value
      17. String hduvalue = config.getInitParameter("hdu");
      18. System.out.println(hduvalue);
      19. //获取所有的key
      20. Enumeration<String> keys= config.getInitParameterNames();
      21. while(keys.hasMoreElements()){
      22. //获取每一个key
      23. String key= keys.nextElement();
      24. //根据key获取value
      25. String value = config.getInitParameter(key);
      26. System.out.println(key+","+value);
      27. }
      28. //获取Servlet的名称
      29. String servletName = config.getServletName();
      30. System.out.println(servletName);
      31. //获取ServletContext对象
      32. ServletContext servletContext = config.getServletContext();
      33. System.out.println(servletContext);
      34. }
      35. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      36. doGet(request, response);
      37. }
      38. }
    • ServletContext

    • ServletContext的介绍

    • 域对象
    • 域对象指的是对象有作用域
    • 也就是有作用范围
    • 域对象可以实现数据的共享
    • 不同作用范围的域对象,共享数据的能力也不一样
    • 在Servlet规范中,一共有4个域对象
    • ServletContext就是其中的一个
    • 它也是web应用中最大的作用域,也叫application域
    • 它可以实现整个应用之间的数据共享
    • ServletContext
    • ServletContext是应用上下文对象(应用域对象)
    • 每一个应用中只有一个ServletContext对象
    • 并不是服务于某一Servlet
    • 作用:
    • 可以配置和获得应用的全局初始化参数,可以实现Servlet之间的数据共享
    • 生命周期:应用一加载则创建,应用被停止则销毁
    • ServletContext配置方式

    • <web-app>就是配置文件中的根标签
    • 在<web-app>标签中,通过<context-param>标签来配置
    • 有两个子标签
    • <param-name>:代表全局初始化参数的key
    • <param-value>:代表全局初始化参数的value
      1. <?xml version="1.0" encoding="UTF-8"?>
      2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
      3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
      5. version="4.0">
      6. <servlet>
      7. <servlet-name>cpc</servlet-name>
      8. <servlet-class>com.example.servletdemo1.HelloServlet</servlet-class>
      9. <init-param>
      10. <param-name>tjrac</param-name>
      11. <param-value>2021tj</param-value>
      12. </init-param>
      13. <init-param>
      14. <param-name>hdu</param-name>
      15. <param-value>2022tj</param-value>
      16. </init-param>
      17. </servlet>
      18. <servlet-mapping>
      19. <servlet-name>cpc</servlet-name>
      20. <url-pattern>/cpc/*</url-pattern>
      21. </servlet-mapping>
      22. <context-param>
      23. <param-name>globalhdu</param-name>
      24. <param-value>global2022tj</param-value>
      25. </context-param>
      26. <context-param>
      27. <param-name>globaltjrac</param-name>
      28. <param-value>global2021tj</param-value>
      29. </context-param>
      30. </web-app>
    • ServletContext常用方法

    • 常用方法
    • getInitParameter(String name)
    • 根据名称获取全局配置的参数
    • 返回值:String
    • getContextPath()
    • 获取当前应用的访问虚拟目录
    • 返回值:String
    • getRealPath(String path)
    • 根据虚拟目录来获取应用部署的磁盘绝对路径
    • 返回值:String
    • 使用示例
    • 第一步:获取ServletContext对象
    • 第二步:常用方法演示
      1. package com.example.servletdemo1;
      2. import java.io.*;
      3. import javax.servlet.ServletContext;
      4. import javax.servlet.http.HttpServlet;
      5. import javax.servlet.ServletException;
      6. import javax.servlet.http.HttpServletRequest;
      7. import javax.servlet.http.HttpServletResponse;
      8. public class HelloServlet extends HttpServlet {
      9. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      10. //1.获取ServletContext对象
      11. ServletContext context = getServletContext();
      12. //2.常用方法演示
      13. //获取全局配置参数
      14. String value = context.getInitParameter("globalhdu");
      15. System.out.println(value);
      16. //获取应用的虚拟目录
      17. String contextPath = context.getContextPath();
      18. System.out.println(contextPath);
      19. //根据虚拟目录获取绝对路径
      20. String realPath = context.getRealPath("/");
      21. System.out.println(realPath);
      22. String realPath1 = context.getRealPath("WEB-INF");
      23. System.out.println(realPath1);
      24. }
      25. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      26. doGet(request, response);
      27. }
      28. }
    • 常用方法2
    • setAttribute(String name, Object value)
    • 向应用域对象中存储数据
    • 返回值:void
    • getAttribute(String name)
    • 通过名称获取应用域对象中的数据
    • 返回值:Object
    • removeAttribute(String name)
    • 通过名称移除应用域对象中的数据
    • 返回值:void
    • 使用示例2
    • 在ServletContext里设置共享数据
    • 在ServletConfig里获取共享数据
    • 配置:
      1. <?xml version="1.0" encoding="UTF-8"?>
      2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
      3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
      5. version="4.0">
      6. <servlet>
      7. <servlet-name>cpc</servlet-name>
      8. <servlet-class>com.example.servletdemo1.HelloServlet</servlet-class>
      9. <init-param>
      10. <param-name>tjrac</param-name>
      11. <param-value>2021tj</param-value>
      12. </init-param>
      13. <init-param>
      14. <param-name>hdu</param-name>
      15. <param-value>2022tj</param-value>
      16. </init-param>
      17. </servlet>
      18. <servlet-mapping>
      19. <servlet-name>cpc</servlet-name>
      20. <url-pattern>/cpc/*</url-pattern>
      21. </servlet-mapping>
      22. <servlet>
      23. <servlet-name>cpcc</servlet-name>
      24. <servlet-class>com.example.servletdemo1.config</servlet-class>
      25. </servlet>
      26. <servlet-mapping>
      27. <servlet-name>cpcc</servlet-name>
      28. <url-pattern>/cpcc</url-pattern>
      29. </servlet-mapping>
      30. <context-param>
      31. <param-name>globalhdu</param-name>
      32. <param-value>global2022tj</param-value>
      33. </context-param>
      34. <context-param>
      35. <param-name>globaltjrac</param-name>
      36. <param-value>global2021tj</param-value>
      37. </context-param>
      38. </web-app>
    • 使用:
      1. public class HelloServlet extends HttpServlet {
      2. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      3. ServletContext context = getServletContext();
      4. context.setAttribute("love","daan");
      5. }
      6. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      7. doGet(request, response);
      8. }
      9. }
      1. public class config extends HttpServlet {
      2. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      3. ServletContext context = getServletContext();
      4. Object love = context.getAttribute("love");
      5. System.out.println(love);
      6. }
      7. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      8. doGet(request, response);
      9. }
      10. }
    • 启动服务器后,分别使用完成测试
    • http://localhost:8080/demo2/cpc
    • http://localhost:8080/demo2/cpcc
  • 相关阅读:
    高数_第3章_重积分_习题
    2023年中国奶牛平均单产量、奶类产量及发展趋势分析:液态奶市场向高端化发展[图]
    加固平板电脑在无人机的应用|亿道三防onerugged
    SaaSBase:容智(iBot)RPA是什么?
    JavaScript相关概念
    薪资缩水?职场新形势?看看boss直聘上人们是怎么吐槽的!
    npm i 依赖下载失败
    Facebook广告被暂停是什么原因?Facebook广告账号被封怎么办?
    面向对象设计模式——命令模式
    Linux基本使用和web程序部署
  • 原文地址:https://blog.csdn.net/weixin_59624686/article/details/125456078