jsp中 RequestDispatcher接口的两种跳转:forward()和include()
2023-09-11 14:22:24 时间
在web程序中,经常是由多个Servlet来完成请求.RequestDispatcher接口就是为了多个Servlet之间的调整而实现的.该接口可以用httpSerbletRequest的getRequestDispatcher()方法取得.调用时指定跳转的URL地址即可完成跳转动作.RequestDispatcher接口有两种方法实现跳转
一.include方法
本示例不需要前台页面,直接通过地址访问.
IncludeMethod.java代码
1 package com.gys; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.RequestDispatcher; 7 import javax.servlet.ServletException; 8 import javax.servlet.annotation.WebServlet; 9 import javax.servlet.http.HttpServlet; 10 import javax.servlet.http.HttpServletRequest; 11 import javax.servlet.http.HttpServletResponse; 12 13 @WebServlet( 14 name="demo", 15 urlPatterns={"/include"} 16 ) 17 public class IncludeMethod extends HttpServlet{ 18 @Override 19 protected void doPost(HttpServletRequest req, HttpServletResponse resp) 20 throws ServletException, IOException { 21 doGet(req, resp); 22 } 23 @Override 24 protected void doGet(HttpServletRequest request, HttpServletResponse response) 25 throws ServletException, IOException { 26 response.setContentType("text/html;charset=utf-8"); 27 PrintWriter out=response.getWriter(); 28 out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); 29 out.println("<HTML>"); 30 out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); 31 out.println(" <BODY>"); 32 out.print(" <h1>第一个servlet</h1>"); 33 RequestDispatcher dispatcher=request.getRequestDispatcher("/includeSecond"); 34 dispatcher.include(request, response); 35 out.println(" </BODY>"); 36 out.println("</HTML>"); 37 out.flush(); 38 out.close(); 39 } 40 }
IncludeMethod2.java
1 package com.gys; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.annotation.WebServlet; 8 import javax.servlet.http.HttpServlet; 9 import javax.servlet.http.HttpServletRequest; 10 import javax.servlet.http.HttpServletResponse; 11 12 13 @WebServlet( 14 name="include2", 15 urlPatterns={"/includeSecond"} 16 ) 17 public class IncludeMethod2 extends HttpServlet{ 18 @Override 19 protected void doPost(HttpServletRequest req, HttpServletResponse resp) 20 throws ServletException, IOException { 21 doGet(req, resp); 22 } 23 @Override 24 protected void doGet(HttpServletRequest request, HttpServletResponse response) 25 throws ServletException, IOException { 26 response.setContentType("text/html;charset=utf-8"); 27 PrintWriter out=response.getWriter(); 28 out.println("这是第二个servlet(被包涵在第一个servlet里面)"); 29 } 30 }
测试结果:
二.forward()
forwardMethod.java代码
1 package com.gys2; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.annotation.WebServlet; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 @WebServlet( 12 name="forwardMethod", 13 urlPatterns={"/test"} 14 ) 15 16 public class forwardMethod extends HttpServlet { 17 @Override 18 protected void doPost(HttpServletRequest req, HttpServletResponse resp) 19 throws ServletException, IOException { 20 doGet(req, resp); 21 } 22 @Override 23 protected void doGet(HttpServletRequest request, HttpServletResponse response) 24 throws ServletException, IOException { 25 request.getRequestDispatcher("/test.html").forward(request, response); 26 } 27 }
运行结果是这个样子的:
相关文章
- JAVA-JSP注释
- JAVA-JSP声明语句
- JAVA-一个简单的JSP程序(HelloWorld)
- 新闻发布项目——后台JSP界面adminManage/addCategory.jsp
- 新闻发布项目——后台JSP界面adminManage/adminIndex.jsp
- 新闻发布项目——后台JSP界面adminManage/editNews.jsp
- 新闻发布项目——后台JSP界面adminManage/editNews.jsp
- 新闻发布项目——后台JSP界面adminManage/manageTopic.jsp
- 新闻发布项目——后台JSP界面adminManage/manageTopic.jsp
- 新闻发布项目——后台JSP界面adminManage/modifyNews.jsp
- 新闻发布项目——后台JSP界面adminManage/readNews.jsp
- 新闻发布项目——前台JSP界面newspages/news_read.jsp
- jsp实现简单的分页
- jsp实现邮件的发送
- Jsp页面里引入一个javascript文件,在jsp的onclick里怎么添加脚本文件里的方法
- jstl标签库使用报错index_jsp.java找不到问题
- jsp学习--JavaBean定义和在Jsp中使用JavaBean
- servlet和jsp中间的交互
- 使用jsp打印HTTP请求头部所有字段的值
- jsp文件的请求是如何被服务器的JSP容器转换成静态网页的
- JSP useBean动作
- 认识一下什么是JSP
- jsp中如何用jstl实现if(){}else if(){}else{}
- JSP 获得Spring 注射对象
- JSP通用7动作命令
- 012-Spring Boot web【一】web项目搭建、请求参数、RestController、使用jsp、freemarker,web容器tomcat和jetty
- 考虑下面两个JSP文件代码片断: test1.jsp:
- 项目实战:JSP应用开发_接口:接口的实现
- JSP接口浅析
- JSP — 如何设置jsp中cookie的过期时间