我在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
因为你只针对这个地址进行过滤的啊,你把它换成*表示对所有的请求进行过滤就行了就行了。
------解决方案--------------------------------------------------------