转发和重定向都是服务器端将请求转发到另一个资源,但是它们有不同的处理方式和使用场景:
-
转发是在服务器内部完成的,客户端浏览器不知道服务器端进行了转发操作,浏览器中的 URL 地址仍然是原始的 URL 地址。转发可以访问转发前的请求信息,比如 request 参数等,也可以访问转发后的资源信息,比如 request 参数等。转发一般通过request.getRequestDispatcher("URL").forward(request,response)来实现。
-
重定向是在客户端进行的,客户端浏览器能够看到新的 URL 地址,因为客户端浏览器必须重新发送新的请求。重定向不能访问转发之前的请求的参数,因为新的请求地址和原始的请求地址不同。重定向一般通过response.sendRedirect("URL")来实现。
- 自定义属性代码演示:
在Servlet中,我们可以使用setAttribute()方法去设置自定义属性,使用getAttribute()方法可以获取属性值。
在JSP中,可以使用<%= request.getAttribute("name") %>获取自定义属性值