ServletConfig和ServletContext
ServletConfig和ServletContext
- Servlet初始化参数
在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为Servlet配置一些初始化参数
1 <servlet-name>ServletConfigDemo1</servlet-name> 2 <servlet-class>....</servlet-class> 3 .... 4 <init-param> 5 <param-name>charest</param-name> 6 <param-value>UTF-8</param-value> 7 </init-param> 8 .... 9 </servlet>
- 通过ServletConfig获取Servlet的初始化参数
要想获取Servlet的初始化参数,顾名思义,应该在初始化中得到 所以在init()中:
1 public void init(ServletConfig config) throws ServletException { 2 this.config = config; 3 }
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应用的初始化参数
1 <display-name></display-name> 2 <context-param> 3 <param-name>url</param-name> 4 <param-value>jdbc:mysql://localhost:3306/test</param-value> 5 </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());