Servlet处理请求报文9

本文介绍了如何使用HttpServletRequest接口处理HTTP请求的起始行和首部字段。通过实例展示了获取请求方式、资源名、参数及协议版本的方法,并解释了如何读取各种首部字段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

处理请求报文起始行和报文首部字段都是来自于HttpServletRequest接口的方法
处理起始行的方法
getMethod         方法返回HTTP请求消息中的请求方式。
getRequestURI     方法返回请求行中的资源名部分。
getQueryString      方法返回请求行中的参数部分。
getProtocol     方法返回请求行中的协议名和版本。
处理首部字段的方法

package com.ls.javaees1;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/headerrequest")
public class RequestHeaderServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println(request.getMethod());
        System.out.println(request.getRequestURI());
        System.out.println(request.getQueryString());
        System.out.println(request.getProtocol());

        Enumeration<String> headerNames=request.getHeaderNames();
        while(headerNames.hasMoreElements()){
            String headerName=headerNames.nextElement();
            System.out.println(headerName+","+request.getHeader(headerName));
        }
        System.out.println(request.getContentType());//返回Cintent-Type首部字段的值
        System.out.println(request.getContentLength());//返回Cintent-Length首部字段的值
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

}
在Spring Boot中,要拦截并打印HTTP请求报文,你可以使用`HandlerInterceptorAdapter`接口或更现代的WebMvcConfigurer接口下的`WebMvcInterceptor`。这里我们以`HandlerInterceptorAdapter`为例: 首先,创建一个实现了`HandlerInterceptorAdapter`的自定义拦截器类,如`RequestLoggingInterceptor`: ```java import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class RequestLoggingInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 打印请求信息 System.out.println("----------- Pre-Request Logging -----------"); System.out.printf("Method: %s\n", request.getMethod()); System.out.printf("URL: %s\n", request.getRequestURI()); System.out.println("Parameters: " + request.getParameterMap()); // 可以选择是否继续处理请求,这里默认true return true; } // 其他方法如postHandle()和afterCompletion()可以用于处理请求结束后的操作,如果需要的话 } ``` 然后,在Spring Boot配置类中注册这个拦截器: ```java import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new RequestLoggingInterceptor()); } } ``` 这样,每次HTTP请求过来,都会先经过这个拦截器,打印出请求的相关信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值