以下是使用IntelliJ IDEA 2021创建名为SpringMvcUserDemo
的Maven项目结构,并基于JDK 1.8、采用Spring 5.2.10版本依赖来实现User对象的POJO参数传递的详细步骤:
File
-> New
-> Project
,在弹出的窗口中选择Maven
项目类型,然后点击Next
。com.example
。SpringMvcUserDemo
,与项目名称保持一致。1.0-SNAPSHOT
。Next
,选择项目的存储路径,点击Finish
完成项目的创建。pom.xml
文件在项目的pom.xml
文件中添加以下依赖(使用Spring 5.2.10版本):
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>com.examplegroupId>
<artifactId>SpringMvcUserDemoartifactId>
<version>1.0-SNAPSHOTversion>
<properties>
<maven.compiler.source>8maven.compiler.source>
<maven.compiler.target>8maven.compiler.target>
properties>
<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>5.2.10version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.2.10version>
dependency>
dependencies>
project>
保存pom.xml
文件后,Maven会自动下载相关依赖到本地仓库(前提是网络和配置正常)。
创建包结构:
在src/main/java
目录下创建项目的包结构,例如com.example.springmvcuserdemo
(根据实际的GroupId
等情况确定),后续的类将放在对应的包下。
创建实体类User:
在com.example.springmvcuserdemo
包下创建User
实体类,代码示例如下:
package com.example.springmvcuserdemo;
public class User {
private Integer id;
private String username;
private Integer age;
private String addr;
// 生成对应的getter和setter方法
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
applicationContext.xml
):src/main/resources
目录下创建applicationContext.xml
文件,用于配置Spring容器,示例内容如下:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.example.springmvcuserdemo"/>
beans>
此配置文件通过
标签告知Spring去扫描指定包(这里是com.example.springmvcuserdemo
包)下的组件(如带有注解的控制器等)。
spring-mvc.xml
):src/main/resources
目录下创建spring-mvc.xml
文件,用于配置Spring MVC相关设置,示例内容如下:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
bean>
beans>
标签用于开启Spring MVC的注解驱动,使得诸如@RequestMapping
等注解能够生效。视图解析器的配置用于将逻辑视图名解析为实际的视图资源(这里假设使用JSP页面,位于/WEB-INF/views/
目录下,后缀为.jsp
)。
在com.example.springmvcuserdemo
包下创建UserController
控制器类,用于处理与User
对象相关的请求以及实现POJO参数传递,代码示例如下:
package com.example.springmvcuserdemo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/user")
public class UserController {
// 展示添加用户的表单页面
@RequestMapping(value = "/add", method = RequestMethod.GET)
public String showAddUserForm(Model model) {
model.addAttribute("user", new User());
return "addUser";
}
// 处理添加用户的表单提交请求,接收User对象作为参数
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addUser(@ModelAttribute("user") User user, Model model) {
// 这里可以添加将用户信息保存到数据库等实际业务逻辑(此处省略)
model.addAttribute("message", "用户添加成功!");
return "result";
}
}
在上述控制器类中:
showAddUserForm
方法用于处理GET
请求,返回添加用户的表单页面(这里假设为addUser.jsp
),并向模型中添加一个空的User
对象,以便在表单页面中可以绑定表单字段到User
对象的属性上。addUser
方法用于处理POST
请求,通过@ModelAttribute
注解接收前端提交的表单数据并自动封装到User
对象中,然后可以进行后续的业务处理(如保存到数据库,这里只是简单模拟添加成功的提示信息),最后返回一个结果页面(这里假设为result.jsp
)。addUser.jsp
页面:src/main/webapp/WEB-INF/views
目录下创建addUser.jsp
页面(需确保项目结构中存在src/main/webapp/WEB-INF/views
这样的目录结构,如果不存在则手动创建),用于展示添加用户的表单,示例代码如下:<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>添加用户title>
head>
<body>
<h2>添加用户信息h2>
<form action="${pageContext.request.contextPath}/user/add" method="post">
<label for="id">学号:label><input type="text" id="id" name="id" /><br />
<label for="username">姓名:label><input type="text" id="username" name="username" /><br />
<label for="age">年龄:label><input type="text" id="age" name="age" /><br />
<label for="addr">籍贯:label><input type="text" id="addr" name="addr" /><br />
<input type="submit" value="提交">
form>
body>
html>
此表单页面中的各个输入框的name
属性需与User
实体类的属性名一一对应,这样在表单提交时,Spring MVC才能正确地将表单数据封装到User
对象中。
result.jsp
页面:src/main/webapp/WEB-INF/views
目录下创建result.jsp
页面,用于展示添加用户后的结果信息,示例代码如下:<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>结果title>
head>
<body>
<h2>${message}h2>
body>
html>
此页面通过${message}
表达式获取控制器中添加到模型的消息并展示出来。
在IntelliJ IDEA中,需要配置项目的运行环境为Tomcat,具体步骤如下:
Edit Configurations
(通常在右上角运行配置下拉菜单旁边可以找到)。+
号,选择Tomcat Server
-> Local
。Server
标签页下,配置Tomcat的安装路径(如果已自动识别可检查是否正确)。Deployment
标签页下,点击+
号,选择Artifact
,将项目的war
包(如果是Web项目,Maven会自动构建war
包,这里也可以配置为exploded
模式直接部署项目目录结构)添加到部署列表中。OK
保存配置。POST
方法(对应控制器中处理添加用户的POST
请求方法)。http://localhost:8080/SpringMvcUserDemo/user/add
(假设项目运行在本地的8080端口,根据实际部署的端口和项目名修改)。Content-Type
请求头,值设置为application/x-www-form-urlencoded
(因为表单提交一般采用这种编码格式)。User
对象的属性名和对应的值,以键值对的形式添加,例如:
id
:输入一个整数值,如1
。username
:输入一个姓名,如张三
。age
:输入一个年龄值,如20
。addr
:输入一个籍贯信息,如北京
。result.jsp
页面的设置),表示成功实现了User
对象的POJO参数传递以及相关的业务处理流程。通过以上完整的步骤,就完成了基于Spring MVC的SpringMvcUserDemo
项目的搭建,实现了User
对象的POJO参数传递以及简单的用户添加功能模拟,在实际应用中可以进一步完善业务逻辑,比如添加数据库操作等内容。