JavaWeb核心編程之(三.5)HTTP請求和接受表單數據


HTTP簡介
WEB瀏覽器與WEB拂去其之間的一問一答的交互過程, 必須遵循一定的規則,這個規則就是HTTP協議
HTTP是hypertext transfer protocol(超文本傳輸協議)的簡寫, 它是TCP/IP協議集中的一個應用層協議, 用於定義WEB瀏覽器與WEB服務器之間交換數據的過程以及數據本身的格式
HTTP協議的版本 HTTP/1.0 HTTP/1.1 HTTP-NG

HTTP的會話方式
四個步驟
1> 建立連接
2> 發出請求信息
3> 回送響應信息
4> 關閉連接

瀏覽器與WEB服務器之間的鏈接過程式短暫的, 每次鏈接只處理一個請求和響應. 對每一個頁面的訪問, 瀏覽器與WEB服務器都要建立一次單獨的連接.
瀏覽器到WEB服務器之間的所有通訊都是完全獨立分開的請求和響應對兒

 

創建項目testHttpForm  ---> package(com.xiaoan.test)  --> class(TestForm.java)

 1 package com.xiaoan.test;
 2 
 3 import java.io.IOException;
 4 import java.util.Arrays;
 5 import java.util.Enumeration;
 6 import java.util.Map;
 7 import java.util.Map.Entry;
 8 
 9 import javax.servlet.Servlet;
10 import javax.servlet.ServletConfig;
11 import javax.servlet.ServletException;
12 import javax.servlet.ServletRequest;
13 import javax.servlet.ServletResponse;
14 import javax.servlet.http.HttpServletRequest;
15 import javax.swing.plaf.synth.SynthSeparatorUI;
16 
17 public class TestForm implements Servlet{
18 
19     @Override
20     public void destroy() {
21         // TODO Auto-generated method stub
22         
23     }
24 
25     @Override
26     public ServletConfig getServletConfig() {
27         // TODO Auto-generated method stub
28         return null;
29     }
30 
31     @Override
32     public String getServletInfo() {
33         // TODO Auto-generated method stub
34         return null;
35     }
36 
37     @Override
38     public void init(ServletConfig arg0) throws ServletException {
39         // TODO Auto-generated method stub
40         
41     }
42 
43     @Override
44     public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
45         System.out.println("this is Servlet service function");
46         //1 獲取請求參數 k--v
47         String username = request.getParameter("username");
48         String password = request.getParameter("password");
49         System.out.println("username: " + username);
50         System.out.println("password: " + password);
51         //獲取請求參數 k -- v1,v2,v3   -  表單中checkbox類型數據
52         String[] reads = request.getParameterValues("read");
53         for(String read: reads){
54             System.out.println("-->read: " + read);
55         }
56         
57         //獲取所有的參數名
58         Enumeration<String> keys = request.getParameterNames();
59         
60         //獲取所有的請求參數 <k,v>
61         Map<String, String[]> params = request.getParameterMap();
62         for(Map.Entry<String, String[]> param: params.entrySet()){
63             System.out.println("****" + param.getKey() + ": " + Arrays.asList(param.getValue()));
64         }
65         
66         /*
67          * HttpServletRequest: 是 SerlvetRequest 的子接口. 針對於 HTTP 請求所定義. 里邊包含了大量獲取 HTTP 請求相關的方法.
68          */
69         
70         //獲取請求的URI
71         HttpServletRequest httpServletRequest = (HttpServletRequest) request;
72         String uri = httpServletRequest.getRequestURI();
73         System.out.println("request uri: " + uri);
74         
75         //獲得請求方式
76         String method = httpServletRequest.getMethod();
77         System.out.println("request method: " + method);
78         
79         //如果是get請求, 則獲得問號傳參后面的部分, 如果是post請求該項返回null
80         String getstr = httpServletRequest.getQueryString();
81         System.out.println("getstr: " + getstr);
82         
83         //獲取請求的 Serlvet 的映射路徑
84         String servletPath = httpServletRequest.getServletPath();
85         System.out.println(servletPath);
86     }
87 
88 }

--> 配置web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 3   <display-name>testHttpForm</display-name>
 4   
 5   
 6   <servlet>
 7       <servlet-name>formServlet</servlet-name>
 8       <servlet-class>com.xiaoan.test.TestForm</servlet-class>
 9   </servlet>
10   <servlet-mapping>
11       <servlet-name>formServlet</servlet-name>
12       <url-pattern>/formServlet</url-pattern>
13   </servle

寫表單(WebContent目錄下)  新建testform.html

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="UTF-8">
 5 <title>Insert title here</title>
 6 </head>
 7 <body>
 8     <form action="/testHttpForm/formServlet" method="get">
 9     username: <input type="text" name="username"><br>
10     password: <input type="password" name="password"><br>
11     多選測試:<input type="checkbox" name="read" value=1>1 &nbsp;&nbsp;&nbsp;
12     <input type="checkbox" name="read" value=2>2 &nbsp;&nbsp;&nbsp;
13     <input type="checkbox" name="read" value=3>3 &nbsp;&nbsp;&nbsp;
14     <input type="checkbox" name="read" value=4>4 &nbsp;&nbsp;&nbsp;
15     <input type="checkbox" name="read" value=5>5 &nbsp;&nbsp;&nbsp;
16     <input type="submit" name="submit" value="提交">
17     </form>
18 </body>
19 </html>

提交方式 get和post切換一下, 看看有什么不同

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM