SpringMVC--数据绑定和表单标签的应用(附带实例)

一文学会 Spring MVC 表单标签 form 标签, input 标签, password 标签, checkbox 标签, checkboxes 标签, radiobutton 与 radiobuttons 标签, select 与 option/options 标签 阅读详情
SpringMVC数据绑定和表单标签的应用

1) 创建工程并导入相关JAR包
在这里插入图片描述

应用中需要使用 JSTL,因此不仅需要将 Spring MVC 的相关 JAR 包复制到应用的 WEN-INF/lib 目录下,还需要从 Tomcat 的 webapps\examples\WEB-INF\lib 目录下将 JSTL 的相关 JAR 包复制到应用的 WEN-INF/lib 目录下。

2)配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>SpringMVCForm</display-name>
  
  <!--避免中文乱码-->
    <filter>
        <filter-name>encodingFilter</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>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    
    <servlet>
	  	<servlet-name>springmvc</servlet-name>
	  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	  	<!-- 默认找 /WEB-INF/[servlet的名称]-servlet.xml -->
	  	<init-param>
	  		<param-name>contextConfigLocation</param-name>
	  		<param-value>classpath:springmvc-servlet.xml</param-value>
	  	</init-param>
  	</servlet>
  	<servlet-mapping>
  		<servlet-name>springmvc</servlet-name>
  		<url-pattern>*.action</url-pattern>
  	</servlet-mapping>
</web-app>

3)配置springmvc-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:p="http://www.springframework.org/schema/p"
	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.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

        
        
        <!-- 扫描@Controler  @Service   -->
        <context:component-scan base-package="pers.zhang"/>
        
        <!-- 注解驱动 -->
        <mvc:annotation-driven/>
        
        <!-- 视图解释器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        	<property name="prefix" value="/WEB-INF/jsp/"/>
        	<property name="suffix" value=".jsp"/>
        </bean>
</beans>

4)创建POJO

package pers.zhang.pojo;

public class User {
    private String userName;
    private String[] hobby; // 兴趣爱好
    private String[] friends; // 朋友
    private String carrer;
    private String houseRegister;
    private String remark;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String[] getHobby() {
		return hobby;
	}
	public void setHobby(String[] hobby) {
		this.hobby = hobby;
	}
	public String[] getFriends() {
		return friends;
	}
	public void setFriends(String[] friends) {
		this.friends = friends;
	}
	public String getCarrer() {
		return carrer;
	}
	public void setCarrer(String carrer) {
		this.carrer = carrer;
	}
	public String getHouseRegister() {
		return houseRegister;
	}
	public void setHouseRegister(String houseRegister) {
		this.houseRegister = houseRegister;
	}
	public String getRemark() {
		return remark;
	}
	public void setRemark(String remark) {
		this.remark = remark;
	}
    
    
}

5)Service层
UserService接口:

package pers.zhang.service;

import java.util.ArrayList;

import pers.zhang.pojo.User;

public interface UserService {
    boolean addUser(User u);
    ArrayList<User> getUsers();
}

UserService实现类:

package pers.zhang.service;

import java.util.ArrayList;

import org.springframework.stereotype.Service;

import pers.zhang.pojo.User;

@Service
public class UserServiceImpl implements UserService {
    // 使用静态集合变量users模拟数据库
    private static ArrayList<User> users = new ArrayList<User>();

    @Override
    public boolean addUser(User u) {
        if (!"IT民工".equals(u.getCarrer())) { // 不允许添加IT民工
            users.add(u);
            return true;
        }
        return false;
    }

    @Override
    public ArrayList<User> getUsers() {
        return users;
    }
}

6)Controller 层:
在 Controller 类 UserController 中定义了请求处理方法,包括处理 user/input 请求的 inputUser 方法以及处理 user/save 请求的 addUser 方法,其中在 addUser 方法中用到了重定向。

在 UserController 类中,通过 @Autowired 注解在 UserController 对象中主动注入 UserService 对象,实现对 user 对象的添加和查询等操作。

