posts - 241,  comments - 116,  trackbacks - 0
          我一般使用struts2的時(shí)候都是匹配所有類型的,這時(shí)候就會(huì)出現(xiàn)一個(gè)問題,當(dāng)去訪問一個(gè)servlet的時(shí)候就系統(tǒng)會(huì)把它當(dāng)作一個(gè)action來訪 問,就會(huì)出現(xiàn)找不到action的問題。所以這個(gè)時(shí)候就需要實(shí)現(xiàn)一個(gè)filter來過濾servlet,并且這個(gè)filter要放在struts2的 filter之前,要在把它當(dāng)作一個(gè)action之前直接把它進(jìn)行跳轉(zhuǎn)訪問servlet
          import java.io.IOException;
          import java.util.ArrayList;使用云技術(shù)實(shí)現(xiàn)大規(guī)模ASP.NET應(yīng)用
          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里面的參數(shù)指定哪些servlet是需要過濾的,也可以不指定,直接過濾所有的servlet
                  this.targets.addAll(Arrays.asList(targets.split(",")));
              }

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

          只有注冊用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          人人游戲網(wǎng) 軟件開發(fā)網(wǎng) 貨運(yùn)專家
          主站蜘蛛池模板: 晋宁县| 开原市| 赣榆县| 宁乡县| 克什克腾旗| 开化县| 文昌市| 甘谷县| 南和县| 阿尔山市| 洞头县| 手游| 大名县| 桐梓县| 平乐县| 嫩江县| 安康市| 治县。| 望都县| 贵州省| 定兴县| 阜南县| 石景山区| 乐业县| 高尔夫| 清流县| 神木县| 唐山市| 克东县| 西乡县| 宁强县| 保德县| 阳原县| 南宫市| 汾西县| 石嘴山市| 呼图壁县| 巧家县| 常宁市| 万载县| 逊克县|