Spring MVC学习笔记——服务器端验证

UserController.java

package org.common.controller;

import java.util.HashMap;
import java.util.Map;

import org.common.model.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/user")
public class UserController {
	private Map<String,User> users = new HashMap<String,User>();

	public UserController() {
		users.put("ldh",new User("ldh","刘德华","123","123123"));
		users.put("zxy",new User("zxy","张学友","123","123123"));
		users.put("gfc",new User("gfc","郭富城","123","123123"));
		users.put("lm",new User("lm","黎明","123","123123"));
	}

	@RequestMapping(value="/users",method=RequestMethod.GET)
	public String list(Model model){
		model.addAttribute("users", users);
		return "user/list";
	}

	//链接到add页面时候是GET请求,会访问这段代码
	@RequestMapping(value="/add",method=RequestMethod.GET)
	//把一个对象放到了@ModelAttribute中,Model的Key就是user
	public String add(@ModelAttribute("user") User user){
		//开启modeDrive
		//model.addAttribute(new User());
		return "user/add";
	}

	//在具体添加用户的时候,是POST请求,就访问以下代码
	@RequestMapping(value="/add",method=RequestMethod.POST)
	public String add(@Validated User user,BindingResult br){//一定要紧跟@Validated之后写验证结果类
		if(br.hasErrors()){
			//如果有错误,直接跳转到add视图
			return "user/add";
		}
		users.put(user.getUsername(),user);
		return "redirect:/user/users";
	}

//	//链接到add页面时候是GET请求,会访问这段代码
//	@RequestMapping(value="/add",method=RequestMethod.GET)
//	public String add(Model model){
//		//开启modeDrive
//		model.addAttribute(new User());
//		return "user/add";
//	}
//
//	//在具体添加用户的时候,是POST请求,就访问以下代码
//	@RequestMapping(value="/add",method=RequestMethod.POST)
//	public String add(User user){
//		users.put(user.getUsername(),user);
//		return "redirect:/user/users";
//	}

}

 User.java文件

package org.common.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 password;
	private String email;
	private String nickname;

	public User() {
		super();
	}

	public User(String username, String password, String email, String nickname) {
		super();
		this.username = username;
		this.password = password;
		this.email = email;
		this.nickname = nickname;
	}

	@NotEmpty(message="用户名不能为空")
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	@Size(min=1,max=10,message="密码长度应该在1和10之间")
	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	@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;
	}

}

 jsp/user/add.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ 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=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<sf:form method="post" modelAttribute="user">
		<table width="700" align="center" border="1">
			<tr>
				<td>用户名:</td><td><sf:input path="username"/><sf:errors path="username"/></td>
			</tr>
			<tr>
				<td>用户密码:</td><td><sf:password path="password"/><sf:errors path="password"/></td>
			</tr>
			<tr>
				<td>用户昵称:</td><td><sf:input path="nickname"/></td>
			</tr>
			<tr>
				<td>用户邮箱:</td><td><sf:input path="email"/><sf:errors path="email"/></td>
			</tr>
			<tr>
			<td colspan="2">
				<input type="submit" value="用户添加"/>
			</td>
			</tr>
		</table>
	</sf:form>

</body>
</html>

 jsp/user/list.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>
	<c:forEach items="${users}" var="um">
		${um.value.username}
		----${um.value.nickname}
		----${um.value.password}
		----${um.value.email}<br/>
	</c:forEach>
</body>
</html>

 hello-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:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	<mvc:annotation-driven/>
	<context:component-scan base-package="org.common.controller"></context:component-scan>

	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
</beans>

 web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
	<!-- 配置DispatchServlet,截获特定的URL请求 -->
    <!-- 默认自动加载/WEB-INF/simpleSpringMVC-servlet.xml -->
    <!-- (即<servlet-name>-servlet.xml)的Spring配置文件,启动web层的Spring容器 -->
  <servlet>
        <servlet-name>hello</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- 设置字符编码 -->
    <filter>
		<filter-name>CharacterFilter</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>
	</filter>
	<filter-mapping>
		<filter-name>CharacterFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