通过 model 的 addAttribute 方法将 User 类对象、HashMap 类型的 hobbys 对象、String[] 类型的 carrers 对象以及 String[] 类型的 houseRegisters 对象传递给 View(userAdd.jsp)。

package pers.zhang.controller;

import java.util.HashMap;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
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 pers.zhang.pojo.User;
import pers.zhang.service.UserService;

@Controller
@RequestMapping("/user")
public class UserController {
    // 得到一个用来记录日志的对象,这样在打印信息的时候能够标记打印的是哪个类的信息
    private static final Log logger = LogFactory.getLog(UserController.class);
    @Autowired
    private UserService userService;

    @RequestMapping(value = "/input.action")
    public String inputuser(Model model) {
        HashMap<String, String> hobbys = new HashMap<String, String>();
        hobbys.put("篮球", "篮球");
        hobbys.put("乒乓球", "乒乓球");
        hobbys.put("电玩", "电玩");
        hobbys.put("游泳", "游泳");
        // 如果model中没有user属性,userAdd.jsp会抛出异常,因为表单标签无法找到
        // modelAttribute 属性指定的 form backing object
        model.addAttribute("user", new User());
        model.addAttribute("hobbys", hobbys);
        model.addAttribute("carrers", new String[] { "教师", "学生", "coding 搬运工",
                "IT民工", "其他" });
        model.addAttribute("houseRegisters", new String[] { "北京", "上海", "广州",
                "深圳", "其他" });
        return "userAdd";
    }

    @RequestMapping(value = "/save.action")
    public String addUser(@ModelAttribute User user, Model model) {
        if (userService.addUser(user)) {
            logger.info("成功");
            return "redirect:/user/list.action";
        } else {
            logger.info("失败");
            HashMap<String, String> hobbys = new HashMap<String, String>();
            hobbys.put("篮球", "篮球");
            hobbys.put("乒乓球", "乒乓球");
            hobbys.put("电玩", "电玩");
            hobbys.put("游泳", "游泳");
            // 这里不需要 model.addAttribute ("user", new User ()),因为 @ModelAttribute
            // 指定 form backing object
            model.addAttribute("hobbys", hobbys);
            model.addAttribute("carrers", new String[] { "教师", "学生",
                    " coding搬运工", "IT民工", "其他" });
            model.addAttribute("houseRegisters", new String[] { "北京", "上海",
                    "广州", "深圳", "其他" });
            return "userAdd";
        }
    }

    @RequestMapping(value = "/list.action")
    public String listUsers(Model model) {
        List<User> users = userService.getUsers();
        model.addAttribute("users", users);
        return "userList";
    }
}

7)View 层
View 层包含两个 JSP 页面,一个是信息输入页面 userAdd.jsp,一个是信息显示页面 userList.jsp。在 springMVCDemo04 应用的 WEB-INF/jsp 目录下创建这两个 JSP 页面。

在 userAdd.jsp 页面中将 Map 类型的 hobbys 绑定到 checkboxes 上,将 String[] 类型的 carrers 和 houseRegisters 绑定到 select 上,实现通过 option 标签对 select 添加选项,同时表单的 method 方法需指定为 post 来避免中文乱码问题。

在 userList.jsp 页面中使用 JSTL 标签遍历集合中的用户信息 。

userAdd.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form:form modelAttribute="user" method="post" action="${pageContext.request.contextPath }/user/save.action">
        <fieldset>
            <legend> 添加一个用户 </legend>
            <P>
                <label>用户名:</label>
                <form:input path="userName" />
            </p>
            <P>
                <label>爱好:</label>
                <form:checkboxes items="${hobbys}" path="hobby" />
            </p>
            <P>
                <label>朋友:</label>
                <form:checkbox path="friends" value="张三" /> 张三
                <form:checkbox path="friends" value="李四" /> 李四
                <form:checkbox path="friends" value="王五" /> 王五
                <form:checkbox path="friends" value="赵六" /> 赵六
            </p>
            <P>
                <label>职业:</label>
                <form:select path="carrer">
                    <option />请选择职业
                    <form:options items="${carrers }" />
                </form:select>
            </p>
            <P>
                <label>户籍:</label>
                <form:select path="houseRegister">
                    <option />请选择户籍
                    <form:options items="${houseRegisters }" />
                </form:select>
            </p>
            <P>
                <label>个人描述:</label>
                <form:textarea path="remark" rows="5" />
            </p>
            <p id="buttons">
                <input id="reset" type="reset">
                <input id="submit" type="submit" value="添加">
            </p>
        </fieldset>
    </form:form>
