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);
    }
}


输出结果:



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


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);
    }
}
目录
相关文章
|
JSON Java 应用服务中间件
HttpServletRequest核心方法以及获取请求参数
HttpServletRequest核心方法以及获取请求参数
973 0
|
5月前
|
Java 应用服务中间件
Request继承体系,获取请求数据,Request通用方式获取请求参数
Request继承体系,获取请求数据,Request通用方式获取请求参数
|
5月前
|
XML JSON 前端开发
HTTP 请求参数与响应参数的关键区别
在 Web 的开发领域,无论你是前端开发还是后端开发人员,把握请求与响应参数的核心差异是极其重要的。这些参数在客户端和服务器之间的互动中扮演着关键角色。
|
6月前
|
JSON 中间件 数据格式
在自定义服务器框架中处理 POST 请求
在自定义服务器框架中处理 POST 请求
request获取请求头的名称
request获取请求头的名称
|
12月前
HttpURLConnection中请求头中携带Token的使用方法
HttpURLConnection中请求头中携带Token的使用方法
425 2
|
6月前
Request通用方式获取请求参数及Servlet模板创建
Request通用方式获取请求参数及Servlet模板创建
49 0
|
XML 数据格式
FastAPI(47)- 通过 Response 自定义响应的类型
FastAPI(47)- 通过 Response 自定义响应的类型
309 0
FastAPI(47)- 通过 Response 自定义响应的类型
|
人工智能
Postman测试数组列表类型的参数后端用@RequestParam接受
Postman测试数组列表类型的参数后端用@RequestParam接受
|
Web App开发 网络协议 安全
GET和POST方式请求API接口数据返回
GET和POST方式请求API接口数据返回
168 0