J2EE 请求重定向与请求转发

重定向:

@WebServlet("/ServletRedirect")
public class ServletRedirect extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.sendRedirect("http://www.baidu.com");
    }
}

请求转发:

public class ServletForword1 extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setAttribute("name", "cjj");
        request.setAttribute("password", 123);
        request.getRequestDispatcher("/ServletForword2").forward(request, response);
    }
}


public class ServletForword2 extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String result=request.getAttribute("name")+"   "+request.getAttribute("password");
        System.out.println(result);
    }
}

请求转发:
一个servlet里面处理逻辑, 将处理结果交给下一个Servlet(JSP)负责显示.

操作(代码):
    request.getRequestDispatcher("/EServlet").forward(request,response);

问题: 将转发与重定向做对比,有什么异同?

    1.浏览器一共发送了几个请求?
            重定向: 两次请求
            转发: 一次请求

    2.浏览器的地址发生变化吗?
            重定向:  会发生变化
            转发:  不会发生变化

    3.会改变请求方式吗?
            重定向:  未必.重定向的第2次请求一定是get.
            转发:  不会.    
    4.request域可不可以共享数据?
            重定向:  不可以,因为会产生两个request对象.
            转发:  可以. 因为是在一个请求范围内.使用的是同一个request对象.

转发的Servlet不可以向response的正文中添加任何内容.但是可以向响应头添加内容.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值