javaWeb-Request請求
1.請求行
2.請求頭
3.請求體
代碼示例:
1.表單使用get請求的方式提交的時候:
前端代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
</script>
</head>
<body>
<form action="/27-Request/RequestServlet" method="get">
<input type="text" placeholder="請輸入用戶名..." name="username">
<input type="text" placeholder="請輸入密碼..." name="pwd"><br/>
<label>性別:</label>
<input type="radio" value="man" name="gender"> 男
<input type="radio" value="female" name="gender"> 女<br/>
<label>愛好:</label>
<input type="checkbox" name="hobby" value="抽菸"> 抽菸
<input type="checkbox" name="hobby" value="喝酒"> 喝酒
<input type="checkbox" name="hobby" value="燙頭"> 燙頭<br/>
<input type="submit" value="提交" >
</form>
</body>
</html>
後臺servlet:
package com.helong.request;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/RequestServlet")
public class RequestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("RequestServlet");
/*在前端使用get方式提交表單的時候獲取的數據是ISO8859-1編碼,要使用下面的方式將數據進行回爐操作,才能使得數據正常顯示*/
/** 通用方式解決亂碼
String parameter = request.getParameter("username");
System.out.println(parameter);
byte[] bytes = parameter.getBytes("ISO8859-1");
String str = new String(bytes,"UTF-8");
System.out.println(str);
*/
/***********1.請求行***********************/
//1.1獲取請求方式 get post
String method = request.getMethod();
System.out.println(method);
//1.2請求資源 URL URI (URL:http://localhost:8080/27-Request/RequestServlet;URI=/27-Request/RequestServlet)
StringBuffer requestURL = request.getRequestURL();
String requestURI = request.getRequestURI();
System.out.println("getRequestURL = "+requestURL);
System.out.println("getRequestURI ="+requestURI);
//1.3獲取get請求參數
String queryString = request.getQueryString();
System.out.println("getQueryString = "+queryString);
//1.4獲取當前web應用名稱 (工程名)
String contextPath = request.getContextPath();
System.out.println("getContextPath = " +contextPath);
/***********2.請求頭***********************/
//1.獲取所有的請求頭名稱
Enumeration<String> headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
System.out.println("name = "+headerNames.nextElement());
}
//2.根據名稱獲取指定的頭信息
String header = request.getHeader("referer");
System.out.println("referer = "+ header);
//3.打印所有的請求頭和請求頭內容
Enumeration<String> headerNames2 = request.getHeaderNames();
while(headerNames2.hasMoreElements()) {
//獲取請求名稱
String name = headerNames2.nextElement();
String value = request.getHeader(name);
System.out.println(name +":"+value);
}
/***********3.請求體***********************/
//1.獲取一個值
String name = request.getParameter("username");
/*將獲取的數據轉回二進制位,再使用UTF-8進行編碼*/
byte[] bytes = name.getBytes("ISO8859-1");
name = new String(bytes,"UTF-8");
System.out.println(name);
//2.獲取多個值
String[] parameterValues = request.getParameterValues("hobby");
for(int i = 0;i<parameterValues.length;i++) {
byte[] bytes1 = parameterValues[i].getBytes("ISO8859-1");
parameterValues[i] = new String(bytes1,"UTF-8");
}
System.out.println(Arrays.toString(parameterValues));
//3.獲取所有請求參數名稱
Enumeration<String> parameterNames = request.getParameterNames();
while(parameterNames.hasMoreElements()) {
System.out.println("name="+parameterNames.nextElement());
}
//4.獲取所有請求參數
Map<String, String[]> parameterMap = request.getParameterMap();
//遍歷所有請求參數名稱與值
for (Map.Entry<String, String[]> entry: parameterMap.entrySet()) {
/*System.out.println(entry.getKey());
System.out.println(Arrays.toString(entry.getValue()));*/
String[] value = entry.getValue();
for(int i = 0;i<value.length;i++) {
byte[] bytes2 = value[i].getBytes("ISO8859-1");
value[i] = new String(bytes2,"UTF-8");
}
System.out.println(entry.getKey()+":"+Arrays.toString(value));
}
}
}
2.表單使用post請求的時候:
前端界面代碼:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/27-Request/RequestServlet2" method="post">
<input type="text" placeholder="請輸入用戶名..." name="username">
<input type="text" placeholder="請輸入密碼..." name="pwd"><br/>
<label>性別:</label>
<input type="radio" value="男" name="gender"> 男
<input type="radio" value="女" name="gender"> 女<br/>
<label>愛好:</label>
<input type="checkbox" name="hobby" value="抽菸"> 抽菸
<input type="checkbox" name="hobby" value="喝酒"> 喝酒
<input type="checkbox" name="hobby" value="燙頭"> 燙頭<br/>
<input type="submit" value="提交" >
</form>
</body>
</html>
後臺servlet代碼:
package com.helong.request;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
@WebServlet("/RequestServlet2")
public class RequestServlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("RequestServlet2");
//表單提交使用的提交方式爲:post的時候可以使用這種方式來修改編碼方式,僅僅只是適用於POST請求,不適用於GET
request.setCharacterEncoding("UTF-8");
//獲取所有的請求參數
Map<String, String[]> allP = request.getParameterMap();
for (Map.Entry<String, String[]> entry : allP.entrySet()) {
System.out.println("-------");
System.out.println(entry.getKey() +":"+Arrays.toString(entry.getValue()));
}
/** 把獲取的請求參數封裝成對象 對象可以直接存到數據庫*/
/*使用BeanUtils封裝對象之前一定要引入jar包BeanUtils.jar才能操作*/
User u = new User();
try {
BeanUtils.populate(u, allP);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
System.out.println(u);
}
}
將獲獲得的數據封裝到User類中,創建一個javaBean類:
package com.helong.request;
import java.util.Arrays;
public class User {
private String username;
private String pwd;
private String gender;
private String[] hobby;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
@Override
public String toString() {
return "User [username=" + username + ", pwd=" + pwd + ", gender=" + gender + ", hobby="
+ Arrays.toString(hobby) + "]";
}
}