手拉手入门Servlet转发与重定向

简介: 转发与重定向的区别在Web应用中通过两种方式,可以完成资源的跳转转发、重定向

转发与重定向的区别

在Web应用中通过两种方式,可以完成资源的跳转

转发、重定向

//转发的是一次请求

//request.getRequestDispatcher("/list").forward(request,response);

//重定向                    根路径(项目名)+url-pattern

response.sendRedirect("/ServletWeb/list");



转发是一次请求,最终请求结束之后。浏览器地址栏上还是原来的地址


转发

转发是一次请求,最终请求结束之后。浏览器地址栏上还是原来的地址

转发是由web服务器完成

request.getRequestDispatcher("/list").forward(request,response);

当调用forward(); 方法时,会将当前的request和response对象传递给下一个servlet

重新定方向,(重定向时的路径需要以项目名开始):浏览器自发向服务器发送全新的请求


重定向

重新定方向,(重定向时的路径需要以项目名开始):浏览器自发向服务器发送全新的请求

重定向是由浏览器完成。

重定向发送的是get请求

response.sendRedirect(项目根路径+url-pattern);

response.sendRedirect("/ServletWeb/list");

//动态获取根路径(项目名称)

response.sendRedirect(request.getContextPath()+"/error.html");

什么时候使用转发和什么时候使用重定向

如果上一个Servlet当中向request域当中绑定了数据,向从下一个Servler当中把数据从request域里面取出来,则使用转发机制


剩下的所有请求均使用重定向。


转发servlet类


6.png

public class ServletA extends HttpServlet {

   @Override

   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       //使用Servlet转发机制。执行ServletA后,跳转至ServletB,调用请求转发器,将request,response参数传递给另一个HttpServlet子类

  request.getRequestDispatcher("/servletB").forward(request,response);

   }

}

public class ServletB extends HttpServlet {

   @Override

   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       //获取系统当前时间

       Date nowTime =new Date();

       //向request域 中绑定数据

       request.setAttribute("NowTime",nowTime);

       //从request域 获取数据

       Object obj = request.getAttribute("NowTime");

       response.setContentType("text/html;charset=utf-8");

       response.setCharacterEncoding("utf-8");

       PrintWriter out = response.getWriter();

       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");

       String timeStr = sdf.format((Date)obj);

       out.print("当前时间: "+ timeStr);

   }

}

5.png



转发html页面

//既可以转发Servlet类也可以转发html(属于Web容器当中合法的资源都可以转发)

request.getRequestDispatcher("/share.html").forward(request,response);


4.png

如有错误请指正,谢谢

目录
相关文章
|
2月前
|
负载均衡
Servlet 教程 之 Servlet 网页重定向 1
Servlet教程展示了如何实现网页重定向。使用`HttpServletResponse`的`sendRedirect()`方法或结合`setStatus()`和`setHeader()`可将请求转向新位置。示例代码创建了一个Servlet,名为`PageRedirect`,在接收到请求时重定向至百度首页。配置`web.xml`后,通过访问`http://localhost:8080/PageRedirect`即可触发重定向。
26 6
|
10月前
|
存储 应用服务中间件 数据库
Servlet请求转发和重定向
Servlet请求转发和重定向
136 0
|
10月前
|
应用服务中间件 API
JavaWeb 速通Servlet(请求转发和请求重定向)
JavaWeb——HttpServletRequest 和 HttpServletResponse 内容分享。
141 0
|
11月前
|
应用服务中间件 Windows
Java-Servlet技术入门笔记-3
五、HttpServletResponse类 1、作用 HttpServletResponse类和HttpServletRequest类一样,每次请求进来,Tomcat服务器都会创建一个Response对象传递给Servlet程序去使用。HttpServletRequest表示请求过来的信息,HttpServletResponse表示所有响应的信息。我们如果需要设置返回给客户端的信息,都可以通过它来设置。
|
11月前
|
XML 存储 前端开发
Java-Servlet技术入门笔记-2
三、ServletContext类 1、什么是ServletContext 代表整个web工程,可以与程序的容器(Tomcat服务器)通信
|
11月前
|
XML 小程序 Java
Java-Servlet技术入门笔记-1
一、Servlet技术 1、什么是Servlet Servlet是JaveEE规范之一,规范就是接口 Servlet是JavaWeb三大组件之一。三大组件分别是:Servlet程序、Filter过滤器、Listener监听器 Servlet是运行在服务器上的一个java小程序,它可以接收客户端发送来的请求,并响应数据给客户端 l
|
11月前
|
XML 存储 前端开发
Servlet技术入门(视频学习笔记)-2
2、ServletContext类的四大作用 获取web.xml中配置的上下文参数context-param 获取当前工程路径,格式:/工程路径 获取工程部署在服务器硬盘上的绝对路径
|
11月前
|
小程序 Java 应用服务中间件
Servlet技术入门(视频学习笔记)-1
一、Servlet技术 1、什么是Servlet Servlet是JaveEE规范之一,规范就是接口 Servlet是JavaWeb三大组件之一。三大组件分别是:Servlet程序、Filter过滤器、Listener监听器 Servlet是运行在服务器上的一个java小程序,它可以接收客户端发送来的请求,并响应数据给客户端
QGS
|
Java
浅谈入门Servlet注解式开发
Servlet3.0版本之后,推出了Servlet基于注解式开发。
QGS
68 0
QGS
|
XML JavaScript 前端开发
手搭手入门纯Servlet+JSP+Mybatis+Tomcat9实现Web更删改查
Servlet对象的生命周期 Servlet对象的生命周期是由Tomcat服务器(中间件)全权负责的。 Tomcat服务器(中间件)有通常被称为WEB容器。
QGS
185 0
手搭手入门纯Servlet+JSP+Mybatis+Tomcat9实现Web更删改查