filter过滤器如何获得值loginservlet中 HttpSession session = request.getSession(); userRight="true"; session.setAttribute("checkRight",userRight); filter中 HttpSession session = request.getSession(); String str=(String)session.getAttribute("c

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/02 16:22:13
filter过滤器如何获得值loginservlet中 HttpSession session = request.getSession(); userRight=

filter过滤器如何获得值loginservlet中 HttpSession session = request.getSession(); userRight="true"; session.setAttribute("checkRight",userRight); filter中 HttpSession session = request.getSession(); String str=(String)session.getAttribute("c
filter过滤器如何获得值
loginservlet中
HttpSession session = request.getSession();
userRight="true";
session.setAttribute("checkRight",userRight);
filter中
HttpSession session = request.getSession();
String str=(String)session.getAttribute("checkRight");
System.out.println(str);
为什么str总为null
我想得到true
filter
servlet.Filter
filter
/*
filter的作用是过程.就是如果执行的jsp或servlet等符合了filter-mapping的设置,那么在执行jsp或servlet等之前会先运行这个filter.
即是说,假设,loginservlet符合你的filter-mapping,那么运行的顺序是先运行filter,再运行loginserlet的.
现在有什么办法,让程序先执行loginservlet,在执行filter呢.
设置0是没效的,那是加载顺序,不是执行顺序

filter过滤器如何获得值loginservlet中 HttpSession session = request.getSession(); userRight="true"; session.setAttribute("checkRight",userRight); filter中 HttpSession session = request.getSession(); String str=(String)session.getAttribute("c
按你的配置,
filter
/*
Filter机制就是过滤所有的请求,你的loginservlet请求处理前,肯定先经过过滤器的处理,str当然输出时null.
解决方法:
修改url-pattern,不拦截loginservlet;
或者:重写doFilter(ServletRequest arg0,ServletResponse arg1,
FilterChain arg2)方法,
在if--else逻辑中,注意在合适的位置调用 arg2.doFilter(arg0,arg1)方法允许loginservlet请求正常执行,过滤其他请求.