Servlet容器初始化Servlet时,会为这个Servlet创建一个ServletConfig对象,并将ServletConfig对象作为参数传递给Servlet。通过ServletConfig对象即可获得当前Servlet的初始化参数信息。
一个Web应用中可以存在多个ServletConfig对象,一个Servlet只能对应一个ServletConfig对象,即Servlet的初始化参数仅对当前Servlet有效。
获得ServletConfig对象
获得ServletConfig对象一般有2种方式:
直接从带参的init()方法中提取
@WebServlet(urlPatterns = '/myHttpServlet', initParams = {
@WebInitParam(name = 'hello', value = 'Hello MyHttpServlet!', description = 'init参数1')})
public class MyHttpServlet extends HttpServlet {
private ServletConfig servletConfig;
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取初始化参数
String hello = this.servletConfig.getInitParameter('hello');
PrintWriter writer = resp.getWriter();
writer.write(hello);
writer.close();
}
@Override
public void init(ServletConfig config) throws ServletException {
//从带参init方法中,提取ServletConfig对象
this.servletConfig = config;
}
}
调用GenericServlet提供的getServletConfig()方法获得
@WebServlet(urlPatterns = '/myHttpServlet', initParams = {
@WebInitParam(name = 'hello', value = 'Hello MyHttpServlet!', description = 'init参数1')})
public class MyHttpServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//调用 GenericServlet 提供的 getServletConfig() 方法
ServletConfig servletConfig = this.getServletConfig();
PrintWriter writer = resp.getWriter();
writer.write(servletConfig.getInitParameter('hello'));
writer.close();
}
}
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初始化参数
项目中引入的依赖
javax.servlet
javax.servlet-api
3.1.0
通过ServletConfig对象读取Servlet的初始化参数。//采用注解形式
文章为作者独立观点,不代表观点
james2023-02-15
昨天星期大盘小幅高开之后全天震荡分化,沪指小幅反弹,创业板指小幅下跌。收盘沪指涨0.28%,深成指跌0.15%,创业板指跌0.31%。北向资金全天净买入99亿元,其中沪股通净买入87亿元,深股通净卖出88亿元。股票跌多涨少,两市超2400只股票下跌。沪深两市成交额9140亿。王小涛2022-10-13
美国鬼子手里也没有美元,没有美元它就没法收购全世界优质资产,为了收回市场上的美元,他只能疯狂加息推销美债,可是大家都害怕它会变成老赖,宁愿买股票也没人买它的美债,它也不敢乱印美元了,因为上半年狂印几万亿美元,已经把它的通胀推高到失控的边缘了,他也不敢打海湾国家,因为那会把石油价格搞到300美元以上,所以欧佩克组织近期强硬得很。美鬼这次遇到了无解的难题了,曾经的救世英雄中国,也已经不再鸟他了。