JavaEE中关于ServletConfig的小结
在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。
示例代码如下:
package com.yyz.servletconfig;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletConfigDemo1 extends HttpServlet {
ServletConfig config;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取指定的初始化参数
String value = config.getInitParameter("xxx");
response.getOutputStream().write(value.getBytes());
//获取所有的初始化参数
Enumeration e = cofig.getInitParameterNames();
while(e.hasMoreElements()){
String name = (String) e.nextElement();
value = config.getInitParameter(name);
response.getOutputStream().write((name+"="+value+"<br/>").getBytes());
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
@Override
public void init(ServletConfig config) throws ServletException {
this.config = config;
}
}
相应的web.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>ServletConfigDemo1</servlet-name>
<servlet-class>com.yyz.servletconfig.ServletConfigDemo1</servlet-class>
<init-param>
<param-name>xxx</param-name>
<param-value>yyy</param-value>
</init-param>
<init-param>
<param-name>name</param-name>
<param-value>yyz</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>yyy</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ServletConfigDemo1</servlet-name>
<url-pattern>/servlet/ServletConfigDemo1</url-pattern>
</servlet-mapping>
</web-app>
测试结果如下:

在上面的代码中,ServletConfigDemo1对象中有一个ServletConfig对象,其实这是不必要的。因为ServletConfigDemo1继承了HttpServlet,HttpServlet又继承了GenericServlet 。GenericServlet 已经在内部维护了一个ServletConfig对象。相关实现如下:
public abstract class GenericServlet
implements Servlet, ServletConfig, java.io.Serializable
{
… …
private transient ServletConfig config;
public ServletConfig getServletConfig() {
return config;
}
}
因而我们可以通过我们写的Servlet对象的getServletConfig()方法直接拿到ServletConfig对象,示例代码如下:
package com.yyz.servletconfig;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletConfigDemo2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String value = this.getServletConfig().getInitParameter("name");
System.out.println(value);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>ServletConfigDemo2</servlet-name>
<servlet-class>com.yyz.servletconfig.ServletConfigDemo2</servlet-class>
<init-param>
<param-name>name</param-name>
<param-value>yyz</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ServletConfigDemo2</servlet-name>
<url-pattern>/servlet/ServletConfigDemo2</url-pattern>
</servlet-mapping>
</web-app>
相关文章
SpringBoot中@ConfigurationProperties注解的使用与源码详解
这篇文章主要介绍了SpringBoot中@ConfigurationProperties注解的使用与源码详解,@ConfigurationProperties注解用于自动配置绑定,可以将application.properties配置中的值注入到bean对象上,需要的朋友可以参考下2023-11-11
Java Fluent Mybatis 分页查询与sql日志输出详解流程篇
Java中常用的ORM框架主要是mybatis, hibernate, JPA等框架。国内又以Mybatis用的多,基于mybatis上的增强框架,又有mybatis plus和TK mybatis等。今天我们介绍一个新的mybatis增强框架 fluent mybatis关于分页查询、sql日志输出流程2021-10-10
SpringBoot基于Redis实现token的在线续期的实践
本文主要介绍了使用Redis实现JWT令牌在线续期的方案,通过在线续期token,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2024-12-12
JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版整理
JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成2014-01-01


最新评论