SpringMVC的form标签

水深无声 2022-04-22 11:34 341阅读 0赞

搭建好SpringMVC的环境
项目模块图
在这里插入图片描述
pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <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">
  3. <parent>
  4. <artifactId>SpringMVC</artifactId>
  5. <groupId>SpringMVC</groupId>
  6. <version>1.0-SNAPSHOT</version>
  7. </parent>
  8. <modelVersion>4.0.0</modelVersion>
  9. <groupId>SpringMVC_04</groupId>
  10. <artifactId>SpringMVC_04</artifactId>
  11. <version>1.0-SNAPSHOT</version>
  12. <packaging>war</packaging>
  13. <name>SpringMVC_04 Maven Webapp</name>
  14. <!-- FIXME change it to the project's website -->
  15. <url>http://www.example.com</url>
  16. <properties>
  17. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  18. <maven.compiler.source>1.7</maven.compiler.source>
  19. <maven.compiler.target>1.7</maven.compiler.target>
  20. </properties>
  21. <dependencies>
  22. <dependency>
  23. <groupId>junit</groupId>
  24. <artifactId>junit</artifactId>
  25. <version>4.11</version>
  26. <scope>test</scope>
  27. </dependency>
  28. <!--引入SpringMVC依赖-->
  29. <dependency>
  30. <groupId>org.springframework</groupId>
  31. <artifactId>spring-webmvc</artifactId>
  32. <version>4.3.10.RELEASE</version>
  33. </dependency>
  34. </dependencies>
  35. <build>
  36. <finalName>SpringMVC_04</finalName>
  37. <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
  38. <plugins>
  39. <plugin>
  40. <artifactId>maven-clean-plugin</artifactId>
  41. <version>3.0.0</version>
  42. </plugin>
  43. <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
  44. <plugin>
  45. <artifactId>maven-resources-plugin</artifactId>
  46. <version>3.0.2</version>
  47. </plugin>
  48. <plugin>
  49. <artifactId>maven-compiler-plugin</artifactId>
  50. <version>3.7.0</version>
  51. </plugin>
  52. <plugin>
  53. <artifactId>maven-surefire-plugin</artifactId>
  54. <version>2.20.1</version>
  55. </plugin>
  56. <plugin>
  57. <artifactId>maven-war-plugin</artifactId>
  58. <version>3.2.0</version>
  59. </plugin>
  60. <plugin>
  61. <artifactId>maven-install-plugin</artifactId>
  62. <version>2.5.2</version>
  63. </plugin>
  64. <plugin>
  65. <artifactId>maven-deploy-plugin</artifactId>
  66. <version>2.8.2</version>
  67. </plugin>
  68. </plugins>
  69. </pluginManagement>
  70. </build>
  71. </project>

spingmvc.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" 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 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  3. <!--配置注解扫描器-->
  4. <context:component-scan base-package="com.zs.controller"></context:component-scan>
  5. <!--配置内部的视图解析器-->
  6. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  7. <property name="prefix" value="/"></property>
  8. <property name="suffix" value=".jsp"></property>
  9. </bean>
  10. </beans>

