HttpServletRequest相关

简介

获取客户端请求头及参数

获取提交给服务器的中文数据


简介

这个对象封装了客户端提交过来的一切数据。

获取客户端请求头及参数

package com.zhujunwei.httpServletRequest;

import java.io.IOException;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HttpServletRequest01 extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		//打印请求头
		printRequestHeader(request);
		System.out.println("-----------------------------");
		//打印参数
		printParameter(request);
	}
	
	//打印请求体 get中url?号后面的内容
	private void printParameter(HttpServletRequest request) {
		Map<String, String[]> parameterMap = request.getParameterMap();
		Set<String> paramKeySet = parameterMap.keySet();
		Iterator<String> iterator = paramKeySet.iterator();
		while(iterator.hasNext())
		{
			String key = iterator.next();
			String value = parameterMap.get(key)[0];
			System.out.println(key+"\t"+value);
		}
	}

	//打印请求头
	private void printRequestHeader(HttpServletRequest request) {
		Enumeration<String> headerNames = request.getHeaderNames();
		while(headerNames.hasMoreElements())
		{
			String name = headerNames.nextElement();
			String value = request.getHeader(name);
			System.out.println(name+"\t"+value);
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

比如在地址栏输入

http://localhost:8080/Hello/HttpServletRequest01?name=baobao&age=18

结果(FireFox)

host	localhost:8080
user-agent	Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
accept	text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-language	zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
accept-encoding	gzip, deflate
dnt	1
connection	keep-alive
upgrade-insecure-requests	1
-----------------------------
name	baobao
age	18

获取提交给服务器的中文数据

login.html(post和get方式)

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
</head>
<body>
	<h2>请输入账号密码登录</h2>
	<form action="LoginServlet" method="post">
		账号:<input type="text" name="username"><br>
		密码:<input type="text" name="password"><br>
		<input type="submit" value="登录">
	</form>
</body>
</html>

LoginServlet

package com.zhujunwei.httpServletRequest;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
              //getEncoding(req);
		postEncoding(req);
	}

	// 取得用户名和密码
	//解决post请求乱码
	private void postEncoding(HttpServletRequest req) throws UnsupportedEncodingException {
		req.setCharacterEncoding("UTF-8");
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		System.out.println("username=" + username);
		System.out.println("password=" + password);
	}

	@SuppressWarnings("unused")
	private void getEncoding(HttpServletRequest req) {
		// 取得用户名和密码
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		System.out.println("username=" + username);
		System.out.println("password=" + password);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}

我们可以提交给服务器中文用户名,依然可以接收到

username=宝宝
password=123456

 

posted @ 2018-12-28 00:01  雨中遐想  阅读(4)  评论(0编辑  收藏  举报  来源