HttpServletRequest概述、相关方法、获取请求行信息、获取请求头信息相关方法及获取请求参数相关方法

目录

一、HttpServletRequest概述

二、HttpServletRequest相关方法

获取请求行信息:

获取请求头信息相关方法:

获取请求参数相关方法:


一、HttpServletRequest概述

HttpServletRequest接口继承自ServletRequest接口
HttpServletRequest专门用于封装HTTP请求消息
HttpServletRequest提供了一些用于访问请求消息的方法,如获取请求行、获取请求头等

二、HttpServletRequest相关方法

获取请求行信息:

1、String getMethod() ,该方法用于获取HTTP请求消息中的请求方式,如GET或Post

2、String getRequestURI() ,该方法用于获取请求行中资源名称部分,即URL中主机名端口号之后和参数部分之前的部分

3、String getQueryString() ,该方法用于获取请求行中的参数部分,即资源路径?号后边的
全部内容

4、String getProtocol() ,该方法用于获取请求行中的协议名和版本,如HTTP/1.0或
HTTP/1.1
5、String getContextPath() ,该方法用于获取URL中Web应用程序的路径,以/开头,结尾
没有斜杠6. String getServletPath() ,该方法用于获取Servlet映射的路径或者Servlet的名称

7、String getRemoteAddr() ,该方法用于获取发送请求的客户端的IP地址

8、String getRemoteHost() ,该方法用于获取发送请求的客户端的完整主机名,如果解析不到则返回IP地址

9、int getRemotePort() ,该方法用于获取发送请求的客户端的端口号

10、String getLocalAddr() ,该方法用于获取Web服务器上接收当前请求的网络的IP地址

11、String getLocalName() ,该方法用于获取Web服务器上接收当前请求的网络的IP地址对应的主机名

12、int getLocalPort() ,该方法用于获取web服务器上接收当前网络连接的端口号

13、String getServerName() ,该方法用于获取当前请求所指向的主机名,即HTTP请求消息中Host字段所对应的主机名部分

14、String getServerPort() ,该方法用于获取当前请求所连接的服务器端口号,即HTTP请求消息中Host字段所对应的端口号部分

15、String getSchema() ,该方法用于获取请求的协议名,如HTTP或HTTPS

16、StringBuffer getRequestURL() ,该方法用于获取客户端发出请求时的完整URL,包括协议、服务器名、端口号、资源路径等,但不包括后面的查询参数部分,StringBuffer类型方便修改

范例:

@WebServlet("/HttpServletRequestDemo")
public class HttpServletRequestDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String method = req.getMethod();
        System.out.println(method);
        String requestURI = req.getRequestURI();
        System.out.println(requestURI);
        String queryString = req.getQueryString();
        System.out.println(queryString);
        String protocol = req.getProtocol();
        System.out.println(protocol);
        String contextPath = req.getContextPath();
        System.out.println(contextPath);
        String servletPath = req.getServletPath();
        System.out.println(servletPath);
        String remoteAddr = req.getRemoteAddr();
        System.out.println(remoteAddr);
        String remoteHost = req.getRemoteHost();
        System.out.println(remoteHost);
        int remotePort = req.getRemotePort();
        System.out.println(remotePort);
        String localAddr = req.getLocalAddr();
        System.out.println(localAddr);
        String localName = req.getLocalName();
        System.out.println(localName);
        int localPort = req.getLocalPort();
        System.out.println(localPort);
        String serverName = req.getServerName();
        System.out.println(serverName);
        int serverPort = req.getServerPort();
        System.out.println(serverPort);
        String scheme = req.getScheme();
        System.out.println(scheme);
        StringBuffer requestURL = req.getRequestURL();
        System.out.println(requestURL);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse
            resp) throws ServletException, IOException {
        doGet(req,resp);
    }
}

输出结果:

3d3ad2d5496e4fc0855444fd8ea3b909.png

 获取请求头信息相关方法:

1、String getHeader(String name) ,该方法作用是获取请求头中指定名称字段的值,如果
没有该字段则返回null,如果有多个该指定名称的字段,则返回第一个字段的值

2、Enumeration getHeaders(String name) ,返回一个Enumeration对象,该对象包含所有请求头中指定名称字段的值

3、Enumeration getHeaderName() ,返回一个包含所有请求头字段的Enumeration对象
4、int getIntHeader(String name) ,该方法获取一个指定请求头字段的值,并将该字段的
值转为int类型再返回,如果该字段不存在则返回-1,如果该字段的值不能转为int类型则抛出
NumberFormatException异常

5、long getDateHeaders(String name) ,该方法获取一个指定请求头字段的值,并将其转为一个代表日期/时间的长整数,这个长整数是1970年1月1日0时0分0秒算起到现在的毫秒值

6、String getContentType() ,获取Content-Type字段的值
7、int getContentLength() ,获取Content-Length字段的值
8、String getCharacterEncoding() ,获取请求消息的实体部分的字符集编码,通常从
Content-Type字段中截取

范例:

@WebServlet("/HttpServletRequestDemo")
public class HttpServletRequestDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Enumeration<String> headerNames = req.getHeaderNames();
        while(headerNames.hasMoreElements()){
            String s = headerNames.nextElement();
            System.out.println(s+":"+req.getHeader(s));
        }
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse
            resp) throws ServletException, IOException {
        doGet(req,resp);
    }
}

获取请求参数相关方法:

1、String getParameter(String name) ,该方法获取指定名称参数的参数值,如果没有该参数则返回null,如果该参数没有设置值则返回空串,如果该参数有多个值则返回第一个

2、String getParameterValues(String name) ,该方法用于获取同一个参数名称的所有值
3、Enumeration getParameterNames() ,该方法用于返回包含所有参数名的Enumeration对象

4、Map getParameterMap() ,将参数名和参数值装入一个Map对象中返回

 范例:

@WebServlet("/HttpServletRequestDemo")
public class HttpServletRequestDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Enumeration<String> parameterNames = req.getParameterNames();
        while (parameterNames.hasMoreElements()) {
            String s = parameterNames.nextElement();
            String[] parameterValues = req.getParameterValues(s);
            System.out.println(s+":"+Arrays.toString(parameterValues));
        }
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse
            resp) throws ServletException, IOException {
        doGet(req,resp);
    }
}

 

  • 12
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
ServletRequest获取请求方法有多种,其中一种是将ServletRequest对象强转成HttpServletRequest对象,然后使用HttpServletRequest提供的方法获取请求信息。例如,可以使用HttpServletRequest的getHeader()方法获取请求头信息,使用getParameter()方法获取请求参数信息。\[1\]另外,ServletRequest接口本身也提供了一些方法获取请求信息,如getProtocol()方法获取请求协议,getMethod()方法获取请求方法等。\[2\]在Servlet中,可以通过重写doGet()或doPost()方法来处理请求,然后在方法中使用ServletRequest对象来获取请求信息。例如,在doGet()方法中可以使用ServletRequest的getHeaderNames()方法获取请求头的所有名称,并通过循环遍历获取每个请求头的值。\[3\] #### 引用[.reference_title] - *1* [ServletRequest获取请求信息](https://blog.csdn.net/AdvancingStone/article/details/79645130)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [HttpServletRequest概述相关方法获取请求信息获取请求头信息相关方法获取请求参数相关方法](https://blog.csdn.net/m0_61961937/article/details/126992763)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏志121

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值