</web-app>
时间: 2024-11-04 15:59:41

Spring MVC学习笔记——服务器端验证的相关文章

Spring MVC 学习笔记(二):@RequestMapping用法详解

一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置 <servlet>     <servlet-name>servletName</servlet-name>     <servlet-class>ServletClass</servlet-class> </servlet>

[Spring MVC]学习笔记--DispatcherServlet

在上一篇我们介绍了Servlet,这一篇主要来看一下MVC中用到的DispatcherServlet(继承自HttpServlet). 1. DispatcherServlet在web.xml中被声明. <web-app> <servlet> <servlet-name>example</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet&l

Spring MVC学习笔记(一)--------准备篇

这一系列笔记将带你一步一步的进入Spring MVC,高手勿喷. 首先你得安装以下的工具: JDK,虽然JDK8已经发布了一段时间了,但是由于我们并不会使用到里面的新特性,所以JDK6以上版本皆可以(需加入到PATH环境变量中): Servlet Container,为了能运行WEB应用程序,因此需要一个Web Container,这里我们建议Tomcat即可: IDE,一个好的IDE不仅能提高你开发的效率,还能降低你学习的成本,我们选择的是IntelliJ: 构建工具,推荐使用Gradle,它

[转]Spring MVC 学习笔记 json格式的输入和输出

Spring mvc处理json需要使用jackson的类库,因此为支持json格式的输入输出需要先修改pom.xml增加jackson包的引用 <!-- json --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-lgpl</artifactId> <version>1.8.1</version>

[Spring MVC]学习笔记--基础Servlet

Servlet是一个用Java编写的应用程序,在服务器上运行,处理请求的信息并将其发送到客户端. Servlet的客户端提出请求并获得该请求的响应. 对于所有的客户端请求,只需要创建Servlet的实例一次(这是和CGI(Common Gateway Interface)的重要区别,CGI是每个请求创建一个新实例),因此节省了大量的内存. Servlet在初始化后即驻留内存中,因此每次作出请求时无需加载. 下面通过一个例子来介绍如何编写一个简单的Servlet. 准备工作: 1. 下载并启动To

[Spring MVC]学习笔记--表单标签的使用

github例子地址: https://github.com/lemonbar/spring-mvc-jsp 效果图 关于spring mvc的标签的讲解, 有一篇blog已经讲的很细了. http://haohaoxuexi.iteye.com/blog/1807330 官方文档地址: http://docs.spring.io/spring/docs/4.0.6.RELEASE/spring-framework-reference/htmlsingle/#view-jsp 而且我在上面的例子

[Spring MVC]学习笔记--@RequestMapping

@RequestMapping是用来将请求的url,映射到整个类,或者里面的方法. @Controller @RequestMapping("/test") public class TestController { private final TestService service; @Autowired public TestController(TestService testService) { this.service = testService; } @RequestMap

[Spring MVC]学习笔记--FreeMarker的使用

还是先贴出该例子存于github上的位置 https://github.com/lemonbar/spring-mvc-freemarker Sping-Framework 的官方文档简单列出了在spring-mvc中如何使用freemarker, 但是相对来说提供的信息和例子太少, 所以在这给出一个详细的例子. 注:我是在maven基础上进行的构建, 很多解释已经在代码中加了, 所以尽量贴代码. FreeMarker Site: http://freemarker.org/ 1. 整个文件夹结

[Spring MVC]学习笔记--@Controller

在讲解@Controller之前,先说明一下Spring MVC的官方文档在哪. 可能会有人和我一样,在刚接触Spring MVC时,发现在Spring的网站上找不到Spring MVC这个项目. 这是因为Spring MVC被放到Spring Framework里面了. 你可以打开Spring Framework的reference,里面有一部分是专门介绍Spring MVC的,“V. The Web”. Controller是MVC中的C. 在Spring-MVC中用@Controller来