当前位置: 代码迷 >> Java Web开发 >> 关于filter过滤用户登录信息的有关问题
  详细解决方案

关于filter过滤用户登录信息的有关问题

热度:7034   发布时间:2013-02-25 21:13:53.0
关于filter过滤用户登录信息的问题
我在JSP中加入了一个过滤器来过滤用户登录信息,当username为空的时候会跳转到登录界面,配置好web.xml后,打开登录界面,这时尝试直接登录工程目录下的其他JSP文件都会自动跳转到index.jsp,可是当我输入用户名登录一次后,在尝试直接在路径中登录其他页面后,会显示username为空,可是页面还是成功加载了,为什么过滤器在我登录过一次后会失效?

过滤器代码如下:
[code=Java][/code]
package filters;

import java.io.*;
import java.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class UserFilter implements Filter{
public void init(FilterConfig config) throws ServletException{}

public void destroy(){}

public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) throws ServletException,IOException{
HttpServletRequest request=(HttpServletRequest)req;
HttpServletResponse response=(HttpServletResponse)res;
HttpSession session=request.getSession();
String username=(String)session.getAttribute("username");
if(username==null || "".equals(username) )
{
PrintWriter out=response.getWriter();
out.println("<html>");
out.println("<script>");
out.println("window.open('/PTOSR/index.jsp','_top')");
out.println("</script>");
out.println("</html>");
}
chain.doFilter(req,res);
}
}

xml文件如下:
[code=XML][/code]
<?xml version="1.0" encoding="ISO-8859-1"?>
-<web-app version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"> -<filter> <filter-name>username filter</filter-name> <filter-class>filters.UserFilter</filter-class> </filter> -<filter-mapping> <filter-name>username filter</filter-name> <url-pattern>/index_admin.jsp</url-pattern> </filter-mapping> <display-name>web application</display-name> -<session-config> <session-timeout>180</session-timeout> </session-config> -<welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

------解决方案--------------------------------------------------------
[Quote=引用:]
我在JSP中加入了一个过滤器来过滤用户登录信息,当username为空的时候会跳转到登录界面,配置好web.xml后,打开登录界面,这时尝试直接登录工程目录下的其他JSP文件都会自动跳转到index.jsp,可是当我输入用户名登录一次后,在尝试直接在路径中登录其他页面后,会显示username为空,可是页面还是成功加载了,为什么过滤器在我登录过一次后会失效?

过滤器代码如下:
[code=HTML]……
[/Quote
因为你只针对这个地址进行过滤的啊,你把它换成*表示对所有的请求进行过滤就行了就行了。
------解决方案--------------------------------------------------------
探讨
<url-pattern>/index_admin.jsp</url-pattern>
这个是我做测试用的,正是的工程里面用的是*.jsp
上面的问题已经解决了,现在的问题是我在登出的时候调用了,session.removeAttribute("username"),
可是为什么我测试页面的时候得到的username的值并没有被消除呢,我用来测试的页面在主页面中是放在frame里面的
  相关解决方案