request对象方法
1、html
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form method="get" action="world"> 名称: <input type="text" name="name"><br> 我喜欢自行车: <input type="checkbox" name="like" value="Bike"><br> 我喜欢汽车: <input type="checkbox" name="like" value="Car"><br> <button>发出 GET 请求</button> </form><br><br> <form method="post" action="world"> 名称: <input type="text" name="name"><br> 我喜欢自行车: <input type="checkbox" name="like" value="Bike"><br> 我喜欢汽车: <input type="checkbox" name="like" value="Car"><br> <button>发出 POST 请求</button> </form> </body> </html>
2、servlet
这里doGet和doPost方法里的内容都一模一样,只是为了证明这些方法在doGet和doPost方法里都是通用的。
package com.test; 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 java.io.IOException; import java.io.PrintWriter; import java.util.Arrays; import java.util.Enumeration; import java.util.Map; import java.util.Set; @WebServlet("/world") public class RequestDemoServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=UTF-8"); PrintWriter writer = response.getWriter(); // 指定请求参数名称来取得对应的值 String name = request.getParameter("name"); writer.println("name : " + name + "<br><br>"); // 复选框、列表提交后同一个参数名称对应多个值,返回数组 String[] likes = request.getParameterValues("like"); for (String one : likes) { writer.println("like : " + one + "<br>"); } writer.println("<br>"); // 获取所有的请求参数名称 Enumeration<String> parameterNames = request.getParameterNames(); while (parameterNames.hasMoreElements()) { String element = parameterNames.nextElement(); writer.println("参数名称 : " + element + "<br>"); String[] parameters = request.getParameterValues(element); writer.println("参数值 : " + Arrays.toString(parameters)); writer.println("<br>"); } writer.println("<br><br>"); /** * 将请求参数以Map对象返回,Map中的键(Key)是请求参数名称,值(Value)的部分是请求参数值, * 以字符串数组类型String[]返回(因考虑有同一请求参数有多个值的情况) */ Map<String, String[]> parameterMap = request.getParameterMap(); Set<Map.Entry<String, String[]>> entries = parameterMap.entrySet(); for (Map.Entry<String, String[]> entry : entries) { writer.println("map key : " + entry.getKey() + "<br>"); String[] values = entry.getValue(); for (String one: values) { writer.println("map value : " + one + "<br>"); } } writer.println("<br><br>"); // 获取所有的请求头名称 Enumeration<String> headerNames = request.getHeaderNames(); while (headerNames.hasMoreElements()) { String header = headerNames.nextElement(); writer.println("请求头 : " + header + "<br>"); // 使用方式与getParameterValues()类似,指定标头名称后可返回Enumeration,元素为字符串 Enumeration<String> headers = request.getHeaders(header); while (headers.hasMoreElements()) { String one = headers.nextElement(); writer.println("对应值 : " + one + "<br>"); } } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html; charset=UTF-8"); PrintWriter writer = response.getWriter(); String name = request.getParameter("name"); writer.println("name : " + name + "<br><br>"); String[] likes = request.getParameterValues("like"); for (String one : likes) { writer.println("like : " + one + "<br>"); } writer.println("<br>"); Enumeration<String> parameterNames = request.getParameterNames(); while (parameterNames.hasMoreElements()) { String element = parameterNames.nextElement(); writer.println("参数名称 : " + element + "<br>"); String[] parameters = request.getParameterValues(element); writer.println("参数值 : " + Arrays.toString(parameters) + "<br>"); writer.println(); } writer.println("<br><br>"); Map<String, String[]> parameterMap = request.getParameterMap(); Set<Map.Entry<String, String[]>> entries = parameterMap.entrySet(); for (Map.Entry<String, String[]> entry : entries) { writer.println("map key : " + entry.getKey() + "<br>"); String[] values = entry.getValue(); for (String one: values) { writer.println("map value : " + one + "<br>"); writer.println(); } } writer.println("<br><br>"); Enumeration<String> headerNames = request.getHeaderNames(); while (headerNames.hasMoreElements()) { String header = headerNames.nextElement(); writer.println("请求头 : " + header + "<br>"); Enumeration<String> headers = request.getHeaders(header); while (headers.hasMoreElements()) { String one = headers.nextElement(); writer.println("对应值 : " + one + "<br>"); } writer.println(); } } }
3、测试结果
name : Mike
like : Bike
参数名称 : name
参数值 : [Mike]
参数名称 : like
参数值 : [Bike]
请求头 : host
对应值 : 127.0.0.1:8000
请求头 : user-agent
对应值 : Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.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
请求头 : referer
对应值 : http://127.0.0.1:8000/hello/index.html
请求头 : content-type
对应值 : application/x-www-form-urlencoded
请求头 : connection
对应值 : keep-alive
请求头 : upgrade-insecure-requests
对应值 : 1
请求头 : accept-encoding
对应值 : gzip, deflate
请求头 : content-length
对应值 : 33