我用filter实现登录权限控制,就是必须正确登录,才能进入index.jsp,如果直接在地址栏输入index.jsp的地址进入的话,页面将自动跳转到登录页面,用jbuilder运行程序时,没问题,各功能都能实现,但当我用浏览器运行时,出现了一个很奇怪的问题:
输入用户名和密码能正常登录,在地址栏输入index.jsp的地址进入时,也能正确跳转到登录页面,但在这时输入用户名和密码提交后,老是自动跳转到登录页面,就是不到index.jsp,不知道为什么?用jbuiler运行时不会有这种错,郁闷呀!!![em5]过滤器代码如下(过滤所有jsp页面,除登录页面外)
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
try {
HttpServletRequest res=(HttpServletRequest)request;
HttpServletResponse rep=(HttpServletResponse)response;
HttpSession session=res.getSession(true);
System.out.println("aaa "+session.getAttribute("loginId"));
if(session.getAttribute("loginId")==null ){
RequestDispatcher dis = request.getRequestDispatcher("/login.jsp");
dis.forward(request, response);
}
else{
filterChain.doFilter(request, response);
} }
catch (ServletException sx) {
sx.printStackTrace();
filterConfig.getServletContext().log(sx.getMessage());
}
catch (IOException iox) {
iox.printStackTrace();
filterConfig.getServletContext().log(iox.getMessage());
}
}
输入用户名和密码能正常登录,在地址栏输入index.jsp的地址进入时,也能正确跳转到登录页面,但在这时输入用户名和密码提交后,老是自动跳转到登录页面,就是不到index.jsp,不知道为什么?用jbuiler运行时不会有这种错,郁闷呀!!![em5]过滤器代码如下(过滤所有jsp页面,除登录页面外)
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
try {
HttpServletRequest res=(HttpServletRequest)request;
HttpServletResponse rep=(HttpServletResponse)response;
HttpSession session=res.getSession(true);
System.out.println("aaa "+session.getAttribute("loginId"));
if(session.getAttribute("loginId")==null ){
RequestDispatcher dis = request.getRequestDispatcher("/login.jsp");
dis.forward(request, response);
}
else{
filterChain.doFilter(request, response);
} }
catch (ServletException sx) {
sx.printStackTrace();
filterConfig.getServletContext().log(sx.getMessage());
}
catch (IOException iox) {
iox.printStackTrace();
filterConfig.getServletContext().log(iox.getMessage());
}
}
解决方案 »
- 至今在CSDN上无人能解的问题--真正高手请进!
- JSP显示页面最后更改时间如何实现??
- jfreechart访问慢????
- 下载文件的名字问题?response.setHeader("Content-Disposition", "attachment;filename=\"hehe.mp3\"")
- 我想批量执行insert和update请问如何做效率才高?我现在用addBatch的方法,但感觉和单独多次使用executeQuery的速度差不多,都一样的慢,
- TOMCAT不能在2003下运行?
- response.setBufferSize 设置客户端缓冲区到底有什么实际用途?
- 这是什么类型的异常
- [Microsoft][ODBC SQL Server Driver]无效的描述符索引!??
- 在线求解关于java.lang.NullPointerException的问题
- 关于聊天室
- jsp 怎么控制每行显示4个结果?谢谢
还有个问题是同样的工程为什么在jbuilder里没出错呢
2.修改web.xml配置文件,让过滤器不对登录页面生效。
再试试看!
Filter在请求资源(在这里是页面)时,或资源回应时,或两者都是起过滤作用的.
要是你处理登录的代码也被Filter了,那就不可能被执行.
也就是你永远登录不进去.
改成FALSE看看
我已经在配置文件里除了登录页面的,将“res.getSession(true);”改为“res.getSession();”
这种方法我也试过的,没用,其实代码我真的没看出来有什么错,因为我在jbuilder里测试是没有任何错的,就是移到tomcat下用浏览器测试时才出现这种错的,很是不明白。
谢谢各位了!!!