最近学习了一下springmvc中后台校验功能的实现,特别写了一个demo以备以后查看,主要使用注解方式来进行配置。
1、在jsp页面引入spring的标签
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
2、建立数据提交表单
<form:form method="post" action="reg.do" commandName="userBean">
<table>
<tr>
<td>
UserName:
<font color="red"> <form:errors path="userName"></form:errors>
</font>
</td>
</tr>
<tr>
<td>
<form:input path="userName"/>
</td>
</tr>
<tr>
<td>
Age:
<font color="red"> <form:errors path="age"></form:errors>
</font>
</td>
</tr>
<tr>
<td>
<form:input path="age"/>
</td>
</tr>
<tr>
<td>
password:
<font color="red"> <form:errors path="password"></form:errors>
</font>
</td>
</tr>
<tr>
<td>
<form:password path="password"/>
</td>
</tr>
<tr>
<td>
Confirm Password:
<font color="red"> <form:errors path="confirmPassword"></form:errors>
</font>
</td>
</tr>
<tr>
<td>
<form:password path="confirmPassword"/>
</td>
</tr>
<tr>
<td>
<input type="submit" value="submit">
</td>
</tr>
</table>
</form:form>
3、新建表单对象(javabean)
package springapp.model;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.format.annotation.NumberFormat;
import org.springframework.format.annotation.NumberFormat.Style;
public class UserBean {
@NotEmpty
@Size(min = 1, max = 20)
private String userName;
@NumberFormat(style = Style.NUMBER)
@NotNull(message = "Age must not be blank")
@Min(value = 1, message = "Age must more then 1")
@Max(value = 100, message = "Age must less then 100")
private Integer age;
@NotEmpty(message = "Password must not be blank.")
@Size(min = 1, max = 10, message = "Password must between 1 to 10 Characters.")
private String password;
@NotEmpty
private String confirmPassword;
/** get and set **/
}
在对表单对象的错误信息提示的时候 我采用了几种方式。userName的错误信息配置在资源文件中(message.properties),如下所示:
NotEmpty.userBean.userName=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A
#用户名不能为空
如果需要把错误提示信息配置在资源文件中,需要在spring-servlet.xml文件对 ReloadableResourceBundleMessageSource这个类进行注册如下:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/message" />
</bean>
Age和password的提示信息就直接写在UserBean中,比如:
@NumberFormat(style = Style.NUMBER)
@NotNull(message = "Age must not be blank")
@Min(value = 1, message = "Age must more then 1")
@Max(value = 100, message = "Age must less then 100")
private Integer age;
对password与Confirm password的校验就写在校验器中。如
package springapp.action;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import springapp.model.UserBean;
@Component("regValidation")
public class RegValidation {
public boolean supports(Class<?> clazz) {
return UserBean.class.isAssignableFrom(clazz);
}
public void validate(Object target, Errors errors) {
UserBean userBean = (UserBean) target;
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "userName",
"NotEmpty.userBean.userName",
"User Name must not be Empty.");
String userName = userBean.getUserName();
if (!(userBean.getPassword()).equals(userBean.getConfirmPassword())) {
errors.rejectValue("password",
"matchingPassword.userBean.password",
"Password and Confirm Password Not match.");
}
}
}
5、新建处理表单的Action
package springapp.action;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import springapp.model.UserBean;
@Controller
public class UserAction {
@RequestMapping(value = "reg.do", method = RequestMethod.GET)
public String init(Model model) {
UserBean useBean = new UserBean();
model.addAttribute("userBean", useBean);
return "reg";
}
@RequestMapping(value="reg.do",method=RequestMethod.POST)
public String reg(Model model,@Valid UserBean userBean,BindingResult result)
{
regValidation.validate(userBean, result);
if(result.hasErrors())
{
return "reg";
}
model.addAttribute("userBean", userBean);
return "regSuccess";
}
@Autowired
private RegValidation regValidation;
}
访问路径:http://localhost:80/SpringMVCValidation/reg.do
分享到:
相关推荐
综上所述,这个"springMVC3.2+Hibernate4的基本配置"项目包含了一个完整的Web应用开发环境,包括SpringMVC的请求处理、Hibernate的数据持久化、C3P0连接池管理、事务控制、缓存优化以及自定义拦截器。这个配置模板...
SSM(Spring MVC + Spring + MyBatis)是Java Web开发中常见的三层架构组合,而Spring MVC 3.2、Spring 3.2和MyBatis 3.11是这套框架组合的特定版本。本项目是将这些框架通过Maven进行整合,方便在MyEclipse环境中...
8. **AOP(面向切面编程)**: SpringMVC 3.2集成了Spring的AOP模块,允许开发者定义切面,实现如日志记录、事务管理等功能。 9. **国际化与本地化**: 支持基于不同语言和地区的消息资源文件,提供动态的多语言支持...
本文将深入探讨如何在SpringMVC3.2环境中使用注解的方式集成JPA,实现数据模型的持久化操作。 #### 一、实体类定义 首先,我们关注实体类的定义。在给定的代码片段中,展示了两个实体类`Pubuser`和`Pubaccinfo`。...
springMVC3.2+Hibernate4+freemarker 代码框架采用springMVC3.2.4+hibernate4.2.8+freemarker2.3.16 功能方面只是一个简单的注册登录,前台使用freemarker渲染,使用了freemarker自定义标签。
**SpringMVC 3.2 RESTful服务** SpringMVC是Spring框架的一部分,它是一个用于构建Web应用程序的轻量级MVC(Model-View-Controller)框架。在SpringMVC 3.2版本中,引入了对RESTful Web服务的强大支持,这使得开发...
在“springmvc3.2+spring3.2+mybatis3.11”这个版本中: - Spring MVC 3.2带来了更多的注解支持,改进了异常处理机制,以及对RESTful风格的支持。 - Spring 3.2版本提供了更多性能优化,提升了对Java EE 6的兼容性,...
maven3.05+springmvc3.2+spring3.2+hibernate3.6重写传智播客OA源代码。菜单部分采用ztree.界面有一部分使用bootstrap3.11。听了汤阳光大神的视频收获很大,也学习springmvc,期间有一个想法用springmvc来改写汤大神...
3. **AOP(面向切面编程)**:Spring 3.2增强了AOP支持,允许开发者定义切面和通知,实现代码的解耦和模块化。这对于日志记录、事务管理等跨切面的关注点尤其有用。 4. **DAO和JDBC支持**:Spring提供了对各种数据...
总的来说,"SpringMVC3.2 demo"项目展示了如何将SpringMVC与ZTree、JPA集成,构建一个具有基本登录功能的Web应用。通过学习这个项目,你可以了解到如何配置和使用这些技术,以及如何在实际开发中整合它们。同时,...
入门例子,可以运行,完整的包,具体代码说明可见:【http://wenku.baidu.com/view/0ab26ef4f705cc175527096b?fr=prin】,一样的。代码虽然不大,但可运行,有一定的启发性。
通过以上内容的学习和实践,开发者可以熟练地运用SpringMVC 3.2构建高效的Java Web应用,实现业务逻辑与视图的解耦,提高代码的可读性和可维护性。在实际项目中,可以根据需求灵活配置和扩展,打造符合企业级标准的...
在SSM整合中,MyBatis作为数据库操作的桥梁,通过Spring的管理实现DAO层的事务控制。 4. **整合过程**: - 首先,引入所需jar包,包括Spring MVC、Spring、MyBatis以及它们的依赖。 - 创建Spring的配置文件(如`...
在这种情况下,开发者需要引入第三方库来实现JSON的序列化和反序列化功能,例如Jackson(jack-json)。 Jackson是Java中非常流行的一个JSON处理库,由FasterXML公司维护。它提供了一套高效且灵活的API,可以方便地...
1. **注解驱动的开发**:Spring MVC 3.2强化了注解的使用,使得开发者可以通过在方法、类或参数上添加注解来实现控制器的功能。例如,`@RequestMapping`用于映射HTTP请求,`@PathVariable`用于获取URL模板变量,`@...
综合来看,这个基于SpringMVC的视频后台管理系统通过Java实现强大的后端功能,利用HTML、CSS和JavaScript构建用户友好的前端界面,实现了视频课程的全面管理和运营。这样的系统可以广泛应用于在线教育平台、视频分享...
Spring MVC 3.2是该框架的一个特定版本,它在3.x系列中引入了多项改进和增强,以提高开发效率和应用程序性能。在与Hibernate 4.0和MySQL 5.1.27结合使用时,可以构建出功能强大、性能优化的Web应用程序。 在Spring ...
EasyUI基于jQuery,支持数据绑定,能够与后台的SpringMVC和Hibernate无缝对接,实现前后端数据的高效交互。 系统内含的数据库监控系统是一个亮点,它允许开发者实时查看和分析数据库的运行状态,包括SQL执行情况、...
服务层(service层)是业务逻辑处理的核心,包括接口和实现类。测试类的编写可以验证整合是否成功。 Spring MVC的集成需要创建对应的包和控制器类(demo.controller),配置spring-mvc.xml以及在web.xml中设置...