</body>
</html>

userList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户列表</title>
</head>
<body>
    <h1>用户列表</h1>
    <a href="<c:url value="/user/input.action"/>">继续添加</a>
    <table>
        <tr>
            <th>用户名</th>
            <th>兴趣爱好</th>
            <th>朋友</th>
            <th>职业</th>
            <th>户籍</th>
            <th>个人描述</th>
        </tr>
        <c:forEach items="${users}" var="user">
            <tr>
                <td>${user.userName }</td>
                <td>
                    <c:forEach items="${user.hobby }" var="hobby">
                        ${hobby }&nbsp;
                    </c:forEach>
                </td>
                <td>
                    <c:forEach items="${user.friends}" var="friend">
                        ${friend }&nbsp;
                    </c:forEach>
                </td>
                <td>${user.carrer }</td>
                <td>${user.houseRegister }</td>
                <td>${user.remark }</td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

8)测试:
在这里插入图片描述失败,返回添加页面:
在这里插入图片描述

更换职业,添加成功
在这里插入图片描述
显示列表
在这里插入图片描述

springmvc 参数绑定例子 springmvc 参数绑定例子,@RequestParam @CookieValue @PathVariable @ModelAttribute 立即下载

相关推荐

SpringMVC表单标签进行数据绑定(图书管理)Demo

SpringMVC表单标签进行数据绑定(图书管理)DemoSpringMVC表单标签进行数据绑定(图书管理)Demo

Spring MVC数据绑定和表单标签的应用(附带实例)

为了让读者进一步学习数据绑定和表单标签,本节给出了一个应用范例 springMVCDemo04。该应用中实现了 User 类属性和 JSP 页面中表单参数的绑定,同时在 JSP 页面中分别展示了 input、textarea、checkbox、checkboxs、select 等标签。

unber的博客 946

SpringMVC form标签引入及使用方法

主要介绍了SpringMVC form标签引入及使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Spring MVC -- 数据绑定和表单标签库

数据绑定是将用户输入绑定到领域模型的一种特性。有了数据绑定,类型总是为String的HTTP请求参数,可用于填充不同类型的对象属性(或者说字段)。数据绑定使得form bean(在前面几篇博客案例中的表单类ProductForm实例)变得多余的。 为了高效的使用数据绑定,还需要Spring的表单标签库。本篇将重点介绍数据绑定和表单标签库,并提供范例,展示表单标签库中这些标签的用法。 一 数据绑...

weixin_30641465的博客 430

第八章 MobileNetv3网络详解

本文介绍了基于互补的搜索技术和新颖的架构设计的MobileNets的下一代。MobileNetV3通过硬件感知网络架构搜索(NAS)和NetAdapt算法相结合,针对移动电话CPU进行优化,随后通过新颖的架构改进技术进行了进一步提高。本文开始探索自动化搜索算法和网络设计如何相互协作,以利用互补的方法改进整体技术水平。通过此过程,我们创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用情况。

ADICDFHL的博客 1万+

Cadence导入tsmcN65GP PDK的完整流程与常见问题解析

本文详细介绍了Cadence导入tsmcN65GP PDK的完整流程,包括文件解压、目录结构解析、安装脚本运行及Cadence集成配置。重点解析了常见问题如文件路径错误、权限问题和工艺库显示不全的解决方案,并提供了实战技巧与优化建议,帮助用户高效完成PDK安装与配置。

