public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest)request; HttpServletResponse httpResponse = (HttpServletResponse)response; String uri = httpRequest.getRequestURI(); HttpSession session = ((HttpServletRequest)httpRequest).getSession(); EmployeeData user = (EmployeeData)session.getAttribute("user"); if(user == null) { session.setAttribute("key") = "value"; ((HttpServletResponse)response).sendRedirect("/login.jsp?key=value"); } filterChain.doFilter(request, response); }
login.jsp :
<% String Parametermessger = (String)request.getParameter("key"); System.out.println("Parameter: "+Parametermessger); String Sessionmessger = (String)request.getSession().getAttribute("key"); System.out.println("Session: "+Sessionmessger); %>
结果:
NULL
NULL
????????????????????????????????何解
貌似JSP中给session注入值,应该是session.setAttribute(key,value);
sendRedirect是重定向,作用域已经发生了改变,所以,你取不到值
sendRedirect是重定向,作用域已经发生了改变,所以,你取不到值,只有高于request的作用域才可以存储值和取值,明白否
RequestDispatcher rd = new RequestDispatcher();
rd.forward(request, response)
用forward即可,为什么这样做,上面有人已经说的很清楚了。我就不说明了。
对上面的补充下
RequestDispatcher rd = request.getRequestDispatcher();