请教:Filter 中进行sendRedirect页面跳转 URL方式传递参数 怎么取不到啊! 似

  

    
    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

   

   ????????????????????????????????何解

 

 

 


问题补充:
这个地方笔误

session.setAttribute("key") = "value"; 

纠正为

session.setAttribute("key","value"); 




问题补充:
这个问题也许我没能描述的很明白,很抱歉!应用是这样的:

登陆Frame框架请求多个页面,导致doFilter过程执行多次,也就是执行了多次的sendRedirect("/login.jsp?key=value")过程,从login.jsp中打印信息来看,URL的参数前几次打印出参数是value,对的,但在最后一次变成了NULL,为什么??? 地址显示为:.../login.jsp,为什么啊???? 是否与Filter有关???



sendRedirect是重定向,作用域已经发生了改变,

re:但URL参数应该是在的吧???



RequestDispatcher rd = request.getRequestDispatcher();

re:这个我当时试过,并不能将页面从系统框架页面返回到login.jsp页面,不能满足业务需求







  1. sendRedirect belong to http status 301/302.
  2. 301/302 已经跃出了 request scope.

貌似JSP中给session注入值,应该是session.setAttribute(key,value);

sendRedirect是重定向,作用域已经发生了改变,所以,你取不到值

sendRedirect是重定向,作用域已经发生了改变,所以,你取不到值,只有高于request的作用域才可以存储值和取值,明白否

RequestDispatcher rd = new RequestDispatcher();

rd.forward(request, response)

用forward即可,为什么这样做,上面有人已经说的很清楚了。我就不说明了。

对上面的补充下
RequestDispatcher rd = request.getRequestDispatcher();