隨筆-29  評論-5  文章-0  trackbacks-0
            2010年7月22日
          xwork-core-2.1.6
          http://release.opensymphony.com/xwork/2.1.6/
          struts 2.1.8
          http://struts.apache.org/download.cgi#struts2181
          spring 3.0.3
          http://www.springsource.org/download
          hibernate
          http://sourceforge.net/projects/hibernate/files/
          itatis 3v
          http://ibatis.apache.org/java.cgi
          posted @ 2010-07-24 18:05 豪情 閱讀(359) | 評論 (0)編輯 收藏

          package org.apache.struts2.dispatcher.ng.filter;

          import org.apache.struts2.StrutsStatics;
          import org.apache.struts2.dispatcher.Dispatcher;
          import org.apache.struts2.dispatcher.ng.PrepareOperations;
          import org.apache.struts2.dispatcher.ng.ExecuteOperations;
          import org.apache.struts2.dispatcher.ng.InitOperations;
          import org.apache.struts2.dispatcher.mapper.ActionMapping;

          import javax.servlet.*;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import java.io.IOException;

          /**
          * Handles both the preparation and execution phases of the Struts dispatching process.  This filter is better to use
          * when you don't have another filter that needs access to action context information, such as Sitemesh.
          */
          public class StrutsPrepareAndExecuteFilter implements StrutsStatics, Filter {
              private PrepareOperations prepare;
              private ExecuteOperations execute; 
          //初始化過濾器
              public void init(FilterConfig filterConfig) throws ServletException {
                  InitOperations init = new InitOperations(); //初始化輔助對象,封裝了初始化的一些操作
                  try {
                      FilterHostConfig config = new FilterHostConfig(filterConfig); //對filterConfig進行封裝
                      init.initLogging(config); //通過config,初始化內部Struts的記錄


                      Dispatcher dispatcher = init.initDispatcher(config); //通過config,創建并初始化dispatcher

           

                      init.initStaticContentLoader(config, dispatcher); //通過config和dispatcher,初始化與過濾器相關的靜態內容加載器

                      prepare = new PrepareOperations(filterConfig.getServletContext(), dispatcher); //通過config和dispatcher,創建request被處理前的系列操作對象
                      execute = new ExecuteOperations(filterConfig.getServletContext(), dispatcher);//通過config和dispatcher,創建處理request的系列操作對象
           
                  } finally {
                      init.cleanup(); //清空ActionContext
                  }

              }

              public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

                  HttpServletRequest request = (HttpServletRequest) req;
                  HttpServletResponse response = (HttpServletResponse) res;

                  try {
                      prepare.createActionContext(request, response); //創建ACTIONCONTEXT,并初始化Theadlocal 

                      prepare.assignDispatcherToThread(); //指派dispatcher給Theadlocal
                      prepare.setEncodingAndLocale(request, response); //設置request的編碼和LOCAL
                      request = prepare.wrapRequest(request); //封裝request
                      ActionMapping mapping = prepare.findActionMapping(request, response); //查找并選擇創建ActionMapping
                      if (mapping == null) { //如果映射不存在
                          boolean handled = execute.executeStaticResourceRequest(request, response); //試圖執行一個靜態資源的請求
                          if (!handled) {
                              chain.doFilter(request, response);
                          }
                      } else { //如果存在映射
                          execute.executeAction(request, response, mapping); //執行action
                      }
                  } finally {
                      prepare.cleanupRequest(request); //清除request的Threadlocal
                  }
              }

              public void destroy() {
                  prepare.cleanupDispatcher();
              }
          }

          來自于:http://qianjian21.javaeye.com/blog/480206

          最后不得不下載新版的struts 解決這個問題

          posted @ 2010-07-22 23:45 豪情 閱讀(998) | 評論 (0)編輯 收藏
          主站蜘蛛池模板: 宜君县| 东城区| 珠海市| 永兴县| 东源县| 榆中县| 上虞市| 隆安县| 屏东县| 闽侯县| 社旗县| 水富县| 兰州市| 五指山市| 焉耆| 鸡东县| 昌图县| 孟连| 延川县| 元谋县| 金寨县| 五原县| 新营市| 双峰县| 寻乌县| 托克逊县| 阳东县| 云和县| 四川省| 视频| 东安县| 灵武市| 讷河市| 新邵县| 定结县| 临安市| 分宜县| 芦溪县| 临澧县| 万盛区| 德令哈市|