我已经写好了一个过滤器(老师写的),目的是为了防止跳过登录操作,直接输入某个具体的地址,直接打开相应的页面。XML文件也部署好了,请问还需要在JSP页面上写上调用过滤器的什么代码之类的吗?如果写的话怎么写呢?因为我不知道,照着做了也没有实现这个过滤器的功能(就是说没登陆就直接输入地址也能进入到相应的页面,所以没实现)。请大家帮我看看过滤器JAVA文件:
//AdminEnterCheck.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class AdminEnterCheck implements Filter
{
private FilterConfig fc=null;
public void init(FilterConfig fc) throws ServletException
{
this.fc=fc;
}
public void doFilter (ServletRequest servletrequest,ServletResponse servletresponse,FilterChain chain) throws IOException,ServletException
{
if (fc==null)
{
return;
}
HttpServletRequest request=(HttpServletRequest)servletrequest;
HttpServletResponse response=(HttpServletResponse)servletresponse;
HttpSession session=request.getSession();
String username=(String)session.getAttribute("username");
if (username==null || username.equals(""))
{
response.sendRedirect("../index.jsp");
}else
{
chain.doFilter(servletrequest,servletresponse);
}
}
public void destroy()
{
fc=null;
}
}web.xml文件如下:
<web-app><filter>
<filter-name>abc</filter-name>
<filter-class>AdminEnterCheck</filter-class>
</filter><filter-mapping>
<filter-name>abc</filter-name>
<url-pattern>/Myex12/*url-pattern>
</filter-mapping></web-app>

解决方案 »

  1.   

    AdminEnterCheck这个类有包吗?这里要写全路径,还有你配的<url-pattern>/Myex12/*url-pattern>和你访问的页面都被过滤到了吗?
      

  2.   

    按照你的配置文件来看
       只有你的请求为/Myex12/XX.jsp才被这个拦截器拦截的
         把你的xx.jsp文件放在Myex12(webroot下面的一个建一个文件夹)下面试试
       
      

  3.   

    <url-pattern>/Myex12/*url-pattern> Myex12是你的工程名不?不是就改为工程名
      

  4.   

    <url-pattern>/Myex12/*url-pattern> 
    路径写正确没
      

  5.   

    <url-pattern>/Myex12/*</url-pattern>这个我写对了,我上面贴出来的少了“</”!Myex12 是我的工程目录 !
      

  6.   

    AdminEnterCheck这个类 没有包的。就是没有被过滤到啊
      

  7.   

    不晓得哦,在里面System.out.println一下看看。。
      

  8.   

    Myex12是工程里面的文件夹是吧,你xml里面配置的格式是对的。
    你写一个最简单的过滤器试试,import java.io.IOExceppublic class AdminFilter implements Filter {    public void destroy() {
            // TODO Auto-generated method stub    }    public void doFilter(ServletRequest arg0, ServletResponse arg1,
                FilterChain arg2) throws IOException, ServletException {
            HttpServletRequest request=(HttpServletRequest)arg0;
            HttpServletResponse response=(HttpServletResponse)arg1;
            HttpSession session=request.getSession();
            Object m=session.getAttribute("member");
            if(null==m){
             request.getRequestDispatcher("/index.jsp").forward(request, response);
            }else{
                 arg2.doFilter(arg0, arg1) ;
            }
           
        }    public void init(FilterConfig arg0) throws ServletException {
            // TODO Auto-generated method stub    }}
      

  9.   

    <url-pattern>/Myex12/*url-pattern> 这样写不对!最后一个没有 '<'
    需要进得过滤一下!不然的话没有登陆的也可以进了!
      

  10.   

    在JSP页面上不需要在写什么,因为Tomcat启动时已经运行了过滤器,
    <filter-mapping> 
    <filter-name>abc </filter-name> 
    <url-pattern>/*<url-pattern> 
    </filter-mapping>
    你这样写看可以不,配置时url一定要正确
      

  11.   

    我的class文件是直接放在WEB-INF文件夹下面的,没有设置包名的文件夹,所有说没有包。因为JAVA文件我也没有用到包啊!
      

  12.   

    8楼的谢谢了,不过我试了一下你的java程序,可是编译出错,于是我改成:import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;public class AdminFilter implements Filter {    public void destroy() {
        }    public void doFilter(ServletRequest arg0, ServletResponse arg1,
                FilterChain arg2) throws IOException, ServletException {
            HttpServletRequest request=(HttpServletRequest)arg0;
            HttpServletResponse response=(HttpServletResponse)arg1;
            HttpSession session=request.getSession();
            Object m=session.getAttribute("username");
            if(null==m){
                request.getRequestDispatcher("/index.jsp").forward(request, response);
            }else{
                    arg2.doFilter(arg0, arg1) ;
            }
           
        }    public void init(FilterConfig arg0) throws ServletException {
        }}编译通过了!可是试了,还是没有达到过滤器的效果!
      

  13.   

    xml文件里直接 用/*  不要加工程名式一下
      

  14.   

    G:\tomcat-6.0.18\webapps\Myex12  这个是我放的目录。WEB-INF与jsp页面都是放在Myex12下的。请大家看下是否有错?
      

  15.   

    /*代表所有项目的所有url,全部过虑。既然这样可以,说明你这里的路径有问题,看看
      

  16.   

    我又试了一下,改成过滤的只是一个JSP页面,结果成功了!
      

  17.   

    汗,看到这才知道Myex12不是一个目录,是一个项目名,在配置映射时"/"代表根目录,也就是项目名。你写的是
    "/Myex12/*",当然过滤不了了,应该为"/*",或有文件夹,就写文件夹的名,具体过滤映射好像
    有三种用法,你可以上网搜搜。