这是我的过滤器代码,要实现的功能是当用户请求提交的时候,进入过滤器是否拥有此权限如果没有那么就是
Role_permission role= null;如果role为空就跳转到一个nopermission.jsp里面去,然后数据不要提交
但是问题就在这里 页面跳转了 数据却也提交了???
try {  
         HttpServletRequest req=(HttpServletRequest)request;
         HttpServletResponse res=(HttpServletResponse)response;
         HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper(
                    (HttpServletResponse) response);
         Enumeration paramNames = request.getParameterNames();
         String paramName=null; 
         while(paramNames.hasMoreElements()){ 
         paramName=(String)paramNames.nextElement();   // 获取actionType
         String paramValues=request.getParameter(paramName); //获取隐藏域值              
         filter=filterConfig.getInitParameter(paramValues);//获取web.xml相应do操作的值例如登陆
            HttpSession session=req.getSession();           
            Integer str=(Integer)session.getAttribute("Roleid");  //用户角色  
         /*
          * doLogin  值是4
          * doDel    值是5
          * */          
            if(filter!=null&& str!=null){
             int aa= Integer.parseInt(filter);
             System.out.println(aa+"...."+str);
             Role_permission role=PermissionDAO.CheckIsPermission(aa,str);
             if(role==null){            
             res.sendRedirect("MainServlet?actionType=doNotpermission");                       
             }
             }  
        }
            filterChain.doFilter(request, response);  然后抛出的一个异常   doRevertactionTypejava.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)
at Sini.Bll.bbs.MainServlet.doRevert(MainServlet.java:396)
at Sini.Bll.bbs.MainServlet.doGet(MainServlet.java:91)
at Sini.Bll.bbs.MainServlet.doPost(MainServlet.java:547)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at Sini.Utility.bbs.ActionTypeFilter.doFilter(ActionTypeFilter.java:58)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at Sini.Utility.bbs.EncodingFilter.doFilter(EncodingFilter.java:23)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
2008-6-18 17:02:15 org.apache.catalina.core.ApplicationContext log
信息: null
doNotpermissionactionType

解决方案 »

  1.   

    还有,为什么过滤器里面的 重定向到一个错误提示页面会在 servlet组件的后面执行呢  见红体字
      

  2.   

    还有,为什么过滤器里面的 重定向到一个错误提示页面会在 servlet组件的后面执行呢  见红体字
      

  3.   

    还有,为什么过滤器里面的 重定向到一个错误提示页面会在 servlet组件的后面执行呢  见红体字
      

  4.   

    res.sendRedirect("MainServlet?actionType=doNotpermission");
    加上return;结束运行