zoukankan      html  css  js  c++  java
  • 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");
  • 相关阅读:
    codeforces C. Fixing Typos 解题报告
    codeforces B. The Fibonacci Segment 解题报告
    codeforces B. Color the Fence 解题报告
    codeforces B. Petya and Staircases 解题报告
    codeforces A. Sereja and Bottles 解题报告
    codeforces B. Levko and Permutation 解题报告
    codeforces B.Fence 解题报告
    tmp
    API 设计 POSIX File API
    分布式跟踪的一个流行标准是OpenTracing API,该标准的一个流行实现是Jaeger项目。
  • 原文地址:https://www.cnblogs.com/bulrush/p/6601664.html
Copyright © 2011-2022 走看看