`

springmvc的rest风格之三实现用户添加(JSR 303 – Bean Validation服务端数据验证)

 
阅读更多

添加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/,进入到用户添加页面,不填写任何信息,直接点击“登录”按钮,页面显示

 

  • 大小: 4 KB
分享到:
评论

相关推荐

    SpringMVC杂记(五) JSR303数据验证

    在本篇《SpringMVC杂记(五) JSR303数据验证》中,我们将深入探讨SpringMVC框架如何集成并使用JSR303(JavaBeans Validation)来进行数据验证,这是一种强大的验证机制,可以确保应用程序接收到的数据是合法且符合...

    【源码】SpringMVC与SiteMesh2.4无缝整合并借助JSR303规范实现表单验证

    这是我的这篇博文的源码:SpringMVC与SiteMesh2.4无缝整合并借助JSR303规范实现表单验证,博文地址:http://blog.csdn.net/jadyer/article/details/7574668

    SpringMVC使用JSR-303进行验证Bean.docx

    SpringMVC框架结合JSR-303(也称为JSR-349,Java Bean Validation)规范提供了一种优雅的方式来处理数据验证。本篇文章将详细介绍如何在SpringMVC中使用JSR-303进行Bean验证。 首先,我们需要引入JSR-303的实现库。...

    SpringMVC JSR303数据校验DEMO(附:JSR303的JAR包)

    在SpringMVC中集成JSR303,可以实现对用户输入数据的高效验证。JSR303提供了预定义的验证注解,如@NotNull、@Size、@Pattern等,开发者可以直接在模型类的属性上添加这些注解,以声明验证规则。当用户提交数据时,...

    springmvc_jsr303

    项目中所需的jar包在压缩包中已提供,项目中用到了JSR303和hibernate-validator的技术,大量采用了注解@NotNull,@Email,@Length,@Max,@Pattern,@Size等,此外还采用了自定义注解,验证信息全部配置在属性文件中.

    springmvc&JSR303;的jar包

    Spring MVC是Spring框架的一部分,用于构建MVC(Model-View-Controller)架构的Web应用,而JSR303(Java Bean Validation)则提供了一种标准的数据验证机制。 Spring MVC详解: Spring MVC 是一个轻量级的MVC框架,...

    SpringMVC入门很简单之数据验证

    在这个"SpringMVC入门很简单之数据验证"的主题中,我们将深入探讨如何在SpringMVC中实现数据验证。 在Web应用中,数据验证是必不可少的一环,它确保了用户提交的数据符合预设的规则和格式,防止非法或无效的数据...

    JSR303jar包 使用的是Hibernate

    在SpringMVC 4.3.x及更高版本中,可以使用注解驱动的方式来实现数据验证,例如在模型类的属性上添加`@NotNull`、`@Size`、`@Min`等验证注解,SpringMVC会在处理请求时自动执行这些验证。 具体使用步骤如下: 1. ...

    spring mvc服务端表单验证实例

    Spring MVC支持JSR 303/JSR 349(Bean Validation)标准,允许我们使用注解在模型类的字段上定义验证规则。例如,`@NotBlank`用于检查字符串是否为空,`@Size(min, max)`用于检查长度限制,`@Email`用于验证电子...

    springmvc数据验证jar包

    这个"springmvc数据验证jar包"正是为了实现这一功能而必备的组件。它包含了多个关键库,如Hibernate Validator、JBoss Logging和Validation API,这些库协同工作以确保输入数据的有效性,从而增强应用程序的安全性和...

    springmvc数据验证

    Spring MVC 提供了两种主要的数据验证方式:一种是基于JSR 303/349的Bean Validation,另一种是基于Validator接口的自定义验证。 1. **Bean Validation**:这是一个标准的Java Bean数据验证框架,它定义了一组注解...

    ( SpringMVC 数据的格式化、JSR 303数据校验和国际化 实例.zip

    SpringMVC 数据的格式化、JSR 303数据校验和国际化 实例.zip 对应博客:http://blog.csdn.net/peng_hong_fu/article/details/53559773

    validation-api-1.1.0.cr1.jar

    总的来说,JSR303和"validation-api-1.1.0.cr1.jar"在SpringMVC中起到了关键的角色,它们简化了数据验证的实现,提高了代码的可读性和可维护性。通过合理运用这些工具和机制,开发者可以构建出更加健壮、安全的Web...

    SpringMVC构建REST接口的源代码

    REST(Representational State Transfer)是一种软件架构风格,常用于构建网络应用,尤其是Web服务。REST接口设计强调资源的定位和状态转换,通过HTTP方法(如GET、POST、PUT、DELETE等)来操作这些资源。 本源代码...

    企业级开发-SpringMVC使用拦截器实现用户登录权限验证实验报告.docx

    本实验报告将探讨如何利用 SpringMVC 的拦截器(Interceptor)来实现用户登录权限验证,确保只有已登录的用户才能访问特定的受保护资源。 首先,我们来看一下实验的基本步骤: 1. 创建 `User` 类:这是表示用户...

    SpringMVC数据验证——注册用户格式的验证实例

    首先,我们需要理解Spring MVC的数据验证是基于JavaBeans规范中的Java Bean Validation(JSR 303/349)标准和Hibernate Validation实现的。这允许我们在模型类(通常是用户实体类)中添加注解,来定义验证规则。 ...

    SSM笔记-SpringMVC REST风格、基本标签初识

    在SpringMVC框架中,实现REST风格的接口可以让我们的API更加简洁,易于理解和使用。本笔记将深入探讨如何在SpringMVC中创建RESTful的API。 1. **REST原则** - 统一接口:REST接口应具有统一的格式,通常使用HTTP...

    springmvc表单验证JSR-303验证框架jar包

    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项目案例实现用户角色权限管理

    使用spring+springmvc框架 整合了Mybatis持久层框架 整合Druid用于数据库连接,并使用Druid对业务层监控spring jdbc 整合EhCache,对Mybatis的二级缓存进行管理和对spring进行缓存管理 整合FastJson对指定http类型的...

    springmvc注解实现用户注册验证

    在本文中,我们将深入探讨如何利用 Spring MVC 的注解来实现用户注册功能,以及验证过程中的关键技术和策略。 首先,让我们了解 Spring MVC 注解在用户注册中的作用。注解使得代码更加简洁、易读,同时也减少了 XML...

Global site tag (gtag.js) - Google Analytics