1. 程式人生 > 其它 >JavaWeb14.4【servlet&http&request:Request的其他功能】

JavaWeb14.4【servlet&http&request:Request的其他功能】

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 
 9     <form action="/day14/RequestDemo4" method="post">
10         <input type="text" placeholder="請輸入使用者名稱" name="username"
><br> 11 <input type="text" placeholder="請輸入密碼" name="password"><br> 12 <input type="checkbox" name="hobby" value="game">遊戲 13 <input type="checkbox" name="hobby" value="study">學習 14 <br> 15 <input type="submit" value="註冊"
> 16 </form> 17 18 </body> 19 </html>
 1 package com.haifei.web.request;
 2 
 3 import javax.servlet.ServletException;
 4 import javax.servlet.annotation.WebServlet;
 5 import javax.servlet.http.HttpServlet;
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
8 import java.io.IOException; 9 import java.util.Enumeration; 10 import java.util.Map; 11 import java.util.Set; 12 13 /** 14 * request的其他功能 之 獲取請求引數通用方式 15 */ 16 @WebServlet("/RequestDemo4") 17 public class RequestDemo4 extends HttpServlet { 18 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 19 //post 獲取請求引數 20 21 //1 根據引數名稱獲取引數值 22 String username = request.getParameter("username"); 23 /*System.out.println("post"); 24 System.out.println(username);*/ 25 /* 26 <form action="/day14/RequestDemo4" method="post"> 27 http://localhost:8080/day14/regist2.html 28 29 http://localhost:8080/day14/RequestDemo4 30 31 post 32 yubaby 33 */ 34 35 //2 根據引數名稱獲取引數值的陣列 36 String[] hobbies = request.getParameterValues("hobby"); //獲取勾選的複選框的值 37 /*for (String hobby: hobbies){ 38 System.out.println(hobby); 39 }*/ 40 41 //3 獲取所有請求的引數名稱 42 Enumeration<String> parameterNames = request.getParameterNames(); 43 /*while (parameterNames.hasMoreElements()){ 44 String name = parameterNames.nextElement(); 45 System.out.println(name); 46 String value = request.getParameter(name); 47 System.out.println(value); 48 System.out.println("-------------------"); 49 }*/ 50 51 //4 獲取所有引數的map集合 52 Map<String, String[]> parameterMap = request.getParameterMap(); 53 Set<String> keySet = parameterMap.keySet(); 54 for (String name : keySet) { //iter+回車 快速生成foreach 55 System.out.println(name); 56 String[] values = parameterMap.get(name); 57 for (String value : values) { 58 System.out.println(value); 59 } 60 System.out.println("======================"); 61 } 62 } 63 64 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 65 66 /*//get 獲取請求引數 67 68 //1 根據引數名稱獲取引數值 69 String username = request.getParameter("username"); 70 System.out.println("get"); 71 System.out.println(username);*/ 72 73 /* 74 <form action="/day14/RequestDemo4" method="get"> 75 http://localhost:8080/day14/regist2.html 76 77 http://localhost:8080/day14/RequestDemo4?username=haifei&password=222 78 79 get 80 haifei 81 */ 82 83 //PS 既然在獲取請求引數這方面,doGet和doPost中的程式碼通用,那麼: 84 this.doPost(request, response); 85 } 86 }
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 
 9     <form action="/day14/RequestDemo5" method="post">
10         <input type="text" placeholder="請輸入使用者名稱" name="username"><br>
11         <input type="text" placeholder="請輸入密碼" name="password"><br>
12         <input type="checkbox" name="hobby" value="game">遊戲
13         <input type="checkbox" name="hobby" value="study">學習
14         <br>
15         <input type="submit" value="註冊">
16     </form>
17 
18 </body>
19 </html>
 1 package com.haifei.web.request;
 2 
 3 import javax.servlet.ServletException;
 4 import javax.servlet.annotation.WebServlet;
 5 import javax.servlet.http.HttpServlet;
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 import java.io.IOException;
 9 
10 /**
11  * request的其他功能 之 獲取請求引數通用方式
12  * 中文亂碼問題
13  */
14 @WebServlet("/RequestDemo5")
15 public class RequestDemo5 extends HttpServlet {
16     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
17         //設定流的編碼 解決post中文亂碼問題
18         request.setCharacterEncoding("utf-8");
19         String username = request.getParameter("username");
20         System.out.println(username);
21     }
22 
23     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
24         //tomcat8及後已經將get方式亂碼問題解決了
25         this.doPost(request, response);
26     }
27 }
 1 package com.haifei.web.request;
 2 
 3 import javax.servlet.RequestDispatcher;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.annotation.WebServlet;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 import java.io.IOException;
10 
11 /**
12  * request的其他功能 之 請求轉發 和 資料共享
13  */
14 @WebServlet("/RequestDemo6")
15 public class RequestDemo6 extends HttpServlet {
16     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
17         System.out.println("RequestDemo6被訪問了。。。");
18 
19         //轉發之前儲存資料到request域中
20         request.setAttribute("msg", "hello");  //鍵值對
21 
22         // 轉發資源 到RequestDemo7
23         /*RequestDispatcher requestDispatcher = request.getRequestDispatcher("/RequestDemo7");
24         requestDispatcher.forward(request, response);*/
25         request.getRequestDispatcher("/RequestDemo7").forward(request, response);
26         //request.getRequestDispatcher("http://www.itcast.cn").forward(request,response); //轉發失敗404 只能轉發到當前伺服器內部資源中
27 
28         /*
29         http://localhost:8080/day14/RequestDemo6
30 
31         RequestDemo6被訪問了。。。
32         RequestDemo7被訪問了。。。
33          */
34     }
35 
36     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
37         this.doPost(request, response);
38     }
39 }
 1 package com.haifei.web.request;
 2 
 3 import javax.servlet.ServletException;
 4 import javax.servlet.annotation.WebServlet;
 5 import javax.servlet.http.HttpServlet;
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 import java.io.IOException;
 9 
10 /**
11  * request的其他功能 之 請求轉發 和 資料共享
12  */
13 @WebServlet("/RequestDemo7")
14 public class RequestDemo7 extends HttpServlet {
15     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
16         System.out.println("RequestDemo7被訪問了。。。");
17 
18         //獲取來自RequestDemo6的資料
19         Object msg = request.getAttribute("msg");
20         System.out.println(msg); //hello
21     }
22 
23     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
24         this.doPost(request, response);
25     }
26 }
 1 package com.haifei.web.request;
 2 
 3 import javax.servlet.ServletContext;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.annotation.WebServlet;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 import java.io.IOException;
10 
11 /**
12  * request的其他功能 之 獲取ServletContext
13  */
14 @WebServlet("/RequestDemo8")
15 public class RequestDemo8 extends HttpServlet {
16     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
17         ServletContext servletContext = request.getServletContext();
18         System.out.println(servletContext); //org.apache.catalina.core.ApplicationContextFacade@666293eb
19     }
20 
21     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
22         this.doPost(request, response);
23     }
24 }