Servlet 设置初始化参数
Servlet 的初始化,两个 init 方法,如果想在初始化时做一些准备工作,可以重写 init 方法
-
无参 init()
-
public void init(){ }
-
-
带参 init( ServletConfig config )
-
public void init( ServletConfig config){ this.config = config; init(); }
-
配置文件 web.xml 中设置初始化参数
在 web.xml 配置文件中进行 servlet 配置时,添加 init-param 设置键值对类型的初始化参数,通过 param-name 可以获取 param-value
-
设置参数
-
<servlet> <servlet-name>Demo01Servlet</servlet-name> <servlet-class>com.atguigu.servlet.Demo01Servlet</servlet-class> <init-param> <param-name>hello</param-name> <param-value>world</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Demo01Servlet</servlet-name> <url-pattern>/demo01</url-pattern> </servlet-mapping>
-
-
在 init() 方法初始化时,从配置文件中获取参数,getServletConfig() 得到 ServletConfig 对象,再调用方法
-
public class Demo01Servlet extends HttpServlet { @Override public void init() throws ServletException { ServletConfig config = getServletConfig(); String initValue = config.getInitParameter("hello"); System.out.println("initValue = " + initValue); } }
-
使用注解的方式设置初始化参数
在 @WebServlet 的注解中不仅可以设置服务器映射,也可以设置初始化参数值
-
在 @WebServlet 中设置 url 和 initParam
-
@WebServlet(urlPatterns = {"/demo02"} , initParams = { @WebInitParam(name = "hello", value = "world"), @WebInitParam(name = "uname", value = "ashen") } ) public class Demo01Servlet extends HttpServlet { @Override public void init() throws ServletException { ServletConfig config = getServletConfig(); String initValue = config.getInitParameter("uname"); System.out.println("initValue = " + initValue); } }
-
配置文件 web.xml 中设置获取上下文 context
在配置文件中配置所有 Servlet 公用的 context-param
-
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
-
在初始化 init 方法中获取上下文参数的值
-
getServletContext() 方法得到 ServletContext 对象,通过该对象调用 .getInitParameter() 方法传入 name 获取 value
-
public class Demo01Servlet extends HttpServlet { @Override public void init() throws ServletException { ServletContext servletContext = getServletContext(); String context = servletContext.getInitParameter("contextConfigLocation"); System.out.println("context :" +context); } }
-
-
上下文参数 context-param 除了在初始化中获取,也可以在 service 服务过程中获取
-
先通过 request 对象获取 session 再通过 session 调用 getServletContext() 方法
-
@Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext servletContext = req.getSession().getServletContext(); servletContext.getInitParameter("contextConfigLocation"); }
-