08-HTTP-Request获取请求参数通用方式

1、getParameter()方法用于获取HTTP请求中携带的参数,包括查询字符串、表单数据或HTTP请求头中的参数。

import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MyController {
    
    @RequestMapping("/myurl")
    public void myMethod(HttpServletRequest request) {
        String name = request.getParameter("name");
        String age = request.getParameter("age");
        
        // TODO: 处理HTTP请求的业务逻辑
    }
}

在这个示例中,我们首先使用request.getParameter()方法获取客户端提交的请求参数。getParameter()方法以字符串形式返回指定请求参数的值,参数名由String类型的参数指定。如果请求中没有指定此名称的参数,则此方法返回null。注意,参数名区分大小写。

2、getParameterValues()方法用于获取HTTP请求中携带的参数值列表,包括查询字符串、表单数据或HTTP请求头中的参数值列表。

import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MyController {
    
    @RequestMapping("/myurl")
    public void myMethod(HttpServletRequest request) {
        String[] interests = request.getParameterValues("interest");
        if (interests != null) {
            for (String interest : interests) {
                // TODO: 处理读取到的参数值
            }
        }
        
        // TODO: 处理HTTP请求的业务逻辑
    }
}

在这个示例中,我们首先使用request.getParameterValues()方法获取客户端提交的请求参数值列表。getParameterValues()方法以数组形式返回指定请求参数的值列表,参数名由String类型的参数指定。如果请求中没有指定此名称的参数,则此方法返回null。注意,参数名区分大小写。

如果请求中有多个同名参数,则可以使用getParameterValues()方法获取所有值的数组。

需要注意的是,当使用getParameterValues()方法获取请求参数值列表时,如果请求中只有一个指定名称的参数,则返回的是长度为1的数组,而不是参数值本身。因此,在读取数组元素时,需要先判断数组是否为空,然后再遍历获取每个元素。另外,如果请求中的参数值是中文或其他特殊字符,可能需要进行相应的编码解码处理。

3、getParameterNames()方法用于获取HTTP请求中携带的所有参数名,包括查询字符串、表单数据或HTTP请求头中的参数名。

import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MyController {
    
    @RequestMapping("/myurl")
    public void myMethod(HttpServletRequest request) {
        Enumeration paramNames = request.getParameterNames();
        while (paramNames.hasMoreElements()) {
            String paramName = paramNames.nextElement();
            String[] paramValues = request.getParameterValues(paramName);
            if (paramValues != null && paramValues.length > 0) {
                String paramValue = paramValues[0];
                // TODO: 处理读取到的参数名和参数值
            }
        }
        
        // TODO: 处理HTTP请求的业务逻辑
    }
}

 在这个示例中,我们首先使用request.getParameterNames()方法获取客户端提交的所有参数名。getParameterNames()方法以Enumeration类型的形式返回请求中所有参数名的枚举列表。然后,使用while循环逐个遍历参数名,再通过request.getParameterValues()方法获取参数名对应的参数值列表。

需要注意的是,当使用getParameterNames()方法获取请求参数名列表时,如果请求中只有一个指定名称的参数,则返回的只是参数名本身的枚举列表,而不是参数值。因此,在读取参数值时,需要先判断参数值是否为空,然后再遍历获取每个参数值。另外,如果请求中的参数名或参数值是中文或其他特殊字符,可能需要进行相应的编码解码处理。

4、getParameterMap()方法用于获取HTTP请求中携带的所有参数及其值,包括查询字符串、表单数据或HTTP请求头中的参数及其值。

import javax.servlet.http.HttpServletRequest;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MyController {
    
    @RequestMapping("/myurl")
    public void myMethod(HttpServletRequest request) {
        Map paramMap = request.getParameterMap();
        for (String paramName : paramMap.keySet()) {
            String[] paramValues = paramMap.get(paramName);
            if (paramValues != null && paramValues.length > 0) {
                String paramValue = paramValues[0];
                // TODO: 处理读取到的参数名和参数值
            }
        }
        
        // TODO: 处理HTTP请求的业务逻辑
    }
}

在这个示例中,我们首先使用request.getParameterMap()方法获取客户端提交的所有请求参数及其值,返回值为一个Map对象,其中键为请求参数名,值为请求参数值的字符串数组。然后,使用for循环遍历参数名,再通过Map.get()方法获取每个参数名对应的参数值列表。

需要注意的是,当使用getParameterMap()方法获取请求参数名及其值列表时,如果请求中只有一个指定名称的参数,则返回的只是参数名本身及其对应参数值的数组,而不是一个单独的参数值。因此,在读取参数值时,需要先判断参数值是否为空,然后再遍历获取每个参数值。另外,如果请求中的参数名或参数值是中文或其他特殊字符,可能需要进行相应的编码解码处理。

你可能感兴趣的:(http,servlet,java)