ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
Spring框架有一套表单标签库,可在jsp页面(只能在.jsp中使用)中渲染HTML元素标签。 :-: ![](https://img.kancloud.cn/d3/f5/d3f51e1f52f1cf680dfd15072555652d_1205x409.jpg) Spring提供的全部表单标签 上面这些Spring标签库,它们与普通的HTML元素是一样,只是添加了一些Spring自身提供的属性,简化了编码。 <br/> [TOC] # 1. Spring表单标签使用步骤 **1. controller层** ```java @Controller public class UserController { /** * 1. 进入表单标签所在的 user.jsp 页面时,必须绑定一个User对象,绑定方式可以使用 @ModelAttribute("user") * 、或者Model.addAttribute("user", new User())、或者ModelAndView.addObject("user", new User()) */ @RequestMapping(value = "/touser.html", method = RequestMethod.GET) public String toUserPage(@ModelAttribute("user") User user) { user.setName("姓名"); user.setPassword("密码"); user.setNickname("别名"); user.setAvator("头像"); //2. 必须是进入表单标签所在的 user.jsp 页面 return "user"; } /** * 3. 这个是表单提交地址,也必须绑定User对象,并且绑定的命名也必须是user */ @RequestMapping(value = "/user/insert2", method = RequestMethod.POST) public String insert2(@ModelAttribute("user") User user) { System.out.println(user); return ""; } } ``` **2. 视图层** *`webapp/WEB-INF/views/user.jsp`* ```html <%@ page contentType="text/html;charset=UTF-8" language="java" %> <!-- 使用Spring表单标签需要引入 taglib 库 --> <%@ taglib prefix="fm" uri="http://www.springframework.org/tags/form"%> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>USER</title> </head> <body> <!-- modelAttribute: 与controller层中注解@ModelAttribute("user")参数命名一致 如果没有指定,则默认提供common参数,如果在controller中没有找到common参数则报错 --> <fm:form method="post" modelAttribute="user" action="${pageContext.request.contextPath }/user/insert2"> <!-- path: 相当于name属性,必须与实体类中成员变量名同名, 并且实体类中必须提供变量的Setter方法,因为Spring是根据Setter进行绑定的 --> <fm:input path="name" /> <fm:password path="password" /> <fm:input path="nickname" /> <fm:input path="avator" /> <input type="submit" value="提交" /> </fm:form> </body> </html> </body> </html> ``` **3. 测试** (1)启动项目后访问 http://localhost:8080/mvc/touser.html 进入 user.jsp 页面,得到结果如下。 ![](https://img.kancloud.cn/72/46/72468ca0f6b18024cda2f712c500c51e_1405x166.jpg) (2)填写表单后提交表单,会将数据传递到后端。 ![](https://img.kancloud.cn/5f/6a/5f6a3e5341de836007203a5a3a0c29b3_1394x178.jpg) <br/> # 2. 表单省略`action`属性 ```html <fm:form method="post" modelAttribute="user"> ``` 表单是可以省略`action`属性的,条件是:进入 user.jsp 页面的 url 与 提交表单的 url 一样时,就可以省略`action`属性。 <br/> 假如进入 user.jsp 页面的 url 为: ```java @RequestMapping(value = "/adduser.html", method = RequestMethod.GET) ``` 表单提交的url为: ```java @RequestMapping(value = "/adduser.html", method = RequestMethod.POST) ``` 当 url 地址一样时,Spring 会根据 method 自动匹配到正确的url地址。