使用Spring MVC表单标签
概述
在低版本的Spring中,你必须通过JSTL或<spring:bind>将表单对象绑定到HTML表单页面中,对于习惯了Struts表单标签的开发者来说,Spring MVC的这一表现确实让人失望。不过这一情况已经一去不复返了,从Spring 2.0开始,Spring MVC开始全面支持表单标签,通过Spring MVC表单标签,我们可以很容易地将控制器相关的表单对象绑定到HTML表单元素中。
在上一篇文章《Spring MVC的表单控制器》中(http://tech.it168.com/j/2007-07-26/200707261434046.shtml)我们已经使用到了部分的Spring MVC表单标签,在本文中我们将对Spring MVC表单标签进行全面的介绍,让我们首先从<form:form>标签开始吧。
form标签
和使用任何JSP扩展标签一样,在使用Spring表单标签之前,你必须在JSP页面中添加一行引用Spring表单标签的声明,如下所示:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> ①引入标签的声明
<html>
… ②声明后,在页面中就可以使用任意Spring表单标签了
</html>
一般情况下,我们使用“form”作为Spring MVC表单标签的前缀,当然只要愿意,你可以调整为其它的前缀名。在声明好标签引用后,就可以在该JSP文件中使用所有Spring MVC的表单标签了。下面是一个使用<form:form>表单标签的示例,它将最终生成一个HTML的 form表单:
<form:form>
用户名:<form:input path="userName" /> <br>
密 码:<form:password path="password" /><br>
Email:<form:input path="email" /><br>
<input type="submit" value="注册" name="testSubmit"/>
<input type="reset" value="重置" />
</form:form>
回忆一下我们在《Spring MVC的表单控制器》(http://tech.it168.com/j/2007-07-26/200707261434046.shtml)文章中介绍的用户注册表单控制器,用户通过GET请求调用表单控制器时,表单控制器生成一个新的表单对象,然后重定向到表单输入页面。正因为表单页面是通过访问表单控制器导向过来的,所以<form:form>标签本身无需做额外的设置就可以达到以下两个目标:
1) 它不需要象HTML的<form>标签或Struts的表单标签一样通过action属性指定表单提交的地址。假设和<form:form>标签对应的控制器的URL是“/registerUser.html”,应用部署目录为“baobaotao”,则最后产生的HTML代码自动包含表单提交地址:
<form id="command" method="post" action="/baobaotao//registerUser.html">…</form>
2) <form:form>标签内部的组件标签(如<form:input>、<form:password>等)可以直接和表单控制器所对应的表单对象进行值绑定。
默认情况下,表单控制器将表单对象以“command”为名放到PageContext中,你可以通过表单控制器commandName属性的设置使用其它的名字(假设设置为“user”),这时你必须通过<form:form commandName="user">显式指定绑定的表单对象名称。
除了commandName属性外,Spring表单标签拥有丰富的可设置属性,这些属性大都是HTML表单标签属性的镜像,如onclick、ondblclick、tabindex等等。需要注意的一点是这些属性都是小写的,而对应的HTML标签的属性则没有这个限制。但是有几个和HTML标签有区别的属性,我们通过表 1进行说明:
表 1 表单元素标签特殊属性
目录 说明
cssClass 使用该属性指定表单元素CSS样式名,相当于HTML元素的class属性。示例:<form:input path="userName" cssClass="inputStyle"/>。
cssStyle 直接通过该属性指定样式,相当于HTML元素的style属性。示例:
<form:input path="userName" cssStyle="width:100px"/>。
cssErrorClass cssClass表示表单元素未发生错误时对应的样式,而cssErrorClass表示表单元素发生错误时对应的样式,示例:
输入组件标签
表单中有一些用于接受输入值的组件,如单行文本框、多行文本框以及密码框,Spring为它们提供了对应的表单标签,请看下面的例子:
代码清单 1 使用输入组件标签的表单
<form:form>
用户名:<form:input path="userName" /> <br> ①单行文件框标签
密 码:<form:password path="password" /><br> ②密码框标签
描 述:<form:textarea path="desc" cols="20" rows="3"/><br> ③多行文件框标签
<form:hidden path="times"/> ④隐藏组件的值
<input type="submit" value="注册" name="testSubmit"/>
<input type="reset" value="重置" />
</form:form>
正如你看到的,所有表单组件标签都通过path属性绑定表单对象的属性值,它支持级联属性,比如path="user.userName"将调用表单对象getUser.getUserName()绑定表单对象的属性值。这些表单组件标签拥有大多数HTML组件标签的镜像属性,如③处的<form:textarea>就使用了cols和rows属性设定列数和行数。
以上使用表单标签的页面的对应HTML页面如下所示:
<form id="command" method="post" action="/baobaotao//registerUser.html">
用户名:<input id="userName" name="userName" type="text" value=""/><br>
密 码: <input id="password" name="password" type="password" value=""/><br>
描 述:<textarea id="desc" name="desc" rows="3" cols="20"></textarea><br>
<input id="times" name="times" type="hidden" value="0"/>
<input type="submit" value="注册" name="testSubmit"/>
<input type="reset" value="重置" />
</form>
单选框和复选框组件标签
单选框和复选框组件虽然在HTML中都对应<input>元素标签,但在Spring MVC表单标签中,它们分别对应两个更达意的标签:
<form:radiobutton>和<form:checkbox>。
radiobutton
单选框组件由两个同名的标签组件组成,当表单对象对应属性值和value值相等时,单选框选中。下面是一个代表性别的单选框:
<form:form>
性 别:<form:radiobutton path="sex" value="0"/>男
<form:radiobutton path="sex" value="1"/>女
</form:form>
当表单对象的sex属性为0时(可以是String、int等可以自动转换为String的类型),所生成的HTML代码如下所示:
<form id="command" method="post" action="/baobaotao//registerUser.html">
性 别:<input id="sex1" name="sex" type="radio" value="0" checked="checked"/>男
<input id="sex2" name="sex" type="radio" value="1"/>女
</form>
checkbox
复选框组件标签相对来说复杂一些,复选框组件对应的表单属性不但可以boolean类型,还可以是String[]、Collection,Enum等类型。针对不同属性类型,复选框的选中状态的判断条件是不一样的:
boolean类型:当对应属性为true时,该复选框选中(一个属性仅对应一个复选框);
String[]、Collection或Enum类型:复选框对应值出现在对应属性列表中,该复选框选中;
其它类型:当复选框对应的值可以转换为对应属性值,该复选框选中。
假设用户注册的User表单对象包含了一个List类型的favorites属性:
import java.util.List;
public class User {
private List favorites;
public List getFavorites() {
return favorites;
}
public void setFavorites(List favorites) {
this.favorites = favorites;
}
}
我们希望将其在页面中使用一个复选框组件绑定这个属性,则可以使用以下的代码:
代码清单 2 复选框标签的使用
<form:form>
兴趣爱好:
<form:checkbox path="favorites" value="1"/>computer
<form:checkbox path="favorites" value="2"/>sport
<form:checkbox path="favorites" value="3"/>entertainment
<form:checkbox path="favorites" value="4"/>literature
</form:form>
除了正常的path属性名外,还必须提供一个value属性,假设User表单对象的favorites属性包括了1和3的值,那么产生的HTML页面为:
<form id="command" method="post" action="/baobaotao//registerUser.html">
兴趣爱好:<input id="favorites1" name="favorites" type="checkbox" value="1" checked="checked"/>
<input type="hidden" value="1" name="_favorites"/>computer
<input id="favorites2" name="favorites" type="checkbox" value="2" />
<input type="hidden" value="1" name="_favorites"/>sport
<input id="favorites3" name="favorites" type="checkbox" value="3" checked="checked"/>
<input type="hidden" value="1" name="_favorites"/>entertainment
<input id="favorites4" name="favorites" type="checkbox" value="4"/>
<input type="hidden" value="1" name="_favorites"/>literature
</form>
大家可能已经注意到每个复选框组件的后台都跟着一个隐藏组件,这是因为当HTML页面中的复选框没有被选中时,这个复选框的值不会在表单提交时作为HTTP请求参数发送到服务器端,这给Spring的表单数据绑定造成了麻烦——因为无法触发setFavorites()方法的调用(如果原来已经有值,这个值不会被设置为空)。解决方法就是在每个复选框后面加一个隐藏组件,并且将对应的复选框名字前添加一个下划线("_")作为隐藏组件的名字。这样一来,你相当于告诉Spring“这个表单中存在这样一个复选框,我希望表单对象中对应的属性和这个checkbox的状态保持一致”。
假设复选框对应的选项在数据库或配置文件中定义,那么页面复选框标签就不能通过硬编码的方式指定,相反必须根据配置的选项数据动态产生。对于这样的需求,代码清单 2的编写方式显然不能满足需求。回忆一下表单控制器的工作流程,我们知道可以通过复写referenceData()方法在表单显示前准备一些需要的数据,现在终于派上用场了,来看一下具体的实现:
代码清单 3 UserRegisterController:准备表单显示数据
package com.baobaotao.web.user;
…
import org.springframework.ui.ModelMap;
public class UserRegisterController extends SimpleFormController {
private BbtForum bbtForum;
①创建初始表单对象
protected Object formBackingObject(HttpServletRequest request)
throws Exception {
int userId = ServletRequestUtils.getIntParameter(request, "userId",-1);
User user = bbtForum.getUser(userId);
user.setUserName("tom");
List favorites = new ArrayList();①-1默认选中值为1和3的选项
favorites.add("1");
favorites.add("3");
user.setFavorites(favorites);
return user;
}
@Override ②准备表单显示时需要的数据
protected Map referenceData(HttpServletRequest request) throws Exception {
Map favoriteMap = new LinkedHashMap();
favoriteMap.put("1", "computer");
favoriteMap.put("2", "sport");
favoriteMap.put("3", "entertainment");
favoriteMap.put("4", "literature");
②-1将表单页面需要的对象以ModelMap返回,最终将以属性名值对方式出现在请求属性中
return new ModelMap().addObject("favoriteMap", favoriteMap);
}
@Override
protected ModelAndView onSubmit(Object command, BindException errors)
throws Exception {
User user = (User) command;
bbtForum.registerUser(user);
return new ModelAndView(getSuccessView(), "user", user);
}
}
概述
在低版本的Spring中,你必须通过JSTL或<spring:bind>将表单对象绑定到HTML表单页面中,对于习惯了Struts表单标签的开发者来说,Spring MVC的这一表现确实让人失望。不过这一情况已经一去不复返了,从Spring 2.0开始,Spring MVC开始全面支持表单标签,通过Spring MVC表单标签,我们可以很容易地将控制器相关的表单对象绑定到HTML表单元素中。
在上一篇文章《Spring MVC的表单控制器》中(http://tech.it168.com/j/2007-07-26/200707261434046.shtml)我们已经使用到了部分的Spring MVC表单标签,在本文中我们将对Spring MVC表单标签进行全面的介绍,让我们首先从<form:form>标签开始吧。
form标签
和使用任何JSP扩展标签一样,在使用Spring表单标签之前,你必须在JSP页面中添加一行引用Spring表单标签的声明,如下所示:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> ①引入标签的声明
<html>
… ②声明后,在页面中就可以使用任意Spring表单标签了
</html>
一般情况下,我们使用“form”作为Spring MVC表单标签的前缀,当然只要愿意,你可以调整为其它的前缀名。在声明好标签引用后,就可以在该JSP文件中使用所有Spring MVC的表单标签了。下面是一个使用<form:form>表单标签的示例,它将最终生成一个HTML的 form表单:
<form:form>
用户名:<form:input path="userName" /> <br>
密 码:<form:password path="password" /><br>
Email:<form:input path="email" /><br>
<input type="submit" value="注册" name="testSubmit"/>
<input type="reset" value="重置" />
</form:form>
回忆一下我们在《Spring MVC的表单控制器》(http://tech.it168.com/j/2007-07-26/200707261434046.shtml)文章中介绍的用户注册表单控制器,用户通过GET请求调用表单控制器时,表单控制器生成一个新的表单对象,然后重定向到表单输入页面。正因为表单页面是通过访问表单控制器导向过来的,所以<form:form>标签本身无需做额外的设置就可以达到以下两个目标:
1) 它不需要象HTML的<form>标签或Struts的表单标签一样通过action属性指定表单提交的地址。假设和<form:form>标签对应的控制器的URL是“/registerUser.html”,应用部署目录为“baobaotao”,则最后产生的HTML代码自动包含表单提交地址:
<form id="command" method="post" action="/baobaotao//registerUser.html">…</form>
2) <form:form>标签内部的组件标签(如<form:input>、<form:password>等)可以直接和表单控制器所对应的表单对象进行值绑定。
默认情况下,表单控制器将表单对象以“command”为名放到PageContext中,你可以通过表单控制器commandName属性的设置使用其它的名字(假设设置为“user”),这时你必须通过<form:form commandName="user">显式指定绑定的表单对象名称。
除了commandName属性外,Spring表单标签拥有丰富的可设置属性,这些属性大都是HTML表单标签属性的镜像,如onclick、ondblclick、tabindex等等。需要注意的一点是这些属性都是小写的,而对应的HTML标签的属性则没有这个限制。但是有几个和HTML标签有区别的属性,我们通过表 1进行说明:
表 1 表单元素标签特殊属性
目录 说明
cssClass 使用该属性指定表单元素CSS样式名,相当于HTML元素的class属性。示例:<form:input path="userName" cssClass="inputStyle"/>。
cssStyle 直接通过该属性指定样式,相当于HTML元素的style属性。示例:
<form:input path="userName" cssStyle="width:100px"/>。
cssErrorClass cssClass表示表单元素未发生错误时对应的样式,而cssErrorClass表示表单元素发生错误时对应的样式,示例:
输入组件标签
表单中有一些用于接受输入值的组件,如单行文本框、多行文本框以及密码框,Spring为它们提供了对应的表单标签,请看下面的例子:
代码清单 1 使用输入组件标签的表单
<form:form>
用户名:<form:input path="userName" /> <br> ①单行文件框标签
密 码:<form:password path="password" /><br> ②密码框标签
描 述:<form:textarea path="desc" cols="20" rows="3"/><br> ③多行文件框标签
<form:hidden path="times"/> ④隐藏组件的值
<input type="submit" value="注册" name="testSubmit"/>
<input type="reset" value="重置" />
</form:form>
正如你看到的,所有表单组件标签都通过path属性绑定表单对象的属性值,它支持级联属性,比如path="user.userName"将调用表单对象getUser.getUserName()绑定表单对象的属性值。这些表单组件标签拥有大多数HTML组件标签的镜像属性,如③处的<form:textarea>就使用了cols和rows属性设定列数和行数。
以上使用表单标签的页面的对应HTML页面如下所示:
<form id="command" method="post" action="/baobaotao//registerUser.html">
用户名:<input id="userName" name="userName" type="text" value=""/><br>
密 码: <input id="password" name="password" type="password" value=""/><br>
描 述:<textarea id="desc" name="desc" rows="3" cols="20"></textarea><br>
<input id="times" name="times" type="hidden" value="0"/>
<input type="submit" value="注册" name="testSubmit"/>
<input type="reset" value="重置" />
</form>
单选框和复选框组件标签
单选框和复选框组件虽然在HTML中都对应<input>元素标签,但在Spring MVC表单标签中,它们分别对应两个更达意的标签:
<form:radiobutton>和<form:checkbox>。
radiobutton
单选框组件由两个同名的标签组件组成,当表单对象对应属性值和value值相等时,单选框选中。下面是一个代表性别的单选框:
<form:form>
性 别:<form:radiobutton path="sex" value="0"/>男
<form:radiobutton path="sex" value="1"/>女
</form:form>
当表单对象的sex属性为0时(可以是String、int等可以自动转换为String的类型),所生成的HTML代码如下所示:
<form id="command" method="post" action="/baobaotao//registerUser.html">
性 别:<input id="sex1" name="sex" type="radio" value="0" checked="checked"/>男
<input id="sex2" name="sex" type="radio" value="1"/>女
</form>
checkbox
复选框组件标签相对来说复杂一些,复选框组件对应的表单属性不但可以boolean类型,还可以是String[]、Collection,Enum等类型。针对不同属性类型,复选框的选中状态的判断条件是不一样的:
boolean类型:当对应属性为true时,该复选框选中(一个属性仅对应一个复选框);
String[]、Collection或Enum类型:复选框对应值出现在对应属性列表中,该复选框选中;
其它类型:当复选框对应的值可以转换为对应属性值,该复选框选中。
假设用户注册的User表单对象包含了一个List类型的favorites属性:
import java.util.List;
public class User {
private List favorites;
public List getFavorites() {
return favorites;
}
public void setFavorites(List favorites) {
this.favorites = favorites;
}
}
我们希望将其在页面中使用一个复选框组件绑定这个属性,则可以使用以下的代码:
代码清单 2 复选框标签的使用
<form:form>
兴趣爱好:
<form:checkbox path="favorites" value="1"/>computer
<form:checkbox path="favorites" value="2"/>sport
<form:checkbox path="favorites" value="3"/>entertainment
<form:checkbox path="favorites" value="4"/>literature
</form:form>
除了正常的path属性名外,还必须提供一个value属性,假设User表单对象的favorites属性包括了1和3的值,那么产生的HTML页面为:
<form id="command" method="post" action="/baobaotao//registerUser.html">
兴趣爱好:<input id="favorites1" name="favorites" type="checkbox" value="1" checked="checked"/>
<input type="hidden" value="1" name="_favorites"/>computer
<input id="favorites2" name="favorites" type="checkbox" value="2" />
<input type="hidden" value="1" name="_favorites"/>sport
<input id="favorites3" name="favorites" type="checkbox" value="3" checked="checked"/>
<input type="hidden" value="1" name="_favorites"/>entertainment
<input id="favorites4" name="favorites" type="checkbox" value="4"/>
<input type="hidden" value="1" name="_favorites"/>literature
</form>
大家可能已经注意到每个复选框组件的后台都跟着一个隐藏组件,这是因为当HTML页面中的复选框没有被选中时,这个复选框的值不会在表单提交时作为HTTP请求参数发送到服务器端,这给Spring的表单数据绑定造成了麻烦——因为无法触发setFavorites()方法的调用(如果原来已经有值,这个值不会被设置为空)。解决方法就是在每个复选框后面加一个隐藏组件,并且将对应的复选框名字前添加一个下划线("_")作为隐藏组件的名字。这样一来,你相当于告诉Spring“这个表单中存在这样一个复选框,我希望表单对象中对应的属性和这个checkbox的状态保持一致”。
假设复选框对应的选项在数据库或配置文件中定义,那么页面复选框标签就不能通过硬编码的方式指定,相反必须根据配置的选项数据动态产生。对于这样的需求,代码清单 2的编写方式显然不能满足需求。回忆一下表单控制器的工作流程,我们知道可以通过复写referenceData()方法在表单显示前准备一些需要的数据,现在终于派上用场了,来看一下具体的实现:
代码清单 3 UserRegisterController:准备表单显示数据
package com.baobaotao.web.user;
…
import org.springframework.ui.ModelMap;
public class UserRegisterController extends SimpleFormController {
private BbtForum bbtForum;
①创建初始表单对象
protected Object formBackingObject(HttpServletRequest request)
throws Exception {
int userId = ServletRequestUtils.getIntParameter(request, "userId",-1);
User user = bbtForum.getUser(userId);
user.setUserName("tom");
List favorites = new ArrayList();①-1默认选中值为1和3的选项
favorites.add("1");
favorites.add("3");
user.setFavorites(favorites);
return user;
}
@Override ②准备表单显示时需要的数据
protected Map referenceData(HttpServletRequest request) throws Exception {
Map favoriteMap = new LinkedHashMap();
favoriteMap.put("1", "computer");
favoriteMap.put("2", "sport");
favoriteMap.put("3", "entertainment");
favoriteMap.put("4", "literature");
②-1将表单页面需要的对象以ModelMap返回,最终将以属性名值对方式出现在请求属性中
return new ModelMap().addObject("favoriteMap", favoriteMap);
}
@Override
protected ModelAndView onSubmit(Object command, BindException errors)
throws Exception {
User user = (User) command;
bbtForum.registerUser(user);
return new ModelAndView(getSuccessView(), "user", user);
}
}
发表评论
-
转:Spring Assert(方法入参检测工具类-断言)
2014-03-14 10:29 631Web 应用在接受表单提交的数据后都需要对其进行合法性检查,如 ... -
使用Spring MVC表单标签
2014-03-13 17:00 619概述 在低版本的Spring中,你必须通过JSTL或 ... -
转:使用Spring MVC表单标签
2014-03-11 09:42 582Spring Framework开发参考: 13.9. 使用S ... -
转:spring mvc表单form值自动传入javabean-注解@ModelAttribute
2014-03-10 15:39 2375直接通过Form Bean进行表单可以简化表单提交的处理,特别 ... -
jQuery ajax和spring mvc
2014-02-11 12:53 356jQuery ajax和spring mvc jsp部分 ... -
spring mvc @Scheduled注解中cron常用表示
2014-01-26 14:47 834Scheduled cron常用表示: Cron ... -
spring mvc @Scheduled注解实现后台定时操作
2014-01-26 14:36 2951Spring3 Shedule Task之注解实现 (两次 ... -
模型视图类ModelAndView(转载)
2014-01-13 10:24 513从名字上看ModelAndView中的Model代表模 ... -
Spring MVC 配置
2013-12-22 22:01 382Spring MVC 配置 转:http://blog.c ... -
spring data jpa简单实例
2013-12-21 00:17 640我们都知道Spring是一个非常优秀的JavaEE整合框架,它 ... -
在spring官网上下载jar包的方法
2013-12-20 08:06 744Spring官网改版后找了好久都没有找到直接下载Jar包的链接 ...
相关推荐
本篇文章将深入探讨Spring MVC中的表单标签库,以及如何在实际项目中使用它们来创建动态、交互式的表单。 1. **表单标签库介绍** Spring MVC的表单标签库是JSP的一部分,它可以生成HTML表单元素,并且能够自动绑定...
在低版本的Spring中,你必须通过JSTL或...不过这一情况已经一去不复返了,从Spring 2.0开始,Spring MVC开始全面支持表单标签,通过Spring MVC表单标签,我们可以很容易地将控制器相关的表单对象绑定到HTML表单元素中。
在使用Spring的表单标签库之前,需要在JSP页面中引入Spring的Taglib。这通常在页面的`<head>`部分完成,通过添加以下行: ```jsp <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> ``` ...
在Spring MVC中,文件上传是常见的功能之一,用于接收用户通过表单提交的文件数据。本文将深入探讨Spring MVC中的文件上传方法,并基于提供的“spring学习:spring mvc上传文件方法分析”标题进行详细的解析。 首先...
【标题】:“maven + spring mvc整合示例代码下载.zip”是一个包含使用Maven构建并集成Spring MVC框架的示例项目的压缩包。这个项目旨在帮助开发者理解和实践如何在Java Web开发中结合这两个强大的工具。 【描述】...
5. **JSTL(JavaServer Pages Standard Tag Library)**:JSTL提供了一系列标签库,简化了JSP页面中的业务逻辑,可以与Spring MVC配合使用,减少Java代码的编写。 6. **JSP和Servlet API**:Spring MVC依赖于...
全书共计12章,分别从Spring框架、模型2和MVC模式、Spring MVC介绍、控制器、数据绑定和表单标签库、传唤器和格式化、验证器、表达式语言、JSTL、国际化、上传文件、下载文件多个角度介绍了Spring MVC。除此之外,...
全书共计12章,分别从Spring框架、模型2和MVC模式、Spring MVC介绍、控制器、数据绑定和表单标签库、传唤器和格式化、验证器、表达式语言、JSTL、国际化、上传文件、下载文件多个角度介绍了Spring MVC。除此之外,...
而“工具”标签可能暗示了使用特定工具(如IDE、构建工具等)来配合Spring 3 MVC开发。 从压缩包子文件的文件名称列表"spring mvc jar"来看,可能包含的是Spring MVC的jar文件,这通常是开发过程中必需的依赖库,...
在本主题中,我们将深入探讨Spring框架的2.5版本引入的一个重要特性——基于注解的Spring MVC配置。Spring MVC是Spring框架的一部分,专门用于构建Web应用程序,它提供了一个模型-视图-控制器(MVC)架构来组织和...
在Spring MVC框架中,服务端表单验证是一个关键的步骤,确保从客户端接收到的数据是有效和安全的。本实例提供了完整的代码和配置,让你能够快速理解和应用服务端验证。以下是对这个实例的详细解析: 1. **Spring ...
Spring MVC 是一个强大的Java web开发框架,用于构建可维护、高性能和灵活的Web应用程序。这个"spring mvc login demo"项目旨在提供一个基础的登录功能示例,帮助开发者理解如何在Spring MVC环境中实现用户身份验证...
将Spring MVC与Ajax结合使用,可以实现页面的异步更新,提升用户体验,同时保持服务器负载均衡。 首先,我们需要理解Spring MVC的基本工作流程。当用户发起请求时,Spring MVC的DispatcherServlet会拦截这个请求,...
全书共计12章,分别从Spring框架、模型2和MVC模式、Spring MVC介绍、控制器、数据绑定和表单标签库、传唤器和格式化、验证器、表达式语言、JSTL、国际化、上传文件、下载文件多个角度介绍了Spring MVC。除此之外,...
- **CommonsMultipartFile**: Apache Commons FileUpload 和 Spring MVC 结合使用的类,用于处理多部分表单数据(文件上传)。 - **MultipartFile**: Spring MVC 提供的接口,用于暂时存储上传的文件信息。 - `@...
Spring MVC提供了丰富的表单标签库,如<form:form>、<form:input>等,简化了表单元素的创建和数据绑定。当表单提交时,Spring MVC会自动将请求参数与Model对象的属性进行绑定。 七、异常处理与国际化 Spring MVC...
- **表单标签**:Spring Web MVC提供了一套强大的表单标签库,可以帮助开发者更轻松地创建HTML表单元素。 通过上述内容的学习,可以全面掌握Spring Web MVC框架的核心开发知识,为构建高质量的Web应用程序打下坚实...
详细的Spring MVC教程,内容包括控制器 重定向 保存并获取属性参数 拦截器 表单标签和验证表单 视图和视图解析器 上传文件 数据转换和格式化