• Servlet学习笔记2


    一、ServletConfig

    ServletConfig类是servlet程序的配置信息类

    a)ServletConfig类的三大作用

    Servlet程序和ServletConfig对象都是由Tomcat负责创建提供,我们负责使用

    Servlet程序默认是第一次访问的时候创建,ServletConfig是每个Servlet程序创建时,就创建一个对应的ServletConfig对象。

    1、可以获取Serlvet程序的别名 servlet-name的值

    2、获取初始化参数init-param【属于每个servlet自己】

    3、获取SerlvetContext对象

    1. @Override
    2. public void init(ServletConfig servletConfig) throws ServletException {
    3. System.out.println("2 初始化方法");
    4. //1、可以获取Serlvet程序的别名 servlet-name的值
    5. System.out.println("HelloServlet程序的别名是:" + servletConfig.getServletName());
    6. //2、获取初始化参数init-param
    7. System.out.println("初始化参数username的值:" + servletConfig.getInitParameter("username"));
    8. System.out.println("初始化参数url的值:" + servletConfig.getInitParameter("url"));
    9. //3、获取SerlvetContext对象
    10. System.out.println(servletConfig.getServletContext());
    11. }

    【子类重写init方法时,要super一下父类GenericServlet,避免接收不到tomcat提供的ServletConfig对象】

    二、ServletContext

    a)什么是ServletContext?

    1、ServletContext是一个接口,表示servlet上下文对象

    2、一个web工程只有一个ServletContext对象实例

    3、ServletContext对象是一个域对象

    4、ServletContext对象是在web工程部署启动的时候创建,在web工程停止的时候销毁

    【域对象】

    域对象是可以向像Map一样存取数据的对象,叫域对象。

    这里的域指的是存取数据的操作范围,为整个web工程

    存储据 setAttribute()   取数据getAttribute()   删除数据removeAttribute()

    b)ServletContext的作用

    1、获取web.xml中配置的上下文参数context-param【属于整个web工程 所有人都可以获取到】

    2、获取当前的工程路径

    3、获取工程部署后在服务器磁盘上的绝对路径

    4、像Map一样存取数据

    1. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    2. //1、获取web.xml中配置的上下文参数context-param
    3. ServletContext servletContext = getServletConfig().getServletContext();
    4. String username = servletContext.getInitParameter("username");
    5. System.out.println("username的参数是:" + username);
    6. String password = servletContext.getInitParameter("password");
    7. System.out.println("password的参数是:" + password);
    8. //2、获取当前的工程路径
    9. String contextPath = servletContext.getContextPath();
    10. System.out.println("当前工程路径:" + contextPath);
    11. //3、获取工程部署后在服务器磁盘上的绝对路径
    12. //用 /工程名 替代了项目在服务器硬盘上的绝对路径
    13. // / 斜杠被服务器解析地址为 http://ip:port/工程名/ 映射到IDEA代码编译后的文件路径下out目录里
    14. // 也就是realPath: E:\java_study\Study_Code\web03_servlet\out\artifacts\web03_servlet_war_exploded
    15. // "/"已经到了web工程目录下
    16. System.out.println("工程的绝对路径是:" + servletContext.getRealPath("/"));
    17. System.out.println("工程下css目录的绝对路径是:" + servletContext.getRealPath("/css"));
    18. }

    输出结果:

    1. username的参数是:context
    2. password的参数是:root
    3. 当前工程路径:/web03_servlet
    4. 工程的绝对路径是:E:\java_study\Study_Code\web03_servlet\out\artifacts\web03_servlet_war_exploded\
    5. 工程下css目录的绝对路径是:E:\java_study\Study_Code\web03_servlet\out\artifacts\web03_servlet_war_exploded\css

    Using CATALINA_BASE:   "C:\Users\hhhhxy\AppData\Local\JetBrains\IntelliJIdea2021.3\tomcat\3dcf7132-dc2a-4c03-8ccf-5e2ef6d64714"

    该路径为IDEA整合Tomcat之后,Tomcat被拷贝的一些副本内容,IDEA同样在拷贝后的Tomcat的conf\Catalina\localhost中建立一个xml文件,配置了你的本地工程代码路径

    1. @Override
    2. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    3. //获取getServletContext对象
    4. ServletContext context = getServletContext();
    5. context.setAttribute("key1", "val1");
    6. System.out.println("context中key1的值是:"+context.getAttribute("key1"));
    7. }

    输出结果:

    context中key1的值是:val1

  • 相关阅读:
    高阶python | 装饰器
    Magnet: Push-based Shuffle Service for Large-scale Data Processing
    微软数据库的SQL注入漏洞解析——Microsoft Access、SQLServer与SQL注入防御
    web前端大作业:诗人文化网页主题网站【唐代诗人】纯HTML+CSS制作
    IT从业者的冥想入门指南(精简版)
    python --处理xml(ElementTree模块)
    ElasticSearch面试
    boost之字符串--lexical_cast
    VideoMAE
    基于单目相机的2D测量(工件尺寸和物体尺寸)
  • 原文地址:https://blog.csdn.net/hhhxykeke/article/details/126769033