weixin_29215391的博客 546

SpringMVC中form标签与数据绑定应用实践

SpringMVC提供了一个form标签,通过其可以实现模型数据中的属性和HTML表单元素属性绑定,以实现表单数据更便捷编辑和表单的回显。通过form表单的modelAttribute属性指定绑定的模型属性。若没有指定该属性,将默认从request域中获取command的表单bean,如果该属性也不存在,将抛出异常。 如下所示: SpringMVC提供的表单组件标签的共同属性① path :表单字段

小小默:进无止境 4747

生信物种注释软件Kraken2+Bracken的安装与使用

一、软件安装与数据库下载 1.Kraken2安装 Kraken2是一个基于k-mer算法的高精度宏基因组序列分类软件,能够快速的将测序reads进行物种分类。 使用conda一键安装,要先安装好anaconda或者miniconda conda install -y kraken2 输入krakek2 --help 出现如下所示帮助文档,则表示安装成功。 2.Bracken安装 bracken是一种从宏基因组数据中高度准确的计算物种丰度的统计方法。 同样使用conda一键安装 conda install -

jileiqwd的博客 1万+

Spring MVC-表单(Form)标签-错误处理(Error Handling)示例(转载实践)

以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_errors.htm 说明:示例基于Spring MVC 4.1.6。 以下示例显示了如何在使用Spring Web MVC框架的窗体中使用错误处理和验证器。首先,让我们使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态...

angou6476的博客 585

医疗AI Agent实战:从零搭建一个能看病的智能助手(附完整代码)

本文详细介绍了如何从零搭建一个医疗AI Agent智能助手,涵盖核心架构设计、症状推理引擎开发、安全与合规实现以及系统集成等关键环节。通过完整的代码示例和实战案例,帮助开发者快速构建具备医疗咨询能力的智能Agent,提升医疗服务的效率和质量。

ss78901的博客 466

2025年(第十一届)全国大学生统计建模大赛论文及选题分析

基于数据驱动决策:整个研究围绕给定的洪水灾害相关数据进行深入挖掘和分析,从数据清洗、特征分析、模型建立到最终预测,每一步都以数据为基础,通过对数据的有效利用来揭示洪水灾害发生的相关规律和特征,为洪水灾害的风险评估和预测提供依据,符合数据引领未来决策的理念。实际应用导向:洪水灾害是现实中严重影响人类生命财产安全和社会经济发展的重要问题,本研究旨在实现对洪水灾害的预测,其成果可直接应用于防洪减灾工作,如洪水预警、风险评估与区划等,对实际防灾减灾工作具有重要的指导意义,体现了以数据为支撑服务实际应用的特点。

qq_52590045的博客 1万+

SpringMVC数据绑定与表单标签库

SpringMVC数据绑定与表单标签库 数据绑定是将用户参数输入值绑定到领域模型的一种特性。 数据绑定的优点主要有两点: 第一,不再需要将HTTP请求中的String类型转换成模型所需的类型。 第二,当输入的验证失败时会重新生成一个HTML表单,无需重新填写输入字段。 在SpringMVC中,为了方便高效地使用数据绑定,还需使用表单标签库。 在SpringMVC中数据绑定有这样几层含义:绑定请求参数输入值到领域模型;模型数据到视图的绑定(输入验证失败时);模型数据到表单元素的绑定(如选项值被控制器初始化)

nuist_NJUPT的博客 1280

安装openclaw时出现npm error code ENOENT npm error syscall spawn git报错的解决方案

本文主要介绍了安装openclaw时出现npm error code ENOENT npm error syscall spawn git报错的解决方案,希望能对使用openclaw的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 12万+

SpringMVC06_表单标签库

SpringMVC06_表单标签库 原生表单示例: tag.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page isELIgnored="false" %> <html> <head> <title>Title</title> </head> <body> <h1>学生信息&

BLU_111的博客 4万+

【行为决策模块项目实战】解耦控制--多控制器管理与切换的方法(附C++代码)