web.xml

  1. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" >
  2. <web-app>
  3. <display-name>Archetype Created Web Application</display-name>
  4. <!-- 解决工程编码过滤器(中文乱码问题)-->
  5. <filter>
  6. <filter-name>characterEncodingFilter</filter-name>
  7. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  8. <init-param>
  9. <param-name>encoding</param-name>
  10. <param-value>UTF-8</param-value>
  11. </init-param>
  12. <init-param>
  13. <param-name>forceEncoding</param-name>
  14. <param-value>true</param-value>
  15. </init-param>
  16. </filter>
  17. <filter-mapping>
  18. <filter-name>characterEncodingFilter</filter-name>
  19. <url-pattern>/*</url-pattern>
  20. </filter-mapping>
  21. <!--spring的核心servlet-->
  22. <servlet>
  23. <servlet-name>SpringMVC</servlet-name>
  24. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  25. <!--初始化参数,将springmvc的核心配置文件springmvc.xml初始化-->
  26. <init-param>
  27. <param-name>contextConfigLocation</param-name>
  28. <param-value>classpath:spingmvc.xml</param-value>
  29. </init-param>
  30. </servlet>
  31. <servlet-mapping>
  32. <servlet-name>SpringMVC</servlet-name>
  33. <url-pattern>*.action</url-pattern>
  34. </servlet-mapping>
  35. </web-app>

index.jsp

  1. <%--
  2. @Name: index
  3. @Description:
  4. @author 小思
  5. @date 2018/11/4 16:18
  6. --%>
  7. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  8. <html>
  9. <head>
  10. <title>Title</title>
  11. </head>
  12. <body>
  13. index
  14. </body>
  15. </html>

各个标签的普通使用

Users.java

  1. package com.zs.model;
  2. import java.util.Arrays;
  3. /** * @author 小思 * @PackageName:com.zs.model * @ClassName: Users * @Description:页面收集与传递数据的实体类 * @date 2018/11/4 16:11 */
  4. public class Users {
  5. private Integer id;//用户Id
  6. private String uname;//用户姓名
  7. private String upwd;//用户密码
  8. private String usex;//用户性别
  9. private String[] hobby;//用户爱好
  10. private String city;//居住地址
  11. private boolean marry;//婚姻状况
  12. private String comment;//备注
  13. public Integer getId() {
  14. return id;
  15. }
  16. public void setId(Integer id) {
  17. this.id = id;
  18. }
  19. public String getUname() {
  20. return uname;
  21. }
  22. public void setUname(String uname) {
  23. this.uname = uname;
  24. }
  25. public String getUpwd() {
  26. return upwd;
  27. }
  28. public void setUpwd(String upwd) {
  29. this.upwd = upwd;
  30. }
  31. public String getUsex() {
  32. return usex;
  33. }
  34. public void setUsex(String usex) {
  35. this.usex = usex;
  36. }
  37. public String[] getHobby() {
  38. return hobby;
  39. }
  40. public void setHobby(String[] hobby) {
  41. this.hobby = hobby;
  42. }
  43. public String getCity() {
  44. return city;
  45. }
  46. public void setCity(String city) {
  47. this.city = city;
  48. }
  49. public boolean isMarry() {
  50. return marry;
  51. }
  52. public void setMarry(boolean marry) {
  53. this.marry = marry;
  54. }
  55. public String getComment() {
  56. return comment;
  57. }
  58. public void setComment(String comment) {
  59. this.comment = comment;
  60. }
  61. @Override
  62. public String toString() {
  63. return "Users{" +
  64. "id=" + id +
  65. ", uname='" + uname + '\'' +
  66. ", upwd='" + upwd + '\'' +
  67. ", usex='" + usex + '\'' +
  68. ", hobby=" + Arrays.toString(hobby) +
  69. ", city='" + city + '\'' +
  70. ", marry=" + marry +
  71. ", comment='" + comment + '\'' +
  72. '}';
  73. }
  74. }

MainController.java

  1. package com.zs.controller;
  2. import com.sun.xml.internal.ws.api.databinding.Databinding;
  3. import com.zs.model.Student;
  4. import com.zs.model.TestModel;
  5. import com.zs.model.Users;
  6. import com.zs.validator.StudentValidator;
  7. import org.springframework.stereotype.Controller;
  8. import org.springframework.ui.Model;
  9. import org.springframework.ui.ModelMap;
  10. import org.springframework.validation.DataBinder;
  11. import org.springframework.validation.Errors;
  12. import org.springframework.validation.annotation.Validated;
  13. import org.springframework.web.bind.annotation.InitBinder;
  14. import org.springframework.web.bind.annotation.RequestMapping;
  15. import org.springframework.web.bind.annotation.RequestMethod;
  16. import java.util.ArrayList;
  17. import java.util.HashMap;
  18. import java.util.List;
  19. import java.util.Map;
  20. /** * @author 小思 * @PackageName:com.zs.controller * @ClassName: MainController * @Description:收集与传递数据方法 * @date 2018/11/4 16:10 */
  21. @Controller
  22. public class MainController {
  23. /** * @Author 小思 * @Description 测试使用modelAttribute单纯的给对象设置值 * @Date 2018/11/4 18:42 * @Param [modelMap] * @return java.lang.String **/
  24. @RequestMapping("test1")
  25. public String test1(ModelMap modelMap){
  26. Users u=new Users();
  27. u.setId(1);
  28. u.setUname("李四");
  29. u.setUpwd("123456");
  30. u.setUsex("男");
  31. String[] hobby=new String[]{ "阅读","观影"};
  32. u.setHobby(hobby);
  33. u.setCity("邵阳");
  34. u.setMarry(true);
  35. u.setComment("此用户是vip客户,于2016年注册");
  36. modelMap.addAttribute("users",u);
  37. return "myTest1";
  38. }
  39. //获取myTest1.jsp页面上的值
  40. @RequestMapping("test4")
  41. public String test4(Users users){
  42. System.out.println(users);
  43. return "index";
  44. }
  45. }

