jsp过滤器配制问题

ai5173609 2006-11-23 09:09:57
下面是一个对用户认证的过滤器,在运行的时候就是不对,并且整个项目下的文件访问时都出现相同的错误,不知道哪里错,望哪位帮我改一下。
package com.filter;

import javax.servlet.FilterChain;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import javax.servlet.FilterConfig;
import javax.servlet.http.HttpSession;

public class SignonFilter implements Filter
{
String LOGIN_PAGE="login_signon.jsp";
protected FilterConfig filterConfig;

//过滤处理的方法
public void doFilter(final ServletRequest req,final ServletResponse res,FilterChain chain)throws IOException,ServletException
{
HttpServletRequest hreq = (HttpServletRequest)req;
HttpServletResponse hres = (HttpServletResponse)res;
HttpSession session = hreq.getSession();
String isLogin="";
try
{
isLogin=(String)session.getAttribute("isLogin");

if(isLogin.equals("true"))
{
System.out.println("在SignonFilter中验证通过");
//验证成功,继续处理
chain.doFilter(req,res);
}
else
{
//验证不成功,让用户登录。
hres.sendRedirect(LOGIN_PAGE);
System.out.println("被SignonFilter拦截一个未认证的请求");
}
}
catch(Exception e)
{
e.printStackTrace();
}

}

public void setFilterConfig(final FilterConfig filterConfig)
{
this.filterConfig=filterConfig;
}

//销毁过滤器
public void destroy()
{
this.filterConfig=null;
}

public void init(FilterConfig config) throws ServletException {
this.filterConfig = config;
}

}
web.xml配制如下
<filter-name>auth</filter-name>
<filter-class>com.filter.SignonFilter</filter-class>
</filter>


<filter-mapping>
<filter-name>auth</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>

<listener>
<listener-class>com.jspdev.ch8.MyServletContextListener</listener-class>
</listener> //监听器
我用localhost:8080/user/admin/index.jsp访问就出现错误:
java.lang.LinkageError: Class javax/servlet/ServletRequestEvent violates loader constraints
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(Unknown Source)
java.security.SecureClassLoader.defineClass(Unknown Source)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1815)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:869)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1322)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1201)
java.lang.ClassLoader.loadClassInternal(Unknown Source)
com.jspdev.ch8.MyRequestListener.requestInitialized(MyRequestListener.java:17)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
java.lang.Thread.run(Unknown Source)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.20 logs.
其它文件也是出现同样的错误,帮帮我吧~~

...全文
272 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sacred02 2006-11-25
  • 打赏
  • 举报
回复
顶一楼
xhwang_x 2006-11-24
  • 打赏
  • 举报
回复
顶一下
success_dream 2006-11-24
  • 打赏
  • 举报
回复
lz,我看你的代码好眼熟啊,你是不是看那本JSP应用开发详解的代码?
success_dream 2006-11-23
  • 打赏
  • 举报
回复
最近也在研究过滤器,关注中...
seesea10523 2006-11-23
  • 打赏
  • 举报
回复
mark
mianwo602 2006-11-23
  • 打赏
  • 举报
回复
楼上说的很对,估计你的页面都在/admin/的目录下,那么这就会死循环,建议,你把最后转发的页面丢到其他路径下(不要在/admin/下),这时,转发的页面就不会过滤了(可以显示错误页面了)
mianwo602 2006-11-23
  • 打赏
  • 举报
回复
楼上说的很对,估计你的页面都在/admin/的目录下,那么这就会死循环,建议,你把最后转发的页面丢到其他路径下(不要在/admin/下),这时,转发的页面就不会过滤了(可以显示错误页面了)
SaintKaKa 2006-11-23
  • 打赏
  • 举报
回复
第一次访问登陆页面时,session里的isLog肯定是空值,但是被过滤器拦截请求,然后转发至LOGIN_PAGE(不知道这个LOGIN_PAGE是jsp还是servlet,没有扩展名应该是servlet,所以建议你转发到jsp页面),但是转发到新的页面时仍然会被过滤器拦截请求,此时session里的isLog仍然是空值,这样就死循环了
建议在doFilter()方法里先判断是否访问的是登陆页面,如果是,则直接return,如果不是登陆页面在进行过滤
ai5173609 2006-11-23
  • 打赏
  • 举报
回复
真是一波刚平,一波又起啊,错误是没有了,访security和admin目录下的文件对,出现一片空白,什么都没有,不知道怎么回事,它也不跳转,也没有错误提示,又望哪位帮帮我,有没有碰到过这种情况

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