javaWeb-Request請求

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) + "]";
	}
	
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章