Servlet-请求转发和响应重定向
Servlet-请求转发和响应重定向
请求转发和响应重定向是web应用中间接访问项目资源的两种手段,也是Servlet控制页面跳转的两种手段
请求转发通过HttpServletRequest实现,响应重定向通过HttpServletResponse实现
请求转发*
- 请求转发通过HttpServletRequest对象获取请求转发器实现
- 请求转发是服务器内部的行为,对客户端是屏蔽的
- 客户端只发送了一次请求,客户端地址栏不变
- 服务端只产生了一对请求和响应对象,这一对请求和响应对象会继续传递给下一资源
- 因为全程只有一个HttpServletRequest对象,所以请求参数可以传递,请求域中的数据也可以传递
- 请求转发可以转发给其他Servlet动态资源,也可也转发给一些静态资源以实现页面跳转,但不可以是外部资源
- 请求转发可以转发给WEB-INF下受保护的资源 在转发路径中写(WEB-INF/路经),也是访问WEB-INF下资源的唯一方式
getRequestDispatcher()(String var1)//获取转发器(参数是转发路经)
getRequestDispatcher()(String var1).forward(req, resp)//获取转发器后请求转发器做出转发动作
Dispatcher中文释义:调度
响应重定向*
-
响应重定向通过HttpServletResponse对象的sendRedirect方法实现
-
响应重定向是服务端通过302响应码和路经,告诉客户端自己去找其他资源,是在服务端提示下的,客户端的行为
-
客户端发送多次请求,客户端地址栏是要变化的
-
服务端产生了多对请求和响应对象,且请求和响应对象不会传给下一个资源
-
因为全程产生多个HttpServletRequest对象,所以请求参数不可以传递,请求域中的数据也不可以传递
-
重定向可以是其他Servlet动态资源,也可以是一些静态资源以实现页面跳转,也可以跳转到外部资源
-
重定向不可以到WEB-INF下受保护的资源
-
void sendRedirect(String var1) throws IOException//1. 设置响应状态码 2.设置响应头location的值(本地路经)
Redirect中文释义:重定向
重点:同样能够实现页面跳转,优先使用响应重定向