Petstore_home(注一)/src/apps/petstore/src/docroot/WEB-INF/web.xml,
我们可以看到:
<!-- Encoding Filter Declaration Start -->
<filter> //1.第一个Fliter
<filter-name>EncodingFilter</filter-name>
<display-name>EncodingFilter</display-name>
<description>no description</description>
<filter-class>com.sun.j2ee.blueprints.encodingfilter.web.EncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<!-- Encoding Filter Declaration End -->
<!-- Signon Filter Declaration Start -->
<filter> //2.第二个Filter
<filter-name>SignOnFilter</filter-name>
<display-name>SignOnFilter</display-name>
<description>no description</description>
<filter-class>com.sun.j2ee.blueprints.signon.web.SignOnFilter</filter-class>
</filter>
<!-- Signon Filter Declaration End -->
<!-- Encoding Filter Mapping Start-->
<filter-mapping> //第一个Filter对应
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Encoding Filter Mapping End -->
<!-- Signon Filter Mapping Start-->
<filter-mapping> //第二个Filter对应
<filter-name>SignOnFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Signon Filter Mapping End -->
<!-- ComponentManager Listener -->
<listener> //3.第一个Listerner
<listener-class>com.sun.j2ee.blueprints.petstore.controller.web.PetstoreComponentManager</listener-class>
</listener>
<!-- SignOn Attribute Listener -->
<listener> //4.第二个Listerner
<listener-class>com.sun.j2ee.blueprints.petstore.controller.web.SignOnNotifier</listener-class>
</listener>
<!-- Encoding Filter Declaration Start -->
<filter>
<filter-name>EncodingFilter</filter-name>
<display-name>EncodingFilter</display-name>
<description>no description</description>
<filter-class>com.sun.j2ee.blueprints.encodingfilter.web.EncodingFilter
</filter-class>
<init-param> //设定编码方式参数
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
EncodingFilter.java
public class EncodingFilter implements Filter {
private FilterConfig config = null;
// default to ASCII
private String targetEncoding = "ASCII";
//初始化时读取参数
public void init(FilterConfig config) throws ServletException {
this.config = config;
this.targetEncoding = config.getInitParameter("encoding");
}
public void destroy() {
config = null;
targetEncoding = null;
}
//将编码方式参数存入reqeust,结束此Filter
public void doFilter(ServletRequest srequest, ServletResponse sresponse,
FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)srequest;
request.setCharacterEncoding(targetEncoding);
// move on to the next
chain.doFilter(srequest,sresponse);
}
}
Petstore_home/src/waf/src/controller/com/sun/j2ee/blueprints/waf/controller/web
public void sessionCreated(HttpSessionEvent se) {
HttpSession session = se.getSession();
//产生服务连结容器
sl = ServiceLocator.getInstance();
//将本Listener存入Session
session.setAttribute(WebKeys.COMPONENT_MANAGER, this);
}
public class ServiceLocator {
private InitialContext ic;
private Map cache; //used to hold references to EJBHomes/JMS Resources for
//re-use
private static ServiceLocator me;
//初次宣告此对象时会执行初始化动作
static {
try {
me = new ServiceLocator();
} catch(ServiceLocatorException se) {
System.err.println(se);
se.printStackTrace(System.err);
}
}
//建构子,产生JNDI连结及同步化HashMap容器
private ServiceLocator() throws ServiceLocatorException {
try {
ic = new InitialContext();
cache = Collections.synchronizedMap(new HashMap());
} catch (NamingException ne) {
throw new ServiceLocatorException(ne);
} catch (Exception e) {
throw new ServiceLocatorException(e);
}
}
//将本对象参考传出
static public ServiceLocator getInstance() {
return me;
}
以下略过…
}
(出处:http://www.VeVb.com)
新闻热点
疑难解答