📜  spring mvc 获取所有请求参数 - Java (1)

📅  最后修改于: 2023-12-03 15:20:13.240000             🧑  作者: Mango

Spring MVC 获取所有请求参数

在Spring MVC框架中,我们可以使用HttpServletRequest对象获取所有请求参数。Spring MVC在内部是使用它来处理请求的。在本文中,我们将学习如何使用HttpServletRequest对象在Spring MVC中获取所有请求参数。

1. 建立示例项目

我们将建立一个简单的Spring MVC项目,并在其中演示如何获取所有请求参数。

首先,我们需要创建一个Maven项目。在Eclipse中,可以通过菜单 File -> New -> Project… -> Maven Project 来创建它。在创建项目时,需要选择一个Archetype,比如maven-archetype-webapp。选择好后,可以按照提示一步步创建项目。

在项目中需要引入Spring MVC的相关依赖:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.0.0.RELEASE</version>
</dependency>

完整的pom.xml文件如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/maven-v4_0_0.xsd">
 
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>springmvc-example</artifactId>
    <packaging>war</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>springmvc-example Maven Webapp</name>
    <url>http://maven.apache.org</url>
      
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.0.0.RELEASE</version>
        </dependency>
    </dependencies>
      
    <build>
        <finalName>springmvc-example</finalName>
    </build>
  
</project>
2. 编写Controller

在Spring MVC中,Controller负责处理请求,处理后的结果可以是ModelAndView、String、Json等等。

我们需要在项目中创建一个Controller类,并添加一个RequestMapping,用于处理请求:

package com.example.controller;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
 
@Controller
public class MyController {
 
    @RequestMapping("/getParams")
    public ModelAndView getParams(HttpServletRequest request){
        ModelAndView mav = new ModelAndView();
        mav.setViewName("params");
        mav.addObject("params", request.getParameterMap());
        return mav;
    }
     
}

在这个Controller中,我们添加了一个RequestMapping,用于映射URL地址。我们还注入了HttpServletRequest对象,并通过它获取请求的所有参数。最后将获取到的参数保存到ModelAndView对象中并返回。

3. 编写View

View负责渲染Model的数据,并返回一个字符串视图名称。

我们需要在项目中创建一个名为“params.jsp”的View,用于显示请求参数的名称和值:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>参数列表</title>
</head>
<body>
    <h1>参数列表</h1>
     
    <table>
        <tr>
            <th>名称</th>
            <th>值</th>
        </tr>
        <% 
        for (String name : request.getParameterMap().keySet()){ //遍历参数列表
        %>
        <tr>
            <td><%= name %></td>
            <td><%= request.getParameter(name) %></td>
        </tr>
        <% } %>
    </table>
     
</body>
</html>

在这个View中,我们使用了JSP标记语言来显示请求参数的名称和值。

4. 配置DispatcherServlet

Spring MVC需要通过DispatcherServlet来处理请求。我们需要在项目中添加web.xml文件,并配置DispatcherServlet。

在web.xml文件中添加以下内容:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
         http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
  
    <display-name>Spring MVC Example</display-name>
  
    <!-- 配置DispatcherServlet -->
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
  
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
  
</web-app>

在这个配置文件中,我们配置了DispatcherServlet,并设置了contextConfigLocation参数。

5. 配置DispatcherServlet的配置文件

我们需要在项目中添加一个名为“dispatcher-servlet.xml”的配置文件,在其中配置Spring MVC的相关组件。

在这个配置文件中,我们需要添加以下配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-4.1.xsd 
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-4.1.xsd 
       http://www.springframework.org/schema/mvc 
       http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
  
    <!-- 配置Controller -->
    <context:component-scan base-package="com.example.controller"/>
     
    <!-- 配置ViewResolver -->
    <bean id="viewResolver" 
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
  
    <!-- 配置静态资源 -->
    <mvc:resources location="/resources/" mapping="/resources/**"/>
     
</beans>

在这个配置文件中,我们配置了三个组件:

  1. 配置Controller:使用 context:component-scan 来扫描指定包下的Controller。

  2. 配置ViewResolver:使用 InternalResourceViewResolver 来将视图名称解析为JSP文件。

  3. 配置静态资源:使用 mvc:resources 来配置静态资源。

6. 运行程序并查看结果

在完成了上面所有的步骤后,我们可以启动程序并在浏览器中访问地址 http://localhost:8080/getParams?name=Tom&age=23 ,来测试我们的程序。

程序运行后,应该可以看到以下结果:

参数列表

名称	    值
name	Tom
age	    23

这就证明程序成功获取到了请求的所有参数。