添加bean-validator.jar包
修改实体类User.java,添加默认构造器以及数据验证信息
package com.test.model; import javax.validation.constraints.Size; import org.hibernate.validator.constraints.Email; import org.hibernate.validator.constraints.NotEmpty; public class User { private String username; private String nickname; private String password; private String email; public User() { super(); } public User(String username, String nickname, String password, String email) { super(); this.username = username; this.nickname = nickname; this.password = password; this.email = email; } @NotEmpty(message="邮箱不能为空!") @Email(message="邮箱格式不正确!") public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } @NotEmpty(message="密码不能为空!") @Size(min = 6, max = 10, message = "密码的长度必须在5到10位!") public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @NotEmpty(message="用户名不能为空!") public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }
在Action控制器UserController.java中添加方法:
/** * 添加用户前 * * @param model * @return */ @RequestMapping(value = "/addUserPro", method = RequestMethod.GET) public String addUserPro(Model model) { // 如果不添加下面这一句的话,sf:form标签中的modelAttribute="user"会在request中找user实例,没有的话会报错 model.addAttribute(new User()); return "user/addUser"; } /** * 添加用户 * * @param user * @return */ @RequestMapping(value = "/addUser", method = RequestMethod.POST) // 这里的参数user要和页面上modelAttribute属性值一致 public String addUser(@Valid User user, BindingResult br) {// 紧跟Valid参数之后写验证结果类 if (br.hasErrors()) { return "user/addUser"; } users.put(user.getUsername(), user); return InternalResourceViewResolver.REDIRECT_URL_PREFIX + "/user/userList"; }
修改用户列表页面/jsp/user/userList.jsp添加:<a href="addUserPro">添加用户</a>
添加用户新增页面/jsp/user/addUser.jsp
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%> <%@ taglib prefix="sf" 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=GBK"> <title>添加用户</title> </head> <body> <sf:form method="post" modelAttribute="user" action="addUser"> 用户名*:<sf:input path="username"/><sf:errors path="username" cssStyle="color:red"/><br> 别名:<sf:input path="nickname"/><br> 密码*:<sf:password path="password"/><sf:errors path="password" cssStyle="color:red"/><br> 邮箱*:<sf:input path="email"/><sf:errors path="email" cssStyle="color:red"/><br> <input type="submit" value="添加"/> </sf:form> </body> </html>
在springmvc配置文件spring-mvc.xml中添加<mvc:annotation-driven/>,如果没有这个标签,程序会直接跳过验证逻辑,因为它提供@Valid支持(很惭愧,研究了半天,只知其一,不知其二,知道这个标签里面注入了两个bean,但不知道在什么情况下用必须这个标签)
<?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: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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <mvc:annotation-driven/> <context:component-scan base-package="com.test.controller" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- 全局异常处理 --> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <!-- 设置显示异常信息的视图逻辑 --> <prop key="com.test.exception.UserException">user/loginUser</prop> </props> </property> </bean> </beans>
为了解决中文乱码问题,在web.xml中添加
<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
在浏览器中输入:
http://127.0.0.1:9900/springmvc_005_rest_03/user/,进入到用户添加页面,不填写任何信息,直接点击“登录”按钮,页面显示
相关推荐
在本篇《SpringMVC杂记(五) JSR303数据验证》中,我们将深入探讨SpringMVC框架如何集成并使用JSR303(JavaBeans Validation)来进行数据验证,这是一种强大的验证机制,可以确保应用程序接收到的数据是合法且符合...
这是我的这篇博文的源码:SpringMVC与SiteMesh2.4无缝整合并借助JSR303规范实现表单验证,博文地址:http://blog.csdn.net/jadyer/article/details/7574668
SpringMVC框架结合JSR-303(也称为JSR-349,Java Bean Validation)规范提供了一种优雅的方式来处理数据验证。本篇文章将详细介绍如何在SpringMVC中使用JSR-303进行Bean验证。 首先,我们需要引入JSR-303的实现库。...
在SpringMVC中集成JSR303,可以实现对用户输入数据的高效验证。JSR303提供了预定义的验证注解,如@NotNull、@Size、@Pattern等,开发者可以直接在模型类的属性上添加这些注解,以声明验证规则。当用户提交数据时,...
项目中所需的jar包在压缩包中已提供,项目中用到了JSR303和hibernate-validator的技术,大量采用了注解@NotNull,@Email,@Length,@Max,@Pattern,@Size等,此外还采用了自定义注解,验证信息全部配置在属性文件中.
Spring MVC是Spring框架的一部分,用于构建MVC(Model-View-Controller)架构的Web应用,而JSR303(Java Bean Validation)则提供了一种标准的数据验证机制。 Spring MVC详解: Spring MVC 是一个轻量级的MVC框架,...
在这个"SpringMVC入门很简单之数据验证"的主题中,我们将深入探讨如何在SpringMVC中实现数据验证。 在Web应用中,数据验证是必不可少的一环,它确保了用户提交的数据符合预设的规则和格式,防止非法或无效的数据...
在SpringMVC 4.3.x及更高版本中,可以使用注解驱动的方式来实现数据验证,例如在模型类的属性上添加`@NotNull`、`@Size`、`@Min`等验证注解,SpringMVC会在处理请求时自动执行这些验证。 具体使用步骤如下: 1. ...
Spring MVC支持JSR 303/JSR 349(Bean Validation)标准,允许我们使用注解在模型类的字段上定义验证规则。例如,`@NotBlank`用于检查字符串是否为空,`@Size(min, max)`用于检查长度限制,`@Email`用于验证电子...
这个"springmvc数据验证jar包"正是为了实现这一功能而必备的组件。它包含了多个关键库,如Hibernate Validator、JBoss Logging和Validation API,这些库协同工作以确保输入数据的有效性,从而增强应用程序的安全性和...
Spring MVC 提供了两种主要的数据验证方式:一种是基于JSR 303/349的Bean Validation,另一种是基于Validator接口的自定义验证。 1. **Bean Validation**:这是一个标准的Java Bean数据验证框架,它定义了一组注解...
SpringMVC 数据的格式化、JSR 303数据校验和国际化 实例.zip 对应博客:http://blog.csdn.net/peng_hong_fu/article/details/53559773
总的来说,JSR303和"validation-api-1.1.0.cr1.jar"在SpringMVC中起到了关键的角色,它们简化了数据验证的实现,提高了代码的可读性和可维护性。通过合理运用这些工具和机制,开发者可以构建出更加健壮、安全的Web...
REST(Representational State Transfer)是一种软件架构风格,常用于构建网络应用,尤其是Web服务。REST接口设计强调资源的定位和状态转换,通过HTTP方法(如GET、POST、PUT、DELETE等)来操作这些资源。 本源代码...
本实验报告将探讨如何利用 SpringMVC 的拦截器(Interceptor)来实现用户登录权限验证,确保只有已登录的用户才能访问特定的受保护资源。 首先,我们来看一下实验的基本步骤: 1. 创建 `User` 类:这是表示用户...
首先,我们需要理解Spring MVC的数据验证是基于JavaBeans规范中的Java Bean Validation(JSR 303/349)标准和Hibernate Validation实现的。这允许我们在模型类(通常是用户实体类)中添加注解,来定义验证规则。 ...
在SpringMVC框架中,实现REST风格的接口可以让我们的API更加简洁,易于理解和使用。本笔记将深入探讨如何在SpringMVC中创建RESTful的API。 1. **REST原则** - 统一接口:REST接口应具有统一的格式,通常使用HTTP...
hibernate-validator-5.2.4.Final.jar hibernate-validator-annotation-processor...validation-api-1.1.0.Final.jar jboss-logging-3.2.1.Final.jar classmate-1.1.0.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar
使用spring+springmvc框架 整合了Mybatis持久层框架 整合Druid用于数据库连接,并使用Druid对业务层监控spring jdbc 整合EhCache,对Mybatis的二级缓存进行管理和对spring进行缓存管理 整合FastJson对指定http类型的...
在本文中,我们将深入探讨如何利用 Spring MVC 的注解来实现用户注册功能,以及验证过程中的关键技术和策略。 首先,让我们了解 Spring MVC 注解在用户注册中的作用。注解使得代码更加简洁、易读,同时也减少了 XML...