转发时使用forward是不是请求和响应对象都转发了?

解决方案 »

  1.   

    是的,你的forward是Struts还是servlet?
      

  2.   


    是啊
    和servlet中一样
    不过还是在一个reqeust请求之中
    这样你就可以通过request来进行在页面中进行操作
      

  3.   

    package servlet;import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;public class ServletA extends HttpServlet
    {
    public void doGet(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException
    {
                      PrintWriter out=res.getWriter();
    out.println("A页面"); req.getRequestDispatcher("/servletB").forward(req,res);


    }

    public void doPost(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException
    {
    this.doGet(req,res);
    }
    }
    //上面的是servletA
    //下面的是servletB
    package servlet;import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;public class ServletB extends HttpServlet
    {
    public void doGet(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException
    {
    PrintWriter out=res.getWriter();
    out.println("sssss");
    }

    public void doPost(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException
    {
    PrintWriter out=res.getWriter();
    out.println("bbbbbbb");
    }
    }
    既然都转发了,那为什么servletA中的“A页面”没有输出来?
      

  4.   

    out.println("A页面");
    req.getRequestDispatcher("/servletB").forward(req,res);这里你已经转向到servletB
    servletA中的肯定不会显示出来了。
      

  5.   

    servlet的forward 可以转发请求也可以重定向
    请求中可以带参数,也就是你说的响应对象了
      

  6.   

    redirect = 将请求地址进行请求,服务器接收请求再发往webService(servlet或其他)
    redirect = 2次对服务器的请求(之前一次+redirect后的一次),将丢失httpRequest中的内容,并且地址栏地址会变
    forward = webService中的转向,比如从一个视图(jsp)转到另一个视图(jsp),或是一个servletClass转到其他servletClass,未发生再次请求,地址栏不变个人理解如此,有误请指正。
      

  7.   

    forward 是服务器的跳转。也就是保存了请求和相应。在内部跳转。