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>
View Code

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

 

posted @ 2017-11-27 18:27  zhuangrunwei  阅读(143)  评论(0编辑  收藏  举报