posts - 241,  comments - 116,  trackbacks - 0
          我一般使用struts2的時(shí)候都是匹配所有類型的,這時(shí)候就會(huì)出現(xiàn)一個(gè)問(wèn)題,當(dāng)去訪問(wèn)一個(gè)servlet的時(shí)候就系統(tǒng)會(huì)把它當(dāng)作一個(gè)action來(lái)訪 問(wèn),就會(huì)出現(xiàn)找不到action的問(wèn)題。所以這個(gè)時(shí)候就需要實(shí)現(xiàn)一個(gè)filter來(lái)過(guò)濾servlet,并且這個(gè)filter要放在struts2的 filter之前,要在把它當(dāng)作一個(gè)action之前直接把它進(jìn)行跳轉(zhuǎn)訪問(wè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是需要過(guò)濾的,也可以不指定,直接過(guò)濾所有的servlet
                  this.targets.addAll(Arrays.asList(targets.split(",")));
              }

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

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


          網(wǎng)站導(dǎo)航:
           
          人人游戲網(wǎng) 軟件開發(fā)網(wǎng) 貨運(yùn)專家
          主站蜘蛛池模板: 石门县| 罗源县| 荆州市| 恭城| 古交市| 潜江市| 泰顺县| 防城港市| 五大连池市| 同心县| 三河市| 北宁市| 松桃| 镇雄县| 长兴县| 探索| 秦安县| 红河县| 上栗县| 四平市| 普定县| 普兰店市| 互助| 临清市| 榆树市| 海丰县| 贡山| 郸城县| 马关县| 南通市| 乌拉特后旗| 武隆县| 青州市| 遵义市| 阿鲁科尔沁旗| 海原县| 右玉县| 诸暨市| 七台河市| 天全县| 商丘市|