我在做物流管理系统时,要做一个登录过滤器,只有登录后才可以查看内容,其他的页面不能直接打开,需跳到登录页面。现在有一个问题,在web.xml里 我以前用/*来设定过滤范围可以,但是现在/*不可以了,会使整个项目页面出问题,而一个一个的过滤却好使,不知道有没有哪位朋友遇见过类似的问题,望请教....

解决方案 »

  1.   

    登录后才可以查看内容,其他的页面不能直接打开
    解决方法=》在JSP页面中加入一个 【用户。名字】的输出项。session中放入 用户。(不需要做权限验证了)在web.xml里 我以前用/*来设定过滤范围可以,但是现在/*不可以了,
    解决方法=》利用后缀来分开各个FILTER。
      

  2.   

    要看下你的过滤器mapping是怎么设的另外,还是推荐用多个过滤器,好管理
      

  3.   

    把登陆页面和内容页面不要发在一起。
    也就是说内容页面都放在一个文件夹里。登陆页面就发在文件夹得外面。
    你过滤时就过滤文件夹就可以了。如果它访问的路径是文件夹里的页面话就直接跳到登陆页面。这样的话就用过滤器。
    代码如下:package com.company.servlet;import java.io.IOException;
    import java.io.PrintWriter;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.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;public class AdminFilter extends HttpServlet implements Filter { public void doFilter(ServletRequest arg0, ServletResponse arg1,
    FilterChain arg2) throws IOException, ServletException {
    // 未登陆用户禁止访问后台的任何页面
            HttpServletRequest request = (HttpServletRequest) arg0;
            Object user = request.getSession().getAttribute("usermodel");
            if (null == user || "".equals(user)) {
                // 直接到登陆截面
                request.getRequestDispatcher("/admin/backlogin.jsp").forward(arg0, arg1);
            } else {
                arg2.doFilter(arg0, arg1);
            } } public void init(FilterConfig arg0) throws ServletException {
    // TODO Auto-generated method stub } /**
     * Constructor of the object.
     */
    public AdminFilter() {
    super();
    } /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
    super.destroy(); // Just puts "destroy" string in log
    // Put your code here
    }
    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occurs
     */
    public void init() throws ServletException {
    // Put your code here
    }}
    web.xml配置
    <filter>
         <filter-name>AdminFilter</filter-name>
        <filter-class>com.company.servlet.AdminFilter</filter-class>
      </filter>
      <filter-mapping>
         <filter-name>AdminFilter</filter-name>
         <url-pattern>/admin/pages/*</url-pattern>
      </filter-mapping>