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://m.survivalescaperooms.com)
新聞熱點
疑難解答