网站服务器建设方法,百度云怎么做网站空间,中国银行全球门户网站,简单html网站模板文章目录1. 前言2. 实战案例3. 特点1. 前言
请求转发是一种在服务器内部的资源跳转方式#xff0c;如图#xff1a; 上图的大致过程为#xff0c;浏览器发送请求给服务器#xff0c;服务器中 a 资源接收到请求#xff0c;资源 a 处理完请求后将请求发送给资源 b#xff…
文章目录1. 前言2. 实战案例3. 特点1. 前言
请求转发是一种在服务器内部的资源跳转方式如图 上图的大致过程为浏览器发送请求给服务器服务器中 a 资源接收到请求资源 a 处理完请求后将请求发送给资源 b资源 b 处理完请求以后将结果响应给浏览器。其中请求从资源a到资源b的过程就叫做请求转发。
请求转发的实现方式如下
request.getRequestDispatcher(资源b路径).foword(request,response);2. 实战案例
下面练习请求转发。
第一步创建一个 RequestDemo 类接收 /demo 的请求在 doGet() 方法中打印。
WebServlet(/demo)
public class ServletDemo extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(demo...);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}第二步创建一个 RequestDemo2 类接收 /demo2 的请求在 doGet() 方法中打印。
WebServlet(/demo2)
public class ServletDemo2 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(demo2...);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}第三步在 RequestDemo 类中使用请求转发到 /demo2 资源。
request.getRequestDispatcher(/demo2).forward(request,response);第四步测试
启动服务器在浏览器中访问 http://localhost:8080/servlet-project/demo。
此时控制台执行结果 控制台除了打印 /demo 的内容还打印了 /demo2 的内容说明请求成功转发到了 /demo2 。那么将请求从 /demo 转发到 /demo2 时如何将数据传递给 /demo2 呢此时需要使用 request 对象提供的方法
存储数据到 request 域范围数据存储在 request 对象中
void setAttribute(String name,Object o);根据 key 获取值
Object getAttribute(String name);根据 key 删除该键值对
void removeAttribute(String name);下面练习在请求转发时数据的传递。 在 RequestDemo 的 doGet() 方法中转发请求之前将数据存入 request 域对象中。 在 RequestDemo2 的 doGet 方法中从 request 域对象中获取数据并将数据打印到控制台。 测试
第一步修改 RequestDemo 中的方法
WebServlet(/demo)
public class ServletDemo extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(demo...);request.setAttribute(msg,hello);request.getRequestDispatcher(/demo2).forward(request,response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}第二步修改 RequestDemo2 中的方法
WebServlet(/demo2)
public class ServletDemo2 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(demo2...);Object msg request.getAttribute(msg);System.out.println(msg);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}第三步重启服务器访问 http://localhost:8080/servlet-project/demo此时控制台输出 此时就实现了在转发多个资源之间的数据共享。
3. 特点
在请求转发过程中服务器内部发生了资源的跳转所以浏览器的地址栏路径不会发生变化。
请求跳转只能转发到当前服务器的内部资源不能从一个服务器通过转发跳转到另一台服务器。
请求转发可以在转发资源之间实现数据共享但是这只是一次请求。 你问我青春还剩几年我的回答是趁现在正当时。身边朋友都在问我怎样学好一门编程语言怎样学好Java怎样通过 Java 找到一份满意的工作推荐学习此专栏Java编程基础教程系列零基础小白搬砖逆袭
下期见。