
ServletConfig和ServletContext
- Servlet初始化参数
在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为Servlet配置一些初始化参数
<servlet-name>ServletConfigDemo1</servlet-name>
<servlet-class>....</servlet-class>
....
<init-param>
<param-name>charest</param-name>
<param-value>UTF-8</param-value>
</init-param>
....
</servlet>
- 通过ServletConfig获取Servlet的初始化参数
要想获取Servlet的初始化参数,顾名思义,应该在初始化中得到 所以在init()中:
public void init(ServletConfig config) throws ServletException {
this.config = config;
}
Servlet对象中含有ServletConfig对象,可以通过this.getServletConfig()获得(servletConfig)
而获取初始化参数,只需要调用servletConfig.getInitParameter("charest")
- 多个Servlet之间通过ServletContext共享数据
由于ServletConfig维护了ServletContext的引用,可以用 this.getServletConfig().getServletContext()获取ServletContext对象(context)
也直接this.getServletContext() 数据传输过程定义在doGet()中.
servlet1传入数据: context.setAttribute()
servlet2获取数据: context.getAttribute()
当然也要在servlet1运行之后servlet1才能取得共享数据
- 获取WEB应用的初始化参数
<display-name></display-name>
<context-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/test</param-value>
</context-param>
通过ServletContext获取整个web网站的初始化参数
context.getInitParameter("url")
- ServletContext请求转发
RequestDispatcher rd = context.getRequestDispacher("/servlet/....");
rd.forward(request,response);
- ServletContext读取资源文件
使用ServletContext的getResourceAsStream()方法获取输入流对象
InputStream in = this.getServletContext().getResourceAsStream((String) uri);
然后将数据写进输入流
- 客户端缓存Servlet输出
在客户端进行合理的数据缓存,可以避免浏览器频繁的向服务器发送多余请求.
下面一段代码为将数据缓存到浏览器1天时间
String data = "reserved"; response.setDateHeader("expires",System.currentTimeMillis()+24 * 3600 * 1000); response.getOutputStream().write(data.getBytes());