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
---------------
我每一次回头,都感觉自己不够努力,所以我不再回头。
---------------