📅  最后修改于: 2023-12-03 15:20:13.240000             🧑  作者: Mango
在Spring MVC框架中,我们可以使用HttpServletRequest对象获取所有请求参数。Spring MVC在内部是使用它来处理请求的。在本文中,我们将学习如何使用HttpServletRequest对象在Spring MVC中获取所有请求参数。
我们将建立一个简单的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>
在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对象中并返回。
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标记语言来显示请求参数的名称和值。
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参数。
我们需要在项目中添加一个名为“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>
在这个配置文件中,我们配置了三个组件:
配置Controller:使用 context:component-scan 来扫描指定包下的Controller。
配置ViewResolver:使用 InternalResourceViewResolver 来将视图名称解析为JSP文件。
配置静态资源:使用 mvc:resources 来配置静态资源。
在完成了上面所有的步骤后,我们可以启动程序并在浏览器中访问地址 http://localhost:8080/getParams?name=Tom&age=23 ,来测试我们的程序。
程序运行后,应该可以看到以下结果:
参数列表
名称 值
name Tom
age 23
这就证明程序成功获取到了请求的所有参数。