你把servlet-api.jar这个jar包放到tomcat安装目录下的common下的lib试试

解决方案 »

  1.   


    <filter/>
    <filter/>
    <filter-mapping/>
    <filter-mapping/>
    这个顺序看看是否就ok了
      

  2.   

    我想你没有按照规定的顺序编写web.xml,导致第一个过滤器能被容器解析,但是第二个就不能了。所以调整一下顺序应该就ok了。
      

  3.   

    跟顺序无关呀,不行呀.
    我WEB.xml只配置一个也不行.
    <web-app>
    <!--是否已经登录-->
    <filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>com.ncucec.filter.LoginFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>LoginFilter</filter-name>
    <url-pattern>/index.jsp</url-pattern>
    </filter-mapping>而servlet-api.jar在tomcat5/lib和我的应用web-inf/lib下各有一份
      

  4.   

    D:\ncucec\bigstore\application\WEB-INF\lib\servlet-api.jar
    怎么还要这个包呢?web容器不是自带servlet包了吗?你的tomat版本是哪个,把servlet-api.jar删除试试。另外,也是主要原因,你把第二个filter和第一个filter都放在web.xml的最上面,然后才是filter-mapping,也就是 crazycy(代言人)说的那样就可以了。
      

  5.   

    to 飞星.
    >>D:\ncucec\bigstore\application\WEB-INF\lib\servlet-api.jar
    我是为了项目编译才放在这,删除也是一样的.tomcat5.028>>你把第二个filter和第一个filter都放在web.xml的最上面,然后才是filter-mapping,也就是 crazycy(代言人)说的那样就可以了。
    改了.无效.
      

  6.   

    1、WEB.XML文件如下:
    <?xml version="1.0" encoding="GBK"?><!DOCTYPE web-app
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">
        
    <web-app>
    <!--是否已经登录-->
    <filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>com.ncucec.filter.LoginFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>LoginFilter</filter-name>
    <url-pattern>/index.jsp</url-pattern>
    </filter-mapping>
       <!-- 在线人数统计 -->
    <listener>
    <listener-class>com.ncucec.SessionCount</listener-class>
    <listener-class>com.ncucec.OnlineList</listener-class>
    </listener>
        <taglib>
            <taglib-uri>oscache</taglib-uri>
            <taglib-location>/WEB-INF/oscache.tld</taglib-location>
        </taglib>

      <!-- The Welcome File List -->
      <welcome-file-list>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list></web-app>2、过滤器如下:
    package com.ncucec.filter;import java.io.*;
    import javax.servlet.*;public class LoginFilter {
        public void init(FilterConfig filterConfig)
           throws ServletException {
        }    public final void destroy()
        {
        }    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException
        {
        
         chain.doFilter(request, response); }// end doFilter}
      

  7.   

    我晕倒,楼主犯的错误也太严重了点吧??public class LoginFilter {
    你这个类是干什么的啊,implements Filter哪里去了,没有这个,能算是过滤器嘛。我运行了一下才发现,本来还以为是你web.xml配置不对导致的呢。public class LoginFilter implements Filter就对了,搞定。
      

  8.   

    呵呵,看来楼主的分都要给 mxlmwl(飞星)了
      

  9.   

    呵呵,好久没来,原来已经解决了。谢谢。
    真是不应该,这么低级的错误。那我再借题问另一个问题:如何在过滤器中,修改request的参数值??
      

  10.   

    修改参数值??做什么?我从遇到过这种情况,request中的getParameter()获取的是客户端的请求啊,按理在服务器端应该是不可以修改的吧?一般都是你用getParameter("")获取到,然后对取到的结果进行更改就行了,想人为的修改它的参数,然后再重新填充到request,似乎不可能。filter中的是ServletRequest request,在doFilter中用
    HttpServletRequest httprequest=(HttpServletRequest)request;
    你可以String str=request.getParameter("param");
    将str处理后用request.setAttribute("ss",str);然后在程序中用request.getAttribute("ss"),应该可以取到。
      

  11.   

    我想做权限控制。根据url得到所付的权限,自动设置setParameter()可惜没有这个方法。我看了一下,确实没有办法。
    好象看过一篇文章通过装饰servlet什么的可以实现,当时没有仔细看,不记得了。
      

  12.   

    权限控制也不是这么用的啊?你直接在url中传递一个操作的参数不就得了嘛,结合本身的url,就可以做权限整合了。
    一个url=aaa.do和一个operation=create,两个结合起来就可以进行授权了。
    再细分一点可以把它做成四维的,就可以达到记录级的控制了。
      

  13.   

    我现在也是这样,已经实现了记录级的控制(CRUD)。但对一些特殊的情况解决不了,比如一个url入口有多个其它URL链接的功能(没有在权限表中保留其控制权限的)。