情景:
如果我们想让自己的Email地址(也可以是其他的东西,这里由Email举例)展示在servlet生成的网页上,但是不希望是硬编码写到servlet中,那么这个时候该怎么办呢?
解决方法:
(servlet)初始化参数
在DD文件(web.xml)中进行配置
<servlet>
<servlet-name>yourServletName</servlet-name>
<servlet-class>ServletPath</servlet-class>
<init-param>
<param-name>myEmail</param-name>
<param-value>xxxxxx@xx.com</param-value>
</init-param>
</servlet>
servlet调用代码:
// 假设我们是直接输出
out.println(getServletConfig().getInitParameter("myEmail"));
以上是 使用 servlet 初始化参数
补充:
创建 servlet 时,一般都是继承 HttpServlet(web开发), HttpServlet继承了 GenericServlet,GenericServlet 实现了 servlet 和 servletconfig 接口
也就是说 servlet 继承了 getServletConfig() 方法 , 所以可以从 servlet 中的任何方法调用 getServletConfig() 得到 ServletConfig 的引用,有了引用就可以调用 getInitparameter()
ServletConfig 用于servlet 配置(而不是 JSPConfig),如果想让web应用的其他部分使用 在DD中置于 servlet 初始化参数的信息,那就需要另外一个解决方案
解决方法:
上下文初始化参数
<web-app>
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>myEmail</param-name>
<param-value>xxxxx@xx.com</param-value>
</context-param>
</web-app>
调用方法:
out.println( getServletContext().getIninParameter("myEmail"); )
注意:上下文初始化的参数对 web 应用中所有的 servlet 和 jsp 都可用
// 每个 servlet 有一个 ServletConfig
// 每个 Web应用 有一个 ServletContext
// servlet 得到 ServletContext 有两种方式:
getServletConfig().getServletContext().getInitarameter();
this.getServletContext().getInitParameter();