posts - 241,  comments - 116,  trackbacks - 0
          我一般使用struts2的時候都是匹配所有類型的,這時候就會出現一個問題,當去訪問一個servlet的時候就系統會把它當作一個action來訪 問,就會出現找不到action的問題。所以這個時候就需要實現一個filter來過濾servlet,并且這個filter要放在struts2的 filter之前,要在把它當作一個action之前直接把它進行跳轉訪問servlet
          import java.io.IOException;
          import java.util.ArrayList;使用云技術實現大規模ASP.NET應用
          import java.util.Arrays;
          import java.util.List;

          import javax.servlet.Filter;
          import javax.servlet.FilterChain;
          import javax.servlet.FilterConfig;
          import javax.servlet.ServletException;
          import javax.servlet.ServletRequest;
          import javax.servlet.ServletResponse;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;


          public class ServletFilter implements Filter {

              private List<String> targets = new ArrayList<String>();
              
              public void destroy() {
                  // TODO Auto-generated method stub

              }

              public void doFilter(ServletRequest request, ServletResponse response,
                      FilterChain chain) throws IOException, ServletException {
                  // TODO Auto-generated method stub
                  HttpServletRequest req = (HttpServletRequest)request;
                  HttpServletResponse resp = (HttpServletResponse)response;
                  String uri = req.getRequestURI();
                  String target = uri.indexOf("?") > 0 ? uri.substring((uri.lastIndexOf("/")+1),uri.indexOf("?")) : uri.substring(uri.lastIndexOf("/")+1);
                  //servlet的URL用的都是servlet/servlet的名稱
                  if (uri.contains("servlet") && targets.contains(target)) {
                      req.getRequestDispatcher(uri.substring(9)).forward(req, resp);
                  } else {
                      chain.doFilter(req, resp);
                  }
              }

              public void init(FilterConfig config) throws ServletException {
                  // TODO Auto-generated method stub
                  String targets = config.getInitParameter("targets");//在web.xml里面聲明的filter里面的參數指定哪些servlet是需要過濾的,也可以不指定,直接過濾所有的servlet
                  this.targets.addAll(Arrays.asList(targets.split(",")));
              }

          }
          posted on 2011-06-27 10:04 墻頭草 閱讀(378) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          人人游戲網 軟件開發網 貨運專家
          主站蜘蛛池模板: 吴忠市| 双辽市| 磴口县| 安岳县| 满城县| 桑日县| 三江| 南平市| 巩留县| 寿宁县| 富阳市| 樟树市| 全椒县| 萍乡市| 溧阳市| 昔阳县| 拉萨市| 东乌珠穆沁旗| 绩溪县| SHOW| 丘北县| 湖州市| 彭水| 河池市| 会泽县| 漯河市| 延安市| 桐庐县| 桂平市| 汉沽区| 新田县| 康马县| 太谷县| 龙岩市| 四川省| 合水县| 枣强县| 东城区| 临江市| 司法| 榆林市|