首页 > 代码库 > Servlet 第一天

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 = http://www.mamicode.com/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");

 

Servlet 第一天