程序员社区

【Servlet-1】ServletConfig接口

  1. javax.servlet.ServleConfig是个接口

  2. Apache Tomcat服务器实现了Servlet规范,Tomcat服务器专门写了一个ServletConfig接口的实现类

  3. javaweb程序员一直面向接口去调用,不需要去关心具体的实现类,只需要去学习ServletConfig接口中有哪些接口可以使用

  4. Tomcat服务器就是一个实现了Servlet规范和JSP规范的容器

  5. ServletConfig到底是什么?
    ServletConfig是一个Servlet对象的配置信息对象,ServletConfig对象中封装了一个Servlet对选哪个的配置信息,Servlet对象的配置信息在web.xml文件中,一个Servlet 对象对应一个ServletConfig对象

  6. 如何将init方法上的ServletConfig参数移动到service方法中,因为在service方法中可能需要ServletConfig?
    在init方法汇总完成:将局部变量servletConfig赋值给实例变量config
    实现getServletConfig方法,提供公开的get方法是供子类使用

  7. ServletConfig接口中有哪些常用的方法?
    通过初始化参数的name获取value:String getInitParameter(String name)
    获取所有初始化参数的name:Enumeration getInitParameterNames()
    获取servlet-name:String get ServletName()
    获取ServletContext对象:ServletContext getServletContext()

html文件

<html>

<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<a href="/24_Servlet/testLifeCycle">测试Servlet对象的生命周期</a>
</body>
</html>

web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>a</servlet-name>
        <servlet-class>ServletConfig.AServlet</servlet-class>
        <init-param>
            <param-name>url</param-name>
            <param-value>jdbc:mysql://localhost:3366/bjpowernode</param-value>
        </init-param>
        <init-param>
            <param-name>user</param-name>
            <param-value>root</param-value>
        </init-param>
        <init-param>
            <param-name>password</param-name>
            <param-value>123</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>a</servlet-name>
        <url-pattern>/a</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>b</servlet-name>
        <servlet-class>ServletConfig.BServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>b</servlet-name>
        <url-pattern>/b</url-pattern>
    </servlet-mapping>
</web-app>
package ServletConfig;

import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

public class AServlet implements Servlet {
    //实例变量
    private ServletConfig config;
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("AServlet="+servletConfig.toString());
        //将局部变量servletConfig赋值给实例变量config
        //目的:在service方法中可以使用config对象
        this.config=servletConfig;
    }

    //这个方法供子类使用,在子类中想获取ServletConfig,可以调用这个方法
    @Override
    public ServletConfig getServletConfig() {
        return config;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        //获取ServletConfig
        ServletConfig config = getServletConfig();
        servletResponse.setContentType("text/html;charset=UTF-8");
        PrintWriter out = servletResponse.getWriter();
        //通过初始化参数的name获取value
        /*
        String driver = config.getInitParameter("driver");
        String url = config.getInitParameter("url");
        String user = config.getInitParameter("user");
        String password = config.getInitParameter("password");
         out.print(driver);
         out.print("<br>");
         out.print(url);
         out.print("<br>");
         out.print(user);
         out.print("<br>");
         out.print(password);
         */

        /*
        //获取所有初始化参数
        Enumeration<String> names = config.getInitParameterNames();
        while(names.hasMoreElements()){
            String name = names.nextElement();
            String value = config.getInitParameter(name);
            out.print(name+"="+value);
            out.print("<br>");
        }
        */
         String servletName = config.getServletName();
         out.print("<servlet-name>"+servletName+"<servlet-name>");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

赞(0) 打赏
未经允许不得转载:IDEA激活码 » 【Servlet-1】ServletConfig接口

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区