我在JSP中加入了一个过滤器来过滤用户登录信息,当username为空的时候会跳转到登录界面,配置好web.xml后,打开登录界面,这时尝试直接登录工程目录下的其他JSP文件都会自动跳转到index.jsp,可是当我输入用户名登录一次后,在尝试直接在路径中登录其他页面后,会显示username为空,可是页面还是成功加载了,为什么过滤器在我登录过一次后会失效?过滤器代码如下: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文件如下:<?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>
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文件如下:<?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>
解决方案 »
- JSP页面怎么得到服务器时间啊放在JS里的。
- 你好mysql jdbc驱动配置 你会吗?急!!
- eWebEditor在线文本编辑器吕海鹏修改版——报错,我只有60分了
- 如何在各页中一个共享javabean对象
- 谁人告诉我,怎么做在线音乐连续播放或例子???
- JSTL死活搞不定...
- 分页程序出错了,请各位帮助,分数不够还可以给啊!
- 请问resin-2.1.4 与 resin ee 2.1.4有什么区别啊?
- 请高手指教一个简单的问题 try{}catch{}问题
- 我用javac编译老是了错???谁能帮我!!!
- struts2的if标签配合OGNL出错
- struts2 我用了一个标签 超连接 不起作用
我在JSP中加入了一个过滤器来过滤用户登录信息,当username为空的时候会跳转到登录界面,配置好web.xml后,打开登录界面,这时尝试直接登录工程目录下的其他JSP文件都会自动跳转到index.jsp,可是当我输入用户名登录一次后,在尝试直接在路径中登录其他页面后,会显示username为空,可是页面还是成功加载了,为什么过滤器在我登录过一次后会失效?过滤器代码如下:
[code=HTML]……
[/Quote
因为你只针对这个地址进行过滤的啊,你把它换成*表示对所有的请求进行过滤就行了就行了。
这个地址进行过滤的啊,你把它换成*表示对所有的请求进行过滤就行了就行了。
这个是我做测试用的,正是的工程里面用的是*.jsp
上面的问题已经解决了,现在的问题是我在登出的时候调用了,session.removeAttribute("username"),
可是为什么我测试页面的时候得到的username的值并没有被消除呢,我用来测试的页面在主页面中是放在frame里面的