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 12 <input type="checkbox" name="read" value=2>2 13 <input type="checkbox" name="read" value=3>3 14 <input type="checkbox" name="read" value=4>4 15 <input type="checkbox" name="read" value=5>5 16 <input type="submit" name="submit" value="提交"> 17 </form> 18 </body> 19 </html>
提交方式 get和post切換一下, 看看有什么不同
