码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-04-04 18:17:15      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

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

运行结果是这个样子的:

技术分享

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

标签:

原文地址:http://www.cnblogs.com/guoyansi19900907/p/4392392.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!