jsp中 RequestDispatcher接口的两种跳转:forward()和include()

在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 }

运行结果是这个样子的:

时间: 2024-12-23 22:06:51

jsp中 RequestDispatcher接口的两种跳转:forward()和include()的相关文章

jsp中头的导入两种方式区别

1.<jsp:include page="top.jsp">先将top.jsp中的java脚本和jsp指令执行完毕以后再讲top.jsp页面加入面中 2.<%@ include file="top.jsp"%>静态读取:则是将top.jsp的整个页面不加解析(无论是脚本还是指令)统统读入到引用页面中,然后引用页面一起进行解析(即开始执行脚本和指令) 3.区别:其实上边的两条就是区别,但是需要注意的是用<%@ include file=&

jsp中的两种跳转方式分别是?有什么区别?

在JSP中跳转有两种方式 forward跳转:<jsp:forward page ="跳转页面地址"> response跳转:response.sendRedirect("跳转页面地址"); 两种跳转的区别如下 forward跳转: 服务器端跳转,地址栏不改变. 执行到跳转语句后马上执行跳转,之后的代码不再执行(跳转之前一定要释放全部资源). request设置的属性在跳转后的页面仍然可以使用. response跳转: 客户端跳转,地址栏改变. 所有代码

Servlet 两种跳转方式

response.sendRedirect , // 重定向,服务器端将uri返回到客户端,客户端再次发送请求. RequestDispatcher  rd  =  getServletContext().getRequestDispatcher("/login.jsp"); rd.forward(request,response);  //跳转,直接从服务器端访问 uri Servlet 两种跳转方式

实验--使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用(杨光)

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 攥写人:杨光  学号:20135233 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验要求: 选择一个系统调用(13号系统调用time除外),系统调用列表参见http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/sys

JSP下载txt 和 Excel两种文件

JSP下载txt 和 Excel两种文件 jsp 下载txt文件和excel文件 jsp 下载txt文件和excel文件 最近做了个用jsp下载的页面 将代码贴出来 权作记录吧 1 下载txt文件 这个花了我不少时间 原因是用ie下载txt文件时是在页面中直接打开了文件.虽然查了一些资料,也看了别人的解决方案,可还是解决不了问题,最后发现是一个字母惹的祸:少写一个字母 嘿嘿 够马虎!!! 代码如下: OutputStream o=response.getOutputStream();   byt

java中实现多线程的两种基本方法

java中实现多线程有两种基本方法,一种是继承Thread, 另一种是实现Runnable接口. 但是因为java中子类只能继承一个父类,如果采用继承Thread类,就不能继承其他类,很受限制. 以下是采用继承Thread类的例子: public class MyThreadTest{ public static void main(String[] args){ MyThread amythread1=new MyThread("my thread 1"); MyThread amy

dll编程导出接口的两种方法

前言: 在vc中到处dll有两种方法: 第一种:是通过模块定义def文件,把要导出的函数接口放在里面,而def文件为链接器提供有关程序的到处,属性等方面的信息. 第二种:在函数声明中加上__declspec(dllexport): 第一种方法示例: 先构建一个名为:mousehook_dll的dll项目: 在hookLoad.h种声明两个接口函数: #pragma once BOOL StartHookEv(HWND hWnd); VOID StopHookEv(void) ; 在hookLoa

java调用matlab函数接口的两种方案

Java 调用matlab 函数接口 Java调用matlab函数接口有两种方式: l 一种是通过matlab把函数打成jar包: l 一种是把matlab编译成dll后,用C++再封装成java能支持的数据类型的dll. 注意:不论用这两种方式中的哪一种,最终部署时都需要matlab环境(MCR,在matlab安装路径下有). 1. 方式一:matlab直接打jar包 1.1. 利用matlab自带工具打jar包 1.1.1. 建立jar包 在matlab的Commond Window中输入d

api暴露的接口有两种方法

接口检测是否正常,可以使用测试工具 postman insomnia 注意! express中一个路由 即 一个接口 api暴露的接口有两种方法 一.使用模板进行暴露,但要将数据做字符串转化,然后使用ejs的非转义输出 router.get('/',function(req,res,next){ res.render('main'{ //main 路由 mine:JSON.stringify({ ret:true, 认证权限 username:'ni hao' }) }) }) 二.使用json