国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - servlet轉發、包含詳解(七)

servlet轉發、包含詳解(七)

2021-01-14 15:41柳暗花明睡一覺 Java教程

這篇文章主要為大家詳細介紹了servlet轉發、包含的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文為大家介紹了servlet轉發、servlet包含,供大家參考,具體內容如下

1.什么是servlet轉發?

  servlet將用戶的請求通過一組servlet來處理,每個servlet都有自己特定的職責,當該servlet完成自己的工作后將請求轉發到下一個servlet來處理,這種通過不同servelet相互轉發請求來完成對某個請求的處理過程就叫做servlet轉發。

2.什么是servlet包含?

  servlet包含就是源servlet將其他web組件(servlet,html,jsp),生成的結果包含到自己的結果中。

3.為什么需要servlet轉發和包含?

  servlet對象是由Servlet容器創建,Servlet對象的Service()方法是由servlet容器調用,servlet之間是不允許相互調用(servlet API 2.1以前版本可以)。但是我們又需要通過多個servlet組件協調完成任務,同時方便代碼維護管理,提高開發效率。這樣就可以需要servlet轉發和包含的技術支持。

4、轉發和包含的相同點

 ?。?)都是對同一個請求對象處理,源組件和目標組件共享同一個ServletRequest對象和ServletResponse對象。

 ?。?)目標組件都可以是servlet,jsp,html。

 ?。?)都依賴javax,servlet.RequestDispatcher 接口。

5.RequestDIspatcher 對象

  該接口表示請求分發器

 ?。?)獲取RequestDispatcher對象方法

    調用ServletContext的getRequestDispather(String path)方法獲得。

    調用ServletRequest的getRequestDispather(String path)方法獲得。

 ?。?)兩種方法的區別

    ServletContext調用方法的參數必須為絕對路徑,而ServletRequest調用方法參數可以是絕對路徑也可以是相對路徑。

6.請求轉發案例

CheckServlet 類用于處理用戶請求參數。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.learn;
 
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
 
/**
 * Created by Administrator on 2017/09/26.
 */
public class CheckServlet extends HttpServlet{
 
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 
    String userName = req.getParameter("name");
    String message = "";
 
    if(userName == null){
      message = "please input your name";
    } else {
      message = userName;
    }
    req.setAttribute("mess",message);
    RequestDispatcher requestDispatcher = getServletContext().getRequestDispatcher("/out");
 
    PrintWriter out = resp.getWriter();
    out.print("before forward ");
    System.out.println("before forward");
 
    requestDispatcher.forward(req,resp);
 
    out.print("after forward");
    System.out.println("after forward");
 
    out.close();
  }
 
 
}

OutServlet  用于輸出處理結果

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.learn;
 
import org.json.HTTP;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
 
/**
 * Created by Administrator on 2017/09/26.
 */
public class OutServlet extends HttpServlet {
 
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 
    String message = (String) req.getAttribute("mess");
 
    PrintWriter printWriter = resp.getWriter();
    printWriter.print(message);
    printWriter.close();
 
  }
}

注意:   1.在轉發之前不要提交響應結果。

    2.轉發過程中,源組件的響應結果不會返回,只會返回目標組件的響應結果。 

web.xml配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<servlet>
   <servlet-name>check</servlet-name>
   <servlet-class>com.learn.CheckServlet</servlet-class>
 </servlet>
 <servlet-mapping>
   <servlet-name>check</servlet-name>
   <url-pattern>/check</url-pattern>
 </servlet-mapping>
 
 <servlet>
   <servlet-name>out</servlet-name>
   <servlet-class>com.learn.OutServlet</servlet-class>
 </servlet>
 <servlet-mapping>
   <servlet-name>out</servlet-name>
   <url-pattern>/out</url-pattern>
 </servlet-mapping>

7.包含(include)案例 

MainServlet  用于包含其他組件,并返回響應結果

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.learn;
 
import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
 
/**
 * Created by Administrator on 2017/09/26.
 */
public class MainServlet extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    resp.setContentType("text/html");
 
    PrintWriter out = resp.getWriter();
    out.println("<html><head><title>mainServlet</title></head>");
    out.println("<body>");
 
    ServletContext servletContext = getServletContext();
 
    RequestDispatcher headDisPatcher = servletContext.getRequestDispatcher("/header.html");
    RequestDispatcher greetDisPatcher = servletContext.getRequestDispatcher("/greet");
    RequestDispatcher footeDisPatcher = servletContext.getRequestDispatcher("/footer.html");
 
    headDisPatcher.include(req,resp);
    greetDisPatcher.include(req,resp);
    footeDisPatcher.include(req,resp);
 
    out.print("</body></html>");
    out.close();
 
 
  }
}

header.html

?
1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>header</title>
</head>
<body>
<font size="6">Welcome to ab</font>
</body>
</html>

GreetServlet

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.learn;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
 
/**
 * Created by Administrator on 2017/09/26.
 */
public class GreetServlet extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 
    PrintWriter out = resp.getWriter();
 
    out.print("hi! "+req.getParameter("name")+", <p>");
    out.close();
  }
}

footer.html

?
1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>footer</title>
</head>
<body>
<span>Thanks for stopping</span>
</body>
</html>

web.xm配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<servlet>
 <servlet-name>main</servlet-name>
 <servlet-class>com.learn.MainServlet</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>main</servlet-name>
 <url-pattern>/main</url-pattern>
</servlet-mapping>
 
<servlet>
 <servlet-name>greet</servlet-name>
 <servlet-class>com.learn.GreetServlet</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>greet</servlet-name>
 <url-pattern>/greet</url-pattern>
</servlet-mapping>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/wwyx-xi/p/7599237.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美一区二区三区的 | 97人人草| 日韩欧美中文字幕一区二区三区 | 国产伦精品一区二区三区高清 | 国产欧美一区二区精品久久 | 日本一区二区免费在线观看 | 国产精品久久国产精品 | 亚洲欧美在线视频 | 在线观看特色大片免费网站 | 中文字幕国产视频 | 国产精品久久久久aaaa九色 | 精品国产91 | 国产毛片视频 | 国内精品嫩模av私拍在线观看 | 国产一区亚洲 | 精品久久久久久久久久 | 一区二区三区久久久 | 日韩av在线一区 | 婷婷色综合 | 亚洲乱码一区二区三区在线观看 | 四虎免费视频 | 国产精品毛片久久久久久 | 久久免费精品 | 久操免费视频 | 伊人久久国产 | 91在线影视 | 日日操夜| 一区二区三区四区日韩 | 97超碰免费 | 91亚洲国产成人久久精品网站 | 午夜成人免费视频 | 91在线看 | 国产精品一区二区三区免费 | 激情五月综合 | 亚洲成人在线观看视频 | 欧美精品一二三区 | 中文字幕一区在线 | 久久九 | 亚洲精品免费看 | 日韩成人影片 | 午夜婷婷丁香 |