[请添加图片描述](https://img-blog.csdnimg.cn/c11300d9e4fe421e9070f474a468d1db.jpeg)本文先对多控制器管理与切换的方法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容VERTICAL_VEL, //垂直速度PID控制器VERTICAL_POS, //垂直位置PID控制器HORIZONTAL, //水平速度PID控制器YAW, //航向角yaw位置逻辑控制器。

qq_35635374的博客 1211

北斗导航 | 接收机自主完好性监测(RAIM)算法近三年研究现状总结(2022-2025)

近三年RAIM算法已从传统的单故障检测演进为多星座协同、智能融合的复杂系统,在航空、自动驾驶等安全关键领域实现规模化应用。未来需重点突破城市复杂环境适应性和标准化体系建设,推动技术从"可用"向"可信"跨越。

尘世冰封的专栏 439

SpringMVC框架数据绑定和表单标签库

数据绑定是将用户参数输入值绑定到领域模型(实体类)的一种特性,在SpringMVC的Controller和View参数数据传递中,在所有HTTP请求参数的类型均为字符串。如果模型需要绑定的类型为Double或Int,则需要手动进行类型转换,而有了数据绑定后,就不在需要手动将HTTP请求中的String类型转换为模型需要的类型,另一个好处是,当输入验证失败时(数据自动回填),会重新生成一个HTTP表...

qq_45053685的博客 473

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SpringMVC 数据绑定和表单标签库

数据绑定是将用户输入绑定到领域模型的一种特性。有了数据绑定,类型总是为 String 的 HTTP 请求参数,可用于填充不同类型的对象属性。数据绑定使得 form bean(如前面各章中的ProductForm 实例)变成多余的。为了高效地使用数据绑定,还需要 Spring 的表单标签库。数据绑定概览:数据绑定的另一个好处是:当输入验证失败时,它会重新生成一个 HTML 表单。手工编写 HTML ...

qq_36173187的博客 424

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SpringMVC表单标签简介

SpringMVC表单标签简介    在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容。下面将对这些标签一一介绍。    在正式介绍SpringMVC的表单标签之前,我们需要先在JSP中声明使用的标签,具体做法是在JSP文件的顶部加入以下指令:   Jsp代码  "http://www.springf

Elim的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【720科技SpringMVC】---20180413 SpringMVC 数据绑定和表单标签库

内容关键词:数据绑定、表单标签库、JSP、标签、类知识来源: 720科技(张森鹏)、Spring MVC学习指南(第2版)  数据绑定是将用户输入绑定到领域模型的一种特性。有了数据绑定,类型总是为 String 的 HTTP 请求参数,可用于填充不同类型的对象属性。数据绑定使得 form bean(如前面各章中的ProductForm 实例)变成多余的。为了高效地使用数据绑定,还需要 Spring...

不要稥菜的博客 292

SpringMVC--表单标签库详解

SpringMVC的表单标签库 表单标签库中包含了可以用在 JSP 页面中渲染 HTML 元素的标签。在 JSP 页面使用 Spring 表单标签库时,必须在 JSP 页面开头处声明 taglib 指令,指令代码如下: <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 在表单标签库中有 ...

吴声子夜歌的博客 2143

数据绑定和表单标签库

1、数据绑定 在spring MVC中数据绑定有这样基层定义: 绑定请求参数输入值到领域模型 模型数据到视图的绑定 模型数据到表单元素的绑定。 2、表单标签库 表单标签库中包含了可以用在JSP页面中渲染HTML元素的标签。 在JSP页面使用时需要引入如下代码: <%@taglib prefix="form" uri="http://www.springfra...

weixin_34117211的博客 290

SpringMVC表单标签和表单标签简介

转载自https://blog.youkuaiyun.com/hp_yangpeng/article/details/51906654 SpringMVC<from:form>表单标签和<input>表单标签简介 在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容。下面将对这些标签一一介绍。 ...

pp814274513的专栏 408
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值