网页播放视频 网站开发,wordpress建外贸站,做网站的实施过程,wordpress更新4.9一、转发的概念
一个Web组件#xff08;Servlet/JSP#xff09;将未完成的处理通过容器转交给另外一个Web组件继续处理#xff0c;转发 的各个组件会共享Request和Response对象。
二、代码演示
1、编写转发界面 创建空工程#xff0c;在工程中创建javaEE模块 配置中设置…一、转发的概念
一个Web组件Servlet/JSP将未完成的处理通过容器转交给另外一个Web组件继续处理转发 的各个组件会共享Request和Response对象。
二、代码演示
1、编写转发界面 创建空工程在工程中创建javaEE模块 配置中设置tomcat的部署 编写register界面 !DOCTYPE html
html langen
headmeta charsetUTF-8title转发测试/title
/head
bodyform actionforwardServlet methodpostinput typesubmit value转发/form
/body
/html2、编写Servlet 转发 编写servlet ForwardServlet package com.example.forward_demo03;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;WebServlet(name ForwardServlet, urlPatterns /forwardServlet)
public class ForwardServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(接收到了转发请求!);//获取另一个web组件让它进行转发RequestDispatcher requestDispatcher request.getRequestDispatcher(/targetServlet);requestDispatcher.forward(request, response);}
} 这里看到需要再编写一个 targetServlet处理转发请求。它会执行真正的转发请求。 targetServlet package com.example.forward_demo03;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;WebServlet(name TargetServlet, value /targetServlet)
public class TargetServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(接收到了传递过来的转发请求);response.setContentType(text/html;charsetutf-8);PrintWriter writer response.getWriter();writer.write(h1 转发成功 /h1);}
} 部署测试 运行tomcat 访问转发界面发送转发请求 转发请求发送浏览器界面显示 控制台输出显示 F12查看调试信息 可以看到只进行一次请求。
3、转发的其他功能
绑定数据到Request对象 修改ForwardServlet package com.example.forward_demo03;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;WebServlet(name ForwardServlet, urlPatterns /forwardServlet)
public class ForwardServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(接收到了转发请求!);request.setAttribute(key1, value1);//获取另一个web组件让它进行转发RequestDispatcher requestDispatcher request.getRequestDispatcher(/targetServlet);requestDispatcher.forward(request, response);}
} 修改TargetServlet package com.example.forward_demo03;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;WebServlet(name TargetServlet, value /targetServlet)
public class TargetServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println(接收到了传递过来的转发请求);Object value request.getAttribute(key1);System.out.println(获取到的转发来的key1对应的值 value);response.setContentType(text/html;charsetutf-8);PrintWriter writer response.getWriter();writer.write(h1 转发成功 /h1);}
} 测试结果
从这也可以看出转发的request用的是同一个。
三、转发和重定向的比较
转发重定向转发/重定向之后浏览器地址栏的URL会不会发生改变不会会转发/重定向过程中是否共享Request对象是否转发/重定向的URL可不可以是其它项目工程不可以可以