ServletConfig接口介绍(servletconfig方法)

  本篇文章为你整理了ServletConfig接口介绍(servletconfig方法)的详细内容,包含有servlet 接口 servletconfig方法 servlet接口的方法有哪些 servlet接口的三个主要作用 ServletConfig接口介绍,希望能帮助你了解 ServletConfig接口介绍。

  前言:

   Servlet 容器初始化 Servlet 时,会为这个 Servlet 创建一个 ServletConfig 对象,并将 ServletConfig 对象作为参数传递给 Servlet 。通过 ServletConfig 对象即可获得当前 Servlet 的初始化参数信息。
一个 Web 应用中可以存在多个 ServletConfig 对象,一个 Servlet 只能对应一个 ServletConfig 对象,即 Servlet 的初始化参数仅对当前 Servlet 有效。

  
getInitParameterNames()

  返回 Servlet 所有的初始化参数名的枚举集合,如果该 Servlet 没有初始化参数,则返回一个空的集合。

  
(1)、配置 web.xml 文件

   使用标签初始化的参数是被应用程序中所有的servlet所共享。但是有时候我们需要为某一个特定的servlet配置参数,这个时候我们就需要使用servlet初始化参数。

   在web.xml文件中为当前web应用添加三个名为 admin-email、admin-name和admin-password 的ServletConText 初始化参数,在Select中获取这三个参数。

   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

   servlet-name Servlet /servlet-name

   servlet-class main.java.com.Servlet /servlet-class

   /servlet

   !-- 配置整个web应用的初始化参数 --

   context-param

   param-name admin-email /param-name

   param-value 123456@qq.com /param-value

   /context-param

   context-param

   param-name admin-name /param-name

   param-value xiaoxi /param-value

   /context-param

   context-param

   param-name admin-password /param-name

   param-value 123456 /param-value

   /context-param

   !-- 配置 Servlet 映射 --

   servlet-mapping

   servlet-name Servlet /servlet-name

   url-pattern /Servlet /url-pattern

   /servlet-mapping

   /web-app

 

  

  Servlet部分:

  使用ServletConfig 接口的 getServletConfig() 的方法 获取Config , 再通过getServletContext() 获取 ServletContext对象 最后通过getInitParameter(String name)方法,根据 配置的param-name名称返回 param-value

  

package main.java.com;

 

  import javax.servlet.*;

  import javax.servlet.http.*;

  import javax.servlet.annotation.*;

  import java.io.IOException;

  @WebServlet(name = "Servlet", value = "/Servlet")

  public class Servlet extends HttpServlet {

   @Override

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

   ServletConfig config = this.getServletConfig();

   ServletContext servletContext = config.getServletContext();

   String adminEmail = servletContext.getInitParameter("admin-email");//利用名字获取值

   String adminName = servletContext.getInitParameter("admin-name");//利用名字获取值

   String password = servletContext.getInitParameter("admin-password");//利用名字获取值

   response.getWriter().println("admin-email: " + adminEmail);

   response.getWriter().println("admin-name: " + adminName);

   response.getWriter().println("admin-password: " + password);

   @Override

   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

   doGet(request,response); // 使用doGet

  }

 

  最后的输结果是:

  当然了 xml 中可以 配置web 全局的 Servlet 初始化参数,也可以 使用 init-param 配置 当前 Servlet的初始化参数

  以下配置说明:

   init-param 元素是 servlet 的子元素,需要在 servlet 元素内使用,表示只对当前 Servlet 有效 。

   param-name 子元素表示参数的名称。

   param-value 子元素表示参数的值。

  

 servlet 

 

   servlet-name MyServlet /servlet-name

   servlet-class java.com.MyServlet /servlet-class

   !-- Servlet 初始化参数 --

   init-param

   param-name name /param-name

   param-value xiaoxi /param-value

   /init-param

   !-- Servlet 初始化参数 --

   init-param

   param-name admin /param-name

   param-value xiaoxi /param-value

   /init-param

   /servlet

 

  

  (2)、在 @WebServlet注释中 添加 @WebInitParam 注释 配置初始化参数

  

package main.java.com;

 

  import javax.servlet.*;

  import javax.servlet.http.*;

  import javax.servlet.annotation.*;

  import java.io.IOException;

  import java.io.PrintWriter;

  import java.util.Enumeration;

  @WebServlet(

   name = "helloServlet",

   value = "/helloServlet", //这里加上逗号

   initParams = { //添加一个 initParams 属性

   @WebInitParam( // 再使用 @WebInitParam 注解 携带 name和value 的属性和属性值 多个参数可以用逗号隔开 再次使用@WebInitParam注解

   name = "name",

   value = "测试"),

   @WebInitParam(

   name = "Admin",

   value = "123456")

  public class helloServlet extends HttpServlet {

   @Override

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

   response.setContentType("text/html;charset=UTF-8"); // 设置编码集为 utf-8

   PrintWriter writer = response.getWriter(); // 创建一个Writer流

   ServletConfig config = getServletConfig(); // 获取ServletConfig对象

   String servletName = config.getServletName();// 获取servletName

   Enumeration String initParameterNames = config.getInitParameterNames();// 返回 servlet 的初始化参数的名称的集合

   while (initParameterNames.hasMoreElements()) { // 遍历集合获取初始化参数名称

   String initParamName = initParameterNames.nextElement(); // 获取初始化参数名称

   String initParamValue = config.getInitParameter(initParamName); // 获取相应的初始参数的值

   writer.write(initParamName + " : " + initParamValue + " br/ // 向页面输出

   // 关闭流

   writer.close();

   @Override

   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

   doGet(request,response);

  }

 

  

  在浏览器中输入 地址 最后结果是:

  总结:

  使用xml 既可以全局配置 Servlet 的初始化参数 可以针对当前的Servlet 生效
 

  使用注解方式 只对当前的Servlet生效

  

  以上就是ServletConfig接口介绍(servletconfig方法)的详细内容,想要了解更多 ServletConfig接口介绍的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: