Servlet-ServletConfig
- 为Servlet提供初始配置参数的一种对象,每个Servlet都有自己独立唯一的ServletConfig对象
- 容器会为每个Servlet实例化一个ServletConfig对象,并通过init方法传入给Servlet作为属性
Tomcat在初始化Servlet时,将ServletConfig也转换成其对象
1 2 3 4 5 6 7 8
| public abstract class GenericServlet implements Servlet, ServletConfig, Serializable { private transient ServletConfig config; public void init(ServletConfig config) throws ServletException { this.config = config; this.init(); } }
|
配置初始参数
在web.xml文件中可使用init-param标签配置一些初始参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" version="6.0"> <servlet> <servlet-name>ServletConfig</servlet-name> <servlet-class>com.xiaobai.servlet.ServletConfig</servlet-class> <init-param> <param-name>keyA</param-name> <param-value>valueA</param-value>·2 </init-param> <init-param> <param-name>keyB</param-name> <param-value>valueB</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>ServletConfig</servlet-name> <url-pattern>/ServletConfig</url-pattern> </servlet-mapping> </web-app>
|
配置初始参数-注解配置
同样的,我们也可以使用注解的方式来配置初始参数,但这里我们使用了一种类似与注解嵌套的方式来配置多个键值对
1 2 3 4 5 6 7 8 9 10 11
| public @interface WebServlet { WebInitParam[] initParams() default {}; }
public @interface WebInitParam { String name();
String value();
String description() default ""; }
|
1 2 3 4 5 6 7 8 9 10
| @WebServlet( value = "/ServletConfig", initParams = { @WebInitParam(name="keyA",value = "ValueA"), @WebInitParam(name="keyB",value = "ValueB") } ) public class ServletConfigTest extends HttpServlet { }
|
获取初始参数
ServletConfig的方法
- getInitParameter(“keyA”):根据key获取value
- getInitParameterNames():返回Enumeration<>类型的对象,此对象中有所有的初始参数的key
Enumeration<>的方法
- hasMoreElements():判断有没有下一个参数,如果有返回true,没有则返回false、
- nextElement():取出当前元素,向下移动游标
所以,我们可以在Servlet中获取初始参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class ServletConfigTest extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletConfig servletconfig = getServletConfig(); String keyA = servletconfig.getInitParameter("keyA"); System.out.println("KeyA: " + keyA);
Enumeration<String> initParameterNames = servletconfig.getInitParameterNames(); while (initParameterNames.hasMoreElements()) { System.out.println(initParameterNames.nextElement() + " :" + servletconfig.getInitParameter(initParameterNames.nextElement())); } } }
|