请求转发与重定向
- 请求转发是一个请求,而重定向是两个请求
- 请求转发,是使用RequestDispatcher来完成,重定向使用response.sendRedirect()
- 请求转发的路径都是服务器端路径,而重定向是客户端路径,需要给出应用名称
- 请求转发在浏览器地址栏中的地址是第一个Servlet的路径,而重定向在地址栏中的地址是第二个请求的Servlet的路径
- 请求转发中的两个Servlet是可以共享request数据的,而重定向因为是两个请求,所以不能共享request数据
- 请求转发只能转发到本应用的其他Servlet,而重定向可以重定向到其他应用中。
request.getParameter()和request.getAttribute()
1. getParameter() 是获取客户端参数,它是从客户端传递给服务器的数据。
2. getAttribute() 是获取服务器端自己设置的数据,而不是客户端的数据。
3. request没有setParameter() 方法,不能自己设置参数,参数都由客户端传递
4. request有setAttribute() 方法,在getAttribute()之前,需要先setAttribute()才能获取到。
5. getAttribute()和setAttribute() 是用来在请求转发和请求包含中的多个Servlet中共享数据。
路径
1. 客户端路径需要给出应用名称,例如:/day05_1/AServlet
2. 服务器端路径无需给出应用名称,例如:/AServlet
3. 重定向是客户端路径,需要加上应用名称