客户端跳转与服务器端跳转

java中客户端跳转使用的是:

req.getSession().setAttribute("name", "李兴华");//设置session属性
req.setAttribute("info", "MLDNJAVA");//设置request属性
resp.sendRedirect("servlet/get_info.jsp");

调用的是响应对象的sendRedirect方法。

服务器端跳转使用的是:

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.getSession().setAttribute("name", "李兴华"); // 设置session属性
req.setAttribute("info", "MLDNJAVA"); // 设置request属性
//实例化RequestDispatcher对象,同时指定跳转路径
RequestDispatcher rd = req.getRequestDispatcher("servlet/get_info.jsp");
rd.forward(req, resp); // 服务器跳转
}

是实例化RequestDispatcher对象,然后调用其forward方法。

差别是客户端跳转只能获取session属性值,而不能获取request属性设置的值,并且浏览器地址会发生变化。而服务器端跳转可以获取到request属性值,并且页面地址不会发生变化。

原文地址:https://www.cnblogs.com/xingmeng/p/3021453.html