• Servlet 第一天


    package com.servlet;
    import java.io.IOException;
    
    import javax.servlet.Servlet;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    
    public class HelloServlet implements Servlet{
    
        public void destroy() {
            System.out.println("destroy");
        }
    
        public ServletConfig getServletConfig() {
            System.out.println("getServletConfig");
            return null;
        }
    
        public String getServletInfo() {
            System.out.println("getServletInfo");
            return null;
        }
    
        public void init(ServletConfig arg0) throws ServletException {
            System.out.println("init");
        }
    
        public void service(ServletRequest arg0, ServletResponse arg1)
                throws ServletException, IOException {
            System.out.println("service");
        }
        
        public HelloServlet() {
            System.out.println("构造器先调用");
        }
    
    }

    先调用构造器,然后调用init方法,初始化。然后调用service方法。每请求一次调用一次。然后关闭服务器的时候调用destroy

     ServletConfig: 封装了 Serlvet 的配置信息, 并且可以获取 ServletContext 对象

    1). 配置 Serlvet 的初始化参数

        <servlet>
            <servlet-name>helloServlet</servlet-name>
            <servlet-class>com.atguigu.javaweb.HelloServlet</servlet-class>
            
            <!-- 配置 Serlvet 的初始化参数。 且节点必须在 load-on-startup 节点的前面 -->
            <init-param>
                <!-- 参数名 -->
                <param-name>user</param-name>
                <!-- 参数值 -->
                <param-value>root</param-value>
            </init-param>
            
            <init-param>
                <param-name>ha</param-name>
                <param-value>123456</param-value>
            </init-param>
            
            <load-on-startup>-1</load-on-startup>
            
        </servlet>

    2). 获取初始化参数:

        > getInitParameter(String name): 获取指定参数名的初始化参数
        > getInitParameterNames(): 获取参数名组成的 Enumeration 对象.
        
        String user = servletConfig.getInitParameter("user"); //这是参数名  
        System.out.println("user: " + user); 

      输出参数值


        Enumeration<String> names = servletConfig.getInitParameterNames();
        while(names.hasMoreElements()){
            String name = names.nextElement();

            System.out.println("name的值---》"+name);
            String value = servletConfig.getInitParameter(name);
            System.out.println("^^" + value + ": " + value);
        }

    ServletContext:

        1). 可以由  SerlvetConfig 获取:

        ServletContext servletContext = servletConfig.getServletContext();


        2). 该对象代表当前 WEB 应用: 可以认为 SerlvetContext 是当前 WEB 应用的一个大管家. 可以从中获取到当前 WEB 应用的各个方面的信息.

          ①. 获取当前 WEB 应用的初始化参数

          设置初始化参数: 可以为所有的 Servlet 所获取, 而 Servlet 的初始化参数只用那个 Serlvet 可以获取.

          <!-- 配置当前 WEB 应用的初始化参数 -->
          <context-param>
              <param-name>driver</param-name>
              <param-value>com.mysql.jdbc.Driver</param-value>
          </context-param>

          方法:

          getInitParameter
          getInitParameterNames    

          代码:

         

     ServletContext servletContext = servletConfig.getServletContext();
            
          String driver = servletContext.getInitParameter("driver");
    System.out.println("driver:" + driver);
    
    Enumeration<String> names2 = servletContext.getInitParameterNames();
    while(names2.hasMoreElements()){
        String name = names2.nextElement();
        System.out.println("-->" + name);
    }

    ②. 获取当前 WEB 应用的某一个文件在服务器上的绝对路径, 而不是部署前的路径

    getRealPath(String path);

    String realPath = servletContext.getRealPath("/note.txt");
    System.out.println(realPath);

    ③. 获取当前 WEB 应用的名称:

    getContextPath()

    String contextPath = servletContext.getContextPath();
    System.out.println(contextPath); 

    ④. 获取当前 WEB 应用的某一个文件对应的输入流.

    getResourceAsStream(String path): path 的 / 为当前 WEB 应用的根目录.

    InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
  • 相关阅读:
    【Swift】UILabel 设置内边距
    Swift泛型定义 同时限定T的类(class)和多协议(protocol)
    Flutter如何引用第三方库并使用
    Swift
    【iOS】Swift4.0 GCD的使用笔记
    swift中数据之间的转换
    Python之路【第五篇】:面向对象及相关
    rabbitmq pika connection closed
    python
    rabbitMQ实战(一)---------使用pika库实现hello world
  • 原文地址:https://www.cnblogs.com/bulrush/p/6601664.html
Copyright © 2020-2023  润新知