美文网首页
Servlet中的HttpServletRequest接口

Servlet中的HttpServletRequest接口

作者: 让你变好的过程从来都不会很舒服 | 来源:发表于2021-09-12 08:51 被阅读0次

    HttpServletRequest简介

    Web服务器收到客户端的http请求,会针对每一次请求,创建一个用于代表请求的HttpServletRequest类型的request对象,并将"HTTP请求协议"的完整内容封装到该对象中。开发者获拿到request对象后就可以获取客户端发送给服务器的请求数据了。

    HttpServletRequest的生命周期

    当客户端浏览器向服务器发送请求后,服务器会根据HTTP请求协议的格式对请求进行解析。同时,服务器会创建 HttpServletRequest类型的对象,即请求对象,然后将解析出的数据封装到该请求对象中。此时HttpServletRequest实例就创建并初始化完毕了,也就是说,请求对象是由服务器创建。当服务器向客户端发送响应结束后,HttpServletRequest 实例对象被服务器销毁,HttpServletRequest对象的生命周期很短暂。
    一次请求对应一个请求对象, 另外一次请求对应另外一个请求对象,即每次请求都会创建一个HttpServletRequest类型的对象,这些对象之间没有关系。

    HttpServletRequest中常用的方法

    Map getParameterMap()
    获取包含所有请求参数及值的 Map 对象。需要注意,该 Map 的 value 为 String[],即一个参数所对应的值为一个数组。说明一个参数可以对应多个值。
    Enumeration getParameterNames()
    获取请求参数 Map 的所有 key,即获取所有请求参数名。
    String[] getParameterValues(String name)
    根据指定的请求参数名称,获取其对应的所有值。这个方法一般用于获取复选框(checkbox)数据。
    String getParameter(String name)
    根据指定的请求参数名称,获取其对应的值。若该参数名称对应的是多个值,则该方法获取到的是第一个值。这个方法是最常用的方法。

    获取客户端信息的方法:

    getRequestURL方法返回客户端发出请求时的完整URL。
    getRequestURI方法返回请求行中的资源名部分。
    getQueryString方法返回请求行中的参数部分。
    getRemoteAddr方法返回发出请求的客户机的IP地址
    getRemoteHost方法返回发出请求的客户机的完整主机名
    getRemotePort方法返回客户机所使用的网络端口号
    getLocalAddr方法返回WEB服务器的IP地址。
    getLocalName方法返回WEB服务器的主机名
    getMethod得到客户机请求方式

    代码示例:

    创建一个html里面写一些表单信息:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>表单提交</title>
    </head>
    <body>
        <form action="RequestTest01" >
            用户名:<input name="username" type="text">
            <br>
            密码:<input name="password" type="password">
            <br>
            爱好:
            <input type="checkbox" name="hobby" value="basketball">篮球
            <input type="checkbox" name="hobby" value="football">足球
            <input type="checkbox" name="hobby" value="volleyball">排球
            <br>
            <input type="submit" value="提交">
        </form>
    </body>
    </html>
    

    创建一个servlet来接收用户提交的数据:

    package com.monkey1024.servlet;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * HttpServletRequest获取请求数据
     */
    public class RequestTest01 extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //根据html中的name的名字获取用户在input中填写的值
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            //获取用户勾选的checkbox的值
            String[] hobby = request.getParameterValues("hobby");
    
            System.out.println(username);
            System.out.println(password);
            for(String s:hobby){
                System.out.println(s);
            }
        }
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    
    }
    

    相关文章

      网友评论

          本文标题:Servlet中的HttpServletRequest接口

          本文链接:https://www.haomeiwen.com/subject/hqfuhltx.html