`

SpringMVC入门 (三) 简单用户管理实例一

阅读更多
1.首先创建一个User类:
	
public class User {
       private String username;
	
	private String password;
	
	private String nickname;
	
	private String email;
....
// 要加入有参构造函数和无参构造函数
}


2.创建UserController:
这里的一个重点就是, SpringMVC的Controller是单例模式的。
因此和DWR是有本质区别的 http://alleni123.iteye.com/admin/blogs/1984135
这个链接中的DWR实例我们使用了static来保持变量的一致性。
而在SpringMVC中就不需要那么做了,直接使用private map<Str,User>这样的变量就可以了。


@Controller
@RequestMapping("/user") //这里表示我们访问这个控制器的时候,首先要在地址栏加入/user,
public class UserController {
	
	private  Map<String,User> users=new HashMap<String,User>();
	
	public UserController(){
		users.put("alleni", new User("alleni","123","小兰子","alleni@g.com"));
		users.put("eline", new User("eline","123","小李子","eline@g.com"));
		users.put("dou", new User("dou","123","小德子","dou@g.com"));
		System.out.println("UserController()");
	}
	
	
	 //要访问这个方法,就要在url中输入/users
	@RequestMapping(value="/users",method=RequestMethod.GET) //method=RequestMethod.GET表示只有get请求才会被这个方法处理。
	public String list(Model model,HttpServletResponse res){
		res.setContextType("utf-8");
                model.addAttribute("users",users);
		return "user/list";  //这里表示路径WEB-INF/jsp/user/list.jsp, 也就是hello-servlet.xml中配置的prefix和suffix的值所表达的路径和后缀。
	}
	
}


在WEB-INF/jsp/user目录创建一个list.jsp文件,如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'list.jsp' starting page</title>
    
	 
  </head>
  
  <body>
	<!-- users对应model.addAttribute("users",users)的key值 -->
	<c:forEach items="${users}" var="um">
		   ${um.value.username}
		---${um.value.nickname}
		---${um.value.password}
		---${um.value.email}
	</c:forEach>
	
  </body>
</html>



以上是在视图中显示用户的方法。
接下来是如何通过表单添加用户。

3.添加用户

添加用户我们首先在Controller里面加入以下两个方法:
	//通过add路径,跳转到用户添加页面。当用户发送的是get请求,就会访问这里
	@RequestMapping(value="/add",method=RequestMethod.GET)
	public String add(Model model){
		
		//这里如果不放一个User对象到model里面,就会报错
		// Neither BindingResult nor plain target object for bean name 'user' available as request attribute
		//因为前台会根据modelAttribute="user">的user来获取User的getter和setter方法,才能进行数据添加。
		model.addAttribute(new User());
		return "user/add";  
	} 
	
	
	//在具体添加用户时,是POST请求,就访问这里。
	//form提交的时候就会post请求了。-->sf:form method="post" 
	@RequestMapping(value="/add",method=RequestMethod.POST)
	public String add(User user){   
		users.put(user.getUsername(), user);
		return "redirect:/user/users";  //redirect表示客户端跳转,也就是form被提交以后客户要跳转到的页面
		//注意: 这里是用户端跳转,因此参数必须是我们的控制器的地址路径。
		//这里并不是直接访问WEB-INF/下面的内容,而是访问我们控制器的RequestMapping的值所对应的方法内容,再由该方法访问WEB-INF下的页面。
	}


第一个方法用于跳转到用户添加页面,并通知SpringMVC我们所要添加的对象类型。
model.addAttribute(new User());

这里还有一种方法就是通过注释来告诉SpringMVC要添加的对象类型。
public String add(@ModelAttribute("user") User user)
这里的user便是对象类型的key,也就是jsp页面的modelAttribute的值。

第二个方法用于处理用户添加请求,并在添加成功后让用户跳转到显示用户的页面。
====

用户添加页面:

<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'add.jsp' starting page</title>
    
	 
  </head>
  
  <body>
   	<!--user对应的是model.addAttribute(new User());这里的对象类型-->
   	<sf:form method="post" modelAttribute="user">
   		用户名称:<sf:input path="username"/>
   		用户密码: <sf:input path="password"/>
   		用户昵称: <sf:input path="nickname"/>
   		用户邮箱: <sf:input path="email"/>
   		 <input type="submit" value="添加用户"/>
   	</sf:form>
   	
  </body>
</html>



4.验证用户信息
我们可以通过实现JSR303标准的validator工具来帮助验证用户信息。
最常见就是Hibernate提供的validator

4.1 加入hibernate-validator
                   
   <dependency>
				<groupId>org.hibernate</groupId>
				<artifactId>hibernate-validator</artifactId>
				<version>4.3.1.Final</version>
			</dependency>


4.2修改User.java类,分别在getter上加入注释:
@NotEmpty(message="用户名不能为空")
	public String getUsername() {
		return username;
	}

@Range(min=3,max=10,message="密码的长度必须在3-10之间")
	public String getPassword() {
		return password;
	}

	@Email(message="邮箱的格式不正确")
	public String getEmail() {
		return email;
	}


4.3 修改Controller里面的接受POST请求的方法,加入验证注释

@RequestMapping(value="/add",method=RequestMethod.POST)
	public String add(@Validated User user, BindingResult result){   //BindResult是验证结果类,必须紧跟@Validator 类后面,否则会报错。   
		if(result.hasErrors()){
			//说明有错误
			return "user/add"; //有错误则跳转到add视图中,
		}
...}


4.4 修改add.jsp页面,加入错误信息的显示
	<sf:form method="post" modelAttribute="user">
   		用户名称:<sf:input path="username"/><sf:errors path="username"/><br/>
   		用户密码: <sf:input path="password"/><sf:errors path="password"/><br/>
   		用户昵称: <sf:input path="nickname"/> <br/>
   		用户邮箱: <sf:input path="email"/><sf:errors path="email"/><br/>
   		 <input type="submit" value="添加用户"/>
   	</sf:form>



这里我第一次测试的时候没有出现预期的错误信息。
找了半天原因,才发现是hello-servlet.xml配置文件的问题。
这里必须要加入
<!-- JSR-303 support will be detected on classpath and enabled automatically --><mvc:annotation-driven/>
这里在Spring reference文件中查找一下Configuring a JSR-303 Validator for use by Spring MVC就能看到具体说明
分享到:
评论

相关推荐

    maven + springmvc 入门实例

    **SpringMVC与Maven入门实例详解** 在Java Web开发中,SpringMVC和Maven是两个非常重要的工具。SpringMVC是Spring框架的一部分,它提供了模型-视图-控制器(MVC)架构,用于构建可维护、高性能的Web应用程序。而...

    Maven+SpringMVC的入门级HelloWorld实例

    在IT行业中,Maven和SpringMVC是两个非常重要的组件,它们分别是项目管理和Web应用程序开发的核心...通过这个入门级的HelloWorld实例,我们可以快速理解这两个工具的基本用法,为进一步深入学习和实践打下坚实的基础。

    springmvc的入门例子

    Spring MVC 是一个强大的Java Web应用程序开发框架,是Spring框架的一部分,专门用于构建Web应用程序。它提供了模型-视图-控制器(MVC)架构,简化了处理HTTP请求、数据绑定、验证以及与后端服务交互的过程。这个...

    springMVC入门实例

    在这个入门实例中,我们将深入理解SpringMVC的核心概念,以及如何通过`springmvc_demo_02`这个项目来创建一个简单的应用。 1. **SpringMVC架构** SpringMVC由几个关键组件组成:DispatcherServlet、Controller、...

    Springmvc入门实例

    通过这个简单的入门实例,我们可以了解到 Spring MVC 的基本工作流程:请求到达 DispatcherServlet,由它转发到对应的 Controller,Controller 处理请求后返回视图名称,ViewResolver 解析视图,最后呈现给用户。...

    springmvc入门实例

    本入门实例旨在帮助开发者快速理解并掌握Spring MVC的基本概念和工作流程。 首先,Spring MVC的核心概念包括DispatcherServlet、Controller、Model、View和ViewResolver。DispatcherServlet是Spring MVC的前端控制...

    SpringMVC入门很简单之表单标签

    以上就是SpringMVC入门中的表单处理相关知识点。通过这些基础,开发者可以轻松地构建表单提交、数据验证等功能,实现与后端的交互。在实际项目中,还可以结合其他技术,如Ajax、Thymeleaf等,提升用户体验和开发效率...

    SpringMVC 快速入门

    在这个快速入门教程中,我们将深入理解 SpringMVC 的核心概念、配置以及如何创建一个简单的应用程序。 1. **MVC 模式** MVC 模式是一种设计模式,将应用程序分为三个主要部分:模型(Model)、视图(View)和控制...

    springmvc 简单入门源码

    4. **@Controller注解**:用于标记一个类为Spring MVC的控制器,这样Spring会自动将该类实例化并管理。 5. **@RequestMapping**:用于映射HTTP请求,可以放在类级别或方法级别,指定URL与控制器方法的对应关系。 6...

    springboot+springMVC+mybatis的简单入门实例1

    这个"springboot+springMVC+mybatis的简单入门实例1"为我们提供了一个整合这三个框架的基础项目,帮助开发者快速理解和上手。 首先,Spring Boot是Spring框架的扩展,它简化了创建独立的、生产级别的基于Spring的...

    SpringMVC入门实例,手把手教你搭建项目

    以上就是关于SpringMVC入门实例的基础知识,包括SpringMVC的架构、搭建步骤、核心组件以及常用注解。通过实践这些知识点,你可以快速上手SpringMVC,构建出功能完备的Web应用程序。提供的jar和项目源码可以帮助你更...

    非注解Springmvc+spring+hibernate 入门实例

    总的来说,这个入门实例旨在帮助初学者理解如何在没有使用注解的情况下,通过XML配置文件集成SpringMVC、Spring和Hibernate,完成一个简单的Web应用。虽然现在的最佳实践倾向于使用注解和Spring Boot,但理解非注解...

    SpringMVC入门很简单之国际化

    在这个"SpringMVC入门很简单之国际化"的主题中,我们将深入探讨如何在SpringMVC应用中实现国际化,以满足不同地区用户的需求。 首先,实现国际化需要使用SpringMVC中的`MessageSource`接口。`MessageSource`允许...

    SpringMVC入门

    综上所述,SpringMVC入门涉及的知识点包括但不限于MVC设计模式、后端控制器的配置和使用、映射处理器的作用和类型、视图解析器的配置和工作原理、注解在控制器中的应用以及一个简单的入门实例。这些知识点构成了...

    springmvc入门教程.docx

    1. SpringMVC 入门实例 在入门实例中,首先需要搭建开发环境,包括引入必要的 Spring 相关库。如 org.springframework.aop、org.springframework.beans、org.springframework.context、org.springframework.core 和...

    SpringMVC 基础教程 简单入门实例

    **SpringMVC基础教程简单入门实例** SpringMVC是Spring框架的一个模块,专门用于构建Web应用程序。它提供了模型-视图-控制器(MVC)架构,帮助开发者将业务逻辑、数据处理和用户界面分离,使得代码更加清晰和可维护...

    SpringMVC入门实例

    下面,我们将深入探讨 SpringMVC 的基本概念和如何创建一个入门实例。 1. **SpringMVC 概述** - MVC 模式:Model(模型)负责业务逻辑,View(视图)负责显示结果,Controller(控制器)处理用户请求并协调模型和...

    springmvc入门实例(注解)

    本入门实例将重点介绍如何使用注解来简化Spring MVC的配置,以便快速入门。Eclipse Dynamic Web工程是开发此类应用的常见环境。 首先,我们需要创建一个Eclipse Dynamic Web项目。在Eclipse中,选择"File" -&gt; "New...

    springMVC入门实例(员工系统-Mysql)代码简单易懂

    这个入门实例是一个基于Mysql数据库的员工管理系统,它涵盖了基础的CRUD(创建、读取、更新、删除)操作,并且涉及到实体类与数据库表之间的关联关系。 1. **SpringMVC架构**: SpringMVC通过DispatcherServlet...

Global site tag (gtag.js) - Google Analytics