首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

大家说一下解决办法

2012-01-11 
大家说一下Java codepackage com.fox_ice.Filterimport java.io.*import javax.servlet.*import javax.

大家说一下

Java code
package com.fox_ice.Filter;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class LogonFiler implements Fileter{    private static final String LOGON_URI="logon_uri";  private static final String HOME_URI="home_uri";        private String logon_page;  private String home_page;    public void init(FilterConfig filterConfig) throws ServletException  {       logon_page=filterConfig.getInitParameter(LOGON_URI);       home_page=filterConfig.getInitParameter(HOME_URI);              if(null==logon_page||null==home_page)       {            throw new ServletException("没有指定主页");       }  }    public void doFilter(ServletRequest request,ServletResponse response, FilterChain chain)  {      HttpServletRequest httpReq=(HttpServletRequest)request;      HttpServletResponse httpResp=(HttpServletRequest)response;      HttpSession session=httpReq.getSession();            String request_uri=httpReq.getRequestURI();      String ctxPath=httpReq.getContextPath();      String uri=request_uri.subString(ctxPath.length());                  if(logon_page.equals(uri))      {              String strLogon=httpReq.getParameter("action");              if("logon".equals(strLogon))              {                          String name=httpReq.getParameter("name");                          String password=httpReq.getParameter("password");                          if("zhangsan".equals(name)&&"1234".equals(password))                          {                              session.setAttribute("isLogon","true");                              session.setAttribute("user",name);                                                            String origin_uri=httpReq.getParameter("origin_uri");                              if(null!=origin_uri&&!"".equals(origin_uri))                              {                                  httpResp.sendRedirect(origin_uri);                              }                              else                              {                                  httpResp.sendRedirect(ctxPath+home_page);                                  return;                              }                          }              }              else              {                      String origin_uri=httpReq.getParameter("origin_uri");                      if(null!=origin_uri&&"".equals(origin.uri))                      {                              httpReq.setAttribute("origin_uri",origin_uri);                      }                                            httpResp.setContentType("text/html;charset=gb2312");                      PrintWriter out=httpResp.getWriter();                      out.println("<h2>用户名密码错误</h2>");                      requestDispatcher rs=httpReq.getRequestDispatcher(logon_page);                      rs.include(request,response);                      return ;                                    }      }      else      {                  chain.doFilter(request,response);                  return;      }            else      {          String isLogon=(String)session.getAttribute("isLogon");          if("true".equals(isLogon))          {              chain.doFilter(request,response);              return;          }          else          {              String strQuery=httpReq.getQueryString();              if(null!=strQuery)              {                  request_uri=request_uri+"?"+strQuery;              }              httpReq.setArrtibute("origin_uri",origin_uri);              RequestDispatcher rd=httpReq.getRequestDispatcher(logon_page);              rd.forward(httpReq,httpResp);              return;          }      }  }    public void destroy(){}} 



  else
  {
  chain.doFilter(request,response);
  return;
  }为什么是返回到登陆页面 不是调用下一个过滤器 或者资源目标 解释详细点 小弟刚接触

[解决办法]
chain.doFilter(request,response)是为了把过滤向下继续传
一般filter都是一个链,web.xml 里面配置了几个就有几个。一个一个的连在一起 
如果是最后个filter,就访问真正的资源.

热点排行