public class xxx extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {          
request.setAttribute("aa", "ok");
response.sendRedirect("/Finish.jsp");


}

}我在Finish.jsp页面里的
 <%
         String name=(String) request.getAttribute("aa");
%>   
怎么为空啊?STRUTS里的ACTION不也是Servlet吗?

解决方案 »

  1.   

    request 范围是一次请求吧sendRedirect是另一个请求了,所以值为空?以下高手来解答
      

  2.   

    我看一本书上说,其实所有的框架核心都是  servlet和javabean所以struts里的action,也应该是像您说的那样,是servlet,欢迎高手拍砖
      

  3.   

    应该放到session.setAttribute("aa", "ok"); 
      

  4.   

    用request不行吗?莫非sendRedirect是另一个请求?
      

  5.   

    此时两页面不是同一个request对象了吧?
      

  6.   

    esponse.sendRedirect("/Finish.jsp"); 是向服务器重新发送了新的请求 的 页面跳转
    <jsp:forward   page="http://xxx.com/b.php"/>这个是服务器端跳转,保持当前请求状态的页面跳转 不对的地方,欢迎大家批评,共同学习
      

  7.   

    和STRUTS里的mapping.findForward不一样吗?这是同个请求,sendRedirect是另一个请求??
      

  8.   

    是另一个请求啊,原来的request里的数据将丢失
      

  9.   

    STRUTS里的mapping.findForward是同个请求,我在ACTION里request.setAttribute("aa", "ok"); 在相应的JSP可以得到        String name=(String) request.getAttribute("aa"); 
      

  10.   

    response.sendRedirect("/Finish.jsp");   sendredrect  是重定向的意思他指向的页面  就不是同一请求了 
    所以用 request 是得不到值的 可以用session或用forword 的来指向一个页面,这个是转发 是同一请求
      

  11.   

    response.sendRedirect("/Finish.jsp"); sendredrect  是重定向的意思 他指向的页面  就不是同一请求了 重定向相当于两次请求,他会是之前页面中的参数丢失你可以用将变量放如session中或用forword 的来指向一个页面,建议不要放在session中,最好用转发 
      

  12.   


    RequestDispatcher rd = request.getRequestDispatcher("/Finish.jsp");
    rd.forward(request, response);要转发请求请用这个重定向
      

  13.   


    request.setAttribute("aa", "ok"); 
    RequestDispatcher rd = request.getRequestDispatcher("/Finish.jsp");
    rd.forward(request, response);少写了个语句
      

  14.   

    两个请求啊,request范围小了哇,至少在一个会话范围啊,选择session