zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    leetcode算法题(JavaScript实现)
    使用git submodule管理一个需要多个分立开发或者第三方repo的项目
    linux下从源代码安装git
    git项目实战常用workflow和命令
    如何在linux console中显示当前你在的branch?
    git plumbing 更加底层命令解析-深入理解GIT
    如何直接在github网站上更新你fork的repo?
    git remotes
    git和其他版本控制系统的区别
    Git server安装和配置
  • 原文地址:https://www.cnblogs.com/Mike_Chang/p/10028152.html
Copyright © 2011-2022 走看看