最近发现SSH项目部署在weblogic 10.3下,登录采用过滤器filter方式,对表单提交的数据进行必要的处理,然后通过request设置回去,却无法将request传到action中,在tomcat下是正常的,有人遇到同样的问题吗,请求各位帮助。

解决方案 »

  1.   

    在登录的filter里测试,我发现我设置一个request值,request.setAttribute("aa","aa"),然后通过request.getParameter("aa"),和request.getAttribute("aa")获得,将结果打印出来:
     log.debug("request.getParameter("aa"):"+request.getParameter("aa"));
     log.debug("request.getAttribute("aa"):"+((String[])request.getAttribute("aa"))[0]);
    ,结果在weblogic10.3下,getParameter(“aa”)为空值,getAttribute("aa")才有值。在tomcat6.0下两者都有值为aa。这是为什么呢?这个可能也也是我action取不到filter值的原因。
      

  2.   

    request.setAttribute("aa","aa") 就用getAttribute来取,至于为什么tomcat2者都可以,还没研究过,望高手赐教。
      

  3.   

    在weblogic10.3 下 写的个关键字过滤器filter,用来替换 表单提交的 数据,也失效了,比如我的关键字列表含有“项目”,提交的表单如果含有“项目”,将被替换成“***”,在tomcat6.0下是完全正常的,到了weblogic10.3下就不能被替换了,得到的仍然是“项目”,这是怎么回事呀,望请高手指教!public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    boolean flag =false;
    if(request.getParameterMap()!=null){
      List<String> list =kService.getKeywordsList();//获得关键字列表
      int listSize = list.size();
      Map<String,String[]> map=request.getParameterMap();
      Iterator it = map.keySet().iterator();
      while(it.hasNext()&&!flag){
     String key = (String)it.next();
     String[] source = (String[])map.get(key);//获得参数值,数组形式
     for(int j=0;j<source.length;j++){
     for(int i=0;i<listSize&&!flag;i++){
     String keyword = list.get(i).toString();
     if(source[j].contains(keyword)){//如果参数含有关键字
         source[j]=source[j].replaceAll(keyword, "***");//关键字用”***“替换
     }
     }
     }
    }
    }
    }
            chain.doFilter(request, response); }