1. 工程目录
首先你需要会创建springMVC的入门工程(SpringMVC入门实例,点击前往),工程的目录如下图所示。
2. 源文件编写
2.1 前端界面编写
index.jsp , 输入界面,表单中的 name 属性值,要和绑定的模型类属性名一样 。 例: 这里要绑定UserQueryListModel类的 private List<UserModel> users 属性, 表单中的 name 属性要与之相同 并 加上下标 如: users[0].userName,users[0].userAge,users[1].userName,users[1].userAge,index.jsp 源码如下所示:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户信息登记</title>
</head>
<body>
<%--
1. 表单中的 name 属性值,要和绑定的模型类属性名一样
2. 例: 这里要绑定 UserQueryListModel类的 private List<UserModel> users 属性
3. 表单中的 name 属性要与之相同 并 加上 下标
如: users[0].userName,users[0].userAge,users[1].userName,users[1].userAge
--%>
<form action="${pageContext.request.contextPath}/helloUserList.form" method="post">
<h2> List集合输入数据 </h2>
用户1 姓名:<input type="text" name="users[0].userName"/> <br/>
用户1 年龄:<input type="text" name="users[0].userAge"/> <br/>
用户2 姓名:<input type="text" name="users[1].userName"/> <br/>
用户2 年龄:<input type="text" name="users[1].userAge"/> <br/>
<input type="submit" value="提交">
</form>
</body>
</html>
helloUser.jsp,接收信息的展示界面,源代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户信息展示</title>
</head>
<body>
<h1> List数据绑定展示 </h1>
<h3>用户1姓名:${users[0].userName}</h3>
<h3>用户1年龄:${users[0].userAge}</h3>
<h3>用户2姓名:${users[1].userName}</h3>
<h3>用户2年龄:${users[1].userAge}</h3>
<hr>
</body>
</html>
2.2 java 源文件编写
HelloUserController.java, 控制器源代码如下:
package com.study.springmvc.controller;
import com.study.springmvc.model.UserModel;
import com.study.springmvc.model.UserQueryListModel;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
// @Controller 标识是一个控制器
@Controller
public class HelloUserController {
@RequestMapping(value = "/helloUserList")
// userQueryListModel 作为形参,接收前台接受来的 list 数据
public String handleRequest(Model model, UserQueryListModel userQueryListModel) throws Exception {
List<UserModel> userList = userQueryListModel.getUsers();
// 将接受到的List数据传到前台
model.addAttribute("users", userList);
return "helloUser";
}
}
UserModel.java,源代码如下:
package com.study.springmvc.model;
public class UserModel {
private String userName;
private int userAge;
@Override
public String toString() {
return "UserModel{" +
"userName='" + userName + '\'' +
", userAge=" + userAge +
'}';
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getUserAge() {
return userAge;
}
public void setUserAge(int userAge) {
this.userAge = userAge;
}
}
UserQueryListModel.java,源代码如下: private List<UserModel> users; 该成员变量接收前台 List 集合 的数据,注意: users 这个属性名要和前台表单中的input的name属性相同,例:用户1 姓名:<input type="text" name="users[0].userName"/> 用户1 年龄:<input type="text" name="users[0].userAge"/> 。
package com.study.springmvc.model;
/**
* 该类在 控制器中作为形参,接受参数
*/
import java.util.List;
import java.util.Map;
public class UserQueryListModel {
/**
* 接收前台 List 集合 的数据
* 注意: users 这个属性名要和前台表单中的input的name属性相同
* 用户1 姓名:<input type="text" name="users[0].userName"/> <br/>
* 用户1 年龄:<input type="text" name="users[0].userAge"/> <br/>
*/
private List<UserModel> users;
public List<UserModel> getUsers() {
return users;
}
public void setUsers(List<UserModel> users) {
this.users = users;
}
}
Constant.java
package com.study.springmvc;
public class Constant {
// empty
}
2.3 xml 文件配置
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- post 乱码过滤器 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>Encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<!-- post 乱码过滤器指定范围,过滤所有 -->
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- SpringMVC 的前端控制器 -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 拦截了以 ".form" 结尾的URL请求,Web 应用接收到该类请求之后 , 会调用前端控制器-->
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.form</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
dispatcher-servlet.xml :
<?xml version="1.0" encoding="UTF-8"?>
<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/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<!-- 后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
<!-- 扫描配置 -->
<context:component-scan base-package="com.study.springmvc.controller"></context:component-scan>
</beans>
applicationContext.xml :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- empty -->
</beans>
3. 工程测试
启动 tomcat 如下图所示:
输入测试数据,年龄只能为整数。
点击提交,结果展示如下:
END。