Java教程

9.15JavaWeb之ServletConfig接口

本文主要是介绍9.15JavaWeb之ServletConfig接口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

9.15JavaWeb之ServletConfig接口

什么是ServletConfig对象

概念:

  • 容器初始化Servlet时为Servlet创建一个ServletConfig对象,将 ServletConfig 对象作为参数传递给 Servlet 。

作用:

  • 通过 ServletConfig 对象即可获得当前 Servlet 的初始化参数信息。

特点:

  • 一个Web容器可以存在多个ServletConfig对象

  • 一个Servlet只能对应一个ServletConfig对象

获取ServletConfig对象

  • 直接从带参的init()方法中提取

  • 调用GenericServlet提供的getServletConfig()方法获取


从带参的init()方法中获取

示例代码:

package ServletPractice;
​
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
​
/**
 * 继承httpServlet抽象类,获取init方法里面的参数
 * @since JDk 1.8
 * @date 2021/09/15
 * @author Lucifer
 */
public class MyServletDemoNo8 extends HttpServlet {
    //Get方法
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        //设置响应字符集
        response.setContentType("text/html;charset=UTF-8");
        //打印结果
        PrintWriter writer = response.getWriter();
        writer.write("HelloNo8");
        writer.close();
    }
​
    //Post方法
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        doGet(request, response);
    }
​
    //初始化方法
    public void init(ServletConfig config) throws ServletException {
        //从带参的init方法中提取ServletConfig对象
        this.getServletConfig(); //因为HttpServlet继承了抽象类GenericServlet,get方法再GenericServlet当中,所以可以调用
    }
}
调用GenericServlet提供的getServletConfig方法
ServletConfig servletConfig = this.getServletConfig();

ServletConfig接口

javax.servlet 包提供了一个 ServletConfig 接口,该接口中提供了以下方法:

返回值类型方法功能描述
String getInitParameter(String name) 根据初始化参数名 name,返回对应的初始化参数值。
Enumeration<String> getInitParameterNames() 返回 Servlet 所有的初始化参数名的枚举集合,如果该 Servlet 没有初始化参数,则返回一个空的集合。
ServletContext getServletContext() 返回一个代表当前 Web 应用的 ServletContext 对象。
String getServletName() 返回 Servlet 的名字,即 web.xml 中 <servlet-name> 元素的值。

配置Servlet初始化参数

  • 使用web.xml配置初始化参数

  • 使用@WebServlet配置初始化参数


使用web.xml配置初始化参数

实现方法:

  • 新增了一个子元素:

    • <init-param>

      • <param-name>

      • <param-value>

示例xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    id="WebApp_ID" metadata-complete="false" version="4.0">
    <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>net.biancheng.www.MyServlet</servlet-class>
        <!-- Servlet 初始化参数 -->
        <init-param>
            <param-name>name</param-name>
            <param-value>JunkingBoy</param-value>
        </init-param>
        <!-- Servlet 初始化参数 -->
        <init-param>
            <param-name>URL</param-name>
            <param-value>www.JunkingBoy.com</param-value>
        </init-param>
    </servlet>
</web-app>
使用@WebServlet配置初始化参数

特点:

  • initParams是一个属性,相当于一个列表

  • @WebInitParam相当于一个键值对--->key、value的形式

示例代码:

package ServletPractice;
​
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
​
/**
 * 使用@WebServlet注释+参数实现配置初始化参数的目的
 * @since JDK 1.8
 * @date 2021/09/15
 * @author Lucifer
 */
@WebServlet(urlPatterns = "/MyServlet", initParams = {
        @WebInitParam(name = "Name", value = "JunkingBoy"),
        @WebInitParam(name = "URL", value = "www.JunkingBoy.com")
})
public class MyServletDemoNo9 extends HttpServlet {
    //设置一个常量--->标记该容器的UID
    private static final long serialVersionUID = 1L;
​
    //Get方法
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置响应字符集
        response.setContentType("text/html;charset=UTF-8");
        //打印内容到控制台
        PrintWriter writer = response.getWriter();
        writer.write("HelloNo9");
        writer.close();
    }
​
    //Post方法
    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        doGet(request, response);
    }
}

获取Servlet初始化参数示例

结合前面提到的知识内容全部一次性过一遍:

package ServletPractice;
​
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
​
/**
 * 结合前面的Servlet获取Config对象和获取对象信息的知识
 * @since JDK 1.8
 * @date 2021/09/15
 * @author Lucifer
 */
@WebServlet(urlPatterns = "/MyServletNo10", initParams = {
        @WebInitParam(name = "Name", value = "Jun"),
        @WebInitParam(name = "URL", value = "www.JunkingBoy.com")
})
public class MyServletDemoNo10 extends HttpServlet {
    //Get方法
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置响应字符集
        response.setContentType("text/html;charset=UTF-8");
        //打印内容
        PrintWriter writer = response.getWriter();
        writer.write("HelloNo10");
​
        //开始获取ServletConfig对象
        ServletConfig config = getServletConfig();
        //获取ServletName
        String name = getServletName();
        //返回 servlet 的初始化参数的名称的集合--->使用HttpServlet提供的方法
        Enumeration<String> initParameterName = config.getInitParameterNames();
        //遍历集合获取初始化参数名称--->调用Enumeration接口下提供的方法
        while (initParameterName.hasMoreElements()){
            //获取初始化参数名称
            String initParamName = initParameterName.nextElement();
            //获取相应的初始参数的值
            String initParamValue = config.getInitParameter(initParamName);
            //向页面输出
            writer.write(initParamName + "  :  " + initParamValue + "<br/>");
        }
        //关闭流
        writer.close();
    }
    /*
    1、掌握这些类当中的方法
    2、正确使用这些接口提供的方法来获取到相应的值
    获取到的是注释当中配置的信息
    通过注释的方法使用Servlet类去打印出注释的内容
     */
}

 

这篇关于9.15JavaWeb之ServletConfig接口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!