myTest1.jsp

  1. <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
  2. <%--
  3. @Name: test
  4. @Description:
  5. @author 小思
  6. @date 2018/11/4 16:18
  7. --%>
  8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9. <html>
  10. <head>
  11. <title>测试页面传输与接收数据</title>
  12. </head>
  13. <body>
  14. <%--测试form标签获取值与传递值--%>
  15. <%--modelAttribute="users"uses是注解里面对象的名称
  16. path="uname"对应对象中的属性
  17. --%>
  18. <form:form action="/test4.action" method="post" modelAttribute="users">
  19. <%--测试使用modelAttribute单纯的给对象设置值--%>
  20. <%--用户id--%><form:hidden path="id"></form:hidden><br>
  21. 用户姓名:<form:input path="uname"></form:input><br>
  22. 用户密码:<form:password path="upwd"></form:password><br>
  23. 用户性别: <form:radiobutton path="usex" value="男" label="男"></form:radiobutton>
  24. <form:radiobutton path="usex" value="女" label="女"></form:radiobutton><br>
  25. 用户爱好:<form:checkbox path="hobby" value="阅读" label="阅读"></form:checkbox>
  26. <form:checkbox path="hobby" value="观影" label="观影"></form:checkbox>
  27. <form:checkbox path="hobby" value="旅游" label="旅游"></form:checkbox>
  28. <form:checkbox path="hobby" value="运动" label="运动"></form:checkbox><br>
  29. 居住地址:<form:select path="city">
  30. <form:option value="长沙" label="长沙"></form:option>
  31. <form:option value="衡阳" label="衡阳"></form:option>
  32. <form:option value="常德" label="常德"></form:option>
  33. <form:option value="邵阳" label="邵阳"></form:option>
  34. <form:option value="祁阳" label="祁阳"></form:option>
  35. <form:option value="张家界" label="张家界"></form:option>
  36. </form:select><br>
  37. 用户婚姻状态:<form:checkbox path="marry"></form:checkbox><br>
  38. 备注:<form:textarea path="comment"></form:textarea><br>
  39. <input type="submit" value="修改">
  40. </form:form>
  41. </body>
  42. </html>

重新发布项目,在浏览器输入http://localhost:8080/test1.action运行出现
在这里插入图片描述
点击修改,后台获取数据
在这里插入图片描述

个别标签的高级使用

TestModel.java

  1. package com.zs.model;
  2. /** * @author 小思 * @PackageName:com.zs.model * @ClassName: TestModel * @Description:测试的实体类 * @date 2018/11/4 18:52 */
  3. public class TestModel {
  4. private String[] hobby;
  5. private Integer cid;
  6. private String city;
  7. public String[] getHobby() {
  8. return hobby;
  9. }
  10. public void setHobby(String[] hobby) {
  11. this.hobby = hobby;
  12. }
  13. public Integer getCid() {
  14. return cid;
  15. }
  16. public void setCid(Integer cid) {
  17. this.cid = cid;
  18. }
  19. public String getCity() {
  20. return city;
  21. }
  22. public void setCity(String city) {
  23. this.city = city;
  24. }
  25. }

myTest2.jsp

  1. <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
  2. <%--
  3. @Name: success
  4. @Description:
  5. @author 小思
  6. @date 2018/11/4 16:18
  7. --%>
  8. <%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
  9. <html>
  10. <head>
  11. <title>测试后台向前端传递集合数据给form标签接收</title>
  12. </head>
  13. <body>
  14. <%--测试后台向前端传递集合数据给form标签接收--%>
  15. <form:form action="/test3.action" method="post" modelAttribute="tm">
  16. 爱好: <form:checkboxes path="hobby" items="${hobbys}"></form:checkboxes><br>
  17. 地址: <form:select path="cid" items="${cities}"></form:select>
  18. <input type="submit" value="提交">
  19. </form:form>
  20. </body>
  21. </html>

MainController.java

  1. package com.zs.controller;
  2. import com.sun.xml.internal.ws.api.databinding.Databinding;
  3. import com.zs.model.Student;
  4. import com.zs.model.TestModel;
  5. import com.zs.model.Users;
  6. import com.zs.validator.StudentValidator;
  7. import org.springframework.stereotype.Controller;
  8. import org.springframework.ui.Model;
  9. import org.springframework.ui.ModelMap;
  10. import org.springframework.validation.DataBinder;
  11. import org.springframework.validation.Errors;
  12. import org.springframework.validation.annotation.Validated;
  13. import org.springframework.web.bind.annotation.InitBinder;
  14. import org.springframework.web.bind.annotation.RequestMapping;
  15. import org.springframework.web.bind.annotation.RequestMethod;
  16. import java.util.ArrayList;
  17. import java.util.HashMap;
  18. import java.util.List;
  19. import java.util.Map;
  20. /** * @author 小思 * @PackageName:com.zs.controller * @ClassName: MainController * @Description:收集与传递数据方法 * @date 2018/11/4 16:10 */
  21. @Controller
  22. public class MainController {
  23. @RequestMapping("test2")
  24. public String test2(ModelMap modelMap){
  25. //设置页面总共拥有的爱好
  26. List<String> hobbys=new ArrayList<>();
  27. hobbys.add("篮球");
  28. hobbys.add("足球");
  29. hobbys.add("排球");
  30. hobbys.add("羽毛球");
  31. //用户拥有的爱好
  32. TestModel tm=new TestModel();
  33. tm.setHobby(new String[]{ "足球","羽毛球"});
  34. //设置页面默认会出现的城市
  35. Map<Integer,String> cities=new HashMap<>();
  36. cities.put(1,"衡阳");
  37. cities.put(2,"株洲");
  38. cities.put(3,"长沙");
  39. cities.put(4,"常德");
  40. //设置用户所在的城市
  41. tm.setCid(3);
  42. modelMap.addAttribute("cities",cities);
  43. modelMap.addAttribute("hobbys",hobbys);
  44. modelMap.addAttribute("tm",tm);
  45. return "myTest2";
  46. }
  47. //获取myTest2.jsp页面上的值
  48. @RequestMapping("test3")
  49. public String test3(TestModel testModel){
  50. System.out.println("爱好:");
  51. for (String s : testModel.getHobby()) {
  52. System.out.println(s+" ");
  53. }
  54. System.out.println("cid="+testModel.getCid());
  55. return "index";
  56. }
  57. }

重新发布项目,在浏览器输入http://localhost:8080/test2.action运行出现
在这里插入图片描述
点击提交,控制台出现
在这里插入图片描述

form表单的errors标签的使用

Student.java

  1. package com.zs.model;
  2. import java.io.Serializable;
  3. /** * @author 小思 * @PackageName:com.zs.model * @ClassName: Student * @Description:测试error标签的实体类 * @date 2018/11/4 19:42 */
  4. public class Student implements Serializable {
  5. private String sname;
  6. private String sage;
  7. public String getSname() {
  8. return sname;
  9. }
  10. public void setSname(String sname) {
  11. this.sname = sname;
  12. }
  13. public String getSage() {
  14. return sage;
  15. }
  16. public void setSage(String sage) {
  17. this.sage = sage;
  18. }
  19. }

StudentValidator.java

  1. package com.zs.validator;
  2. import com.zs.model.Student;
  3. import org.springframework.validation.Errors;
  4. import org.springframework.validation.ValidationUtils;
  5. import org.springframework.validation.Validator;
  6. /** * @author 小思 * @PackageName:com.zs.validator * @ClassName: StudentValidator * @Description: * @date 2018/11/4 19:43 */
  7. public class StudentValidator implements Validator {
  8. @Override
  9. public boolean supports(Class<?> aClass) {
  10. return Student.class.equals(aClass);
  11. }
  12. @Override
  13. public void validate(Object o, Errors errors) {
  14. // 验证sname和sage是否为null
  15. ValidationUtils.rejectIfEmpty(errors,"sname",null,"学生姓名不能为空");
  16. ValidationUtils.rejectIfEmpty(errors,"sage",null,"学生年龄不能为空");
  17. }
  18. }

registerForm.jsp

  1. <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
  2. <%--
  3. @Name: registerForm
  4. @Description:
  5. @author 小思
  6. @date 2018/11/4 19:40
  7. --%>
  8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9. <html>
  10. <head>
  11. <title>form的error标签的使用</title>
  12. </head>
  13. <body>
  14. <form:form action="/testError.action" method="post" modelAttribute="student">
  15. 学生名字:<form:input path="sname"></form:input><font color="red"><form:errors path="sname"></form:errors></font><br>
  16. 学生年龄:<form:input path="sage"></form:input><font color="red"><form:errors path="sage"></form:errors></font><br>
  17. <input type="submit" value="注册">
  18. </form:form>
  19. </body>
  20. </html>

MainController.java

  1. package com.zs.controller;
  2. import com.sun.xml.internal.ws.api.databinding.Databinding;
  3. import com.zs.model.Student;
  4. import com.zs.model.TestModel;
  5. import com.zs.model.Users;
  6. import com.zs.validator.StudentValidator;
  7. import org.springframework.stereotype.Controller;
  8. import org.springframework.ui.Model;
  9. import org.springframework.ui.ModelMap;
  10. import org.springframework.validation.DataBinder;
  11. import org.springframework.validation.Errors;
  12. import org.springframework.validation.annotation.Validated;
  13. import org.springframework.web.bind.annotation.InitBinder;
  14. import org.springframework.web.bind.annotation.RequestMapping;
  15. import org.springframework.web.bind.annotation.RequestMethod;
  16. import java.util.ArrayList;
  17. import java.util.HashMap;
  18. import java.util.List;
  19. import java.util.Map;
  20. /** * @author 小思 * @PackageName:com.zs.controller * @ClassName: MainController * @Description:收集与传递数据方法 * @date 2018/11/4 16:10 */
  21. @Controller
  22. public class MainController {
  23. //设置验证的类为StudentValidator
  24. @InitBinder
  25. public void InitBinder(DataBinder dataBinder){
  26. dataBinder.setValidator(new StudentValidator());
  27. }
  28. //进入registerForm.jsp之前先访问的方法
  29. @RequestMapping("/register")
  30. public String register(ModelMap modelMap){
  31. Student student=new Student();
  32. // model中添加属性student,值是Student对象
  33. modelMap.addAttribute("student",student);
  34. return "registerForm";
  35. }
  36. //验证是否通过
  37. @RequestMapping("testError")
  38. public String testError(@Validated Student student, Errors errors){
  39. //页面出现错误信息,不可以提交数据,返回原页面
  40. if(errors.hasErrors()){
  41. return "registerForm";
  42. }
  43. //没有错误信息就提交
  44. else{
  45. return "index";
  46. }
  47. }
  48. }

重新发布项目,在浏览器输入http://localhost:8080/register.action运行出现
在这里插入图片描述
点注册时:
在这里插入图片描述

说在最后的话:编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~

发表评论

表情:
评论列表 (有 0 条评论,341人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringMVC form标签

    本篇我们来学习Spring MVC表单标签的使用,借助于Spring MVC提供的表单标签可以让我们在视图上展示WebModel中的数据更加轻松。 一.首先我们先做一个简单了