一、servlet的初始化参数
初始化参数是在DD文件(web.xml)中的一对映射:
<servlet>
<servlet-name>InnerServletName1</servlet-name>
<servlet-class>practice.myServlet1</servlet-class>
<init-param>
<param-name>param1</param-name>
<param-value>abcdef</param-value>
</init-param>
</servlet>
而且放在哪一个servlet标签中就只能这个servlet使用。
在servlet的方法中可以用
getInitParameter("param1")
来获取这一个参数值。
其初始化过程是:在建立servlet类时先读取DD文件,并且配置到servletConfig中,形成了多个键值对。
上面的一行实际上是:
getServletConfig().getInitParameter("param1")
因为是写在配置中的,servletconfig对此servlet有效。
还有一种是
getServletContext().getInitParameter("param2")
这种方法从servlet的上下文获取初始化参数:
<servlet>
<servlet-name>InnerServletName1</servlet-name>
<servlet-class>practice.myServlet1</servlet-class>
<init-param>
<param-name>param1</param-name>
<param-value>abcdef</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>InnerServletName1</servlet-name>
<url-pattern>/handle1.do</url-pattern>
</servlet-mapping>
<context-param>
<param-name>param2</param-name>
<param-value>xyz</param-value>
</context-param>
可以看到context-param是和servlet同级的,也就是说可以被全部servlet访问到。
那么在servlet中为context设置的属性:
getServletContext().setAttribute("six","666");
在jsp中如何调用呢?
一般来说是:
getServletConfig().getServletContext().getAttribute("six")
二、上下文监听器
监听器是一个实现ServletContextListener的类
一般需要覆盖init和destory两种方法。
而且在使用前需要在DD文件中先放入监听器标记
<listener> <listener-class>Listeners.myContextListener</listener-class> </listener>
监听器的作用就是当设置了context参数时、撤销了context参数时,给予一些动作,比如修改,格式化等等。