首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

servlet学习札记_ServletContext

2012-10-30 
servlet学习笔记_ServletContext1 Web应用共享数据区ServletContext接口ServletContext接口表示一个web应

servlet学习笔记_ServletContext
1 Web应用共享数据区ServletContext接口

ServletContext接口表示一个web应用的上下文。可以想象成一个web一个能用的共享数据区域,该区域保存整个web共享数据。

1.1 Servlet容器何时创建ServeltContext接口实现类

当一个web应用启动的时候,就会创建该ServletContext接口的实现类。我们可以在根据需求,读写ServletContext这个web共享区的数据,那么如何获得ServletContext这个实例呢?下面提供了两种方法

1.2 如何获得ServletContext接口实例

方法1:
可以通过ServletConfig接口的getServletContext()方法获得
方法2:
通过GenericServlet抽象类的getServletContext()方法获得,不过这个方法其实也是调用了ServletConfig的getServletContext()方法
在GenericServlet.java中

   public ServletConfig getServletConfig() {    return config;    }    public ServletContext getServletContext() {    return getServletConfig().getServletContext();    }
1.3 一个计数器实例
package servletcontext;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletContext;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CounterServlet extends HttpServlet{public void doGet(HttpServletRequest request, HttpServletResponse response){try{response.setCharacterEncoding("gb2312");//获取ServletContext接口的实现类ServletContext sc = super.getServletContext();Integer count = (Integer) sc.getAttribute("count");if(null == count){count = new Integer(1);}else{count = new Integer(count.intValue()+1);}sc.setAttribute("count", count);PrintWriter out = response.getWriter();out.print("<body>");out.print("你登录的次数是:"+count.intValue());out.print("</body>");out.close();} catch (IOException e){e.printStackTrace();}}public void doPost(HttpServletRequest request, HttpServletResponse response){doGet(request,response);}}

?

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">    <servlet>  <servlet-name>CountServlet</servlet-name>  <servlet-class>servletcontext.CounterServlet</servlet-class>  </servlet>    <servlet-mapping>  <servlet-name>CountServlet</servlet-name>  <url-pattern>/count</url-pattern>  </servlet-mapping>  </web-app>
?

?

1 楼 脑袋雷劈的 2009-02-18   resp.setContentType("text/html;utf-8");写这句,有时候不起作用。
resp.setCharacterEncoding("UTF-8");写这句才管用。

查了一下:对于发送数据,服务器按照response.setCharacterEncoding—contentType—pageEncoding的优先顺序,对要发送的数据进行编码。

热点排行