package com.kite.controller;

import java.util.HashMap;
import java.util.Map; import javax.validation.Valid; 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.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import com.kite.entity.User; /**
* 简单的增删改查实现
* @author kite
*
*/
@Controller
@RequestMapping(value={"/user"})
public class UserController
{
//简单数据模拟
Map<String, User> map = new HashMap<String, User>();
public UserController()
{
map.put("zs", new User("zs", "", "张三", "123dsad456"));
map.put("ll", new User("ll", "", "李四", "123dsa456"));
map.put("ww", new User("ww", "", "王五", "dsa"));
map.put("zl", new User("zl", "5dsada", "赵六", "dsadsa"));
}
/**
* 显示列表
* @param model
* @return
*/
@RequestMapping({"/list"})
public String list(Model model)
{
model.addAttribute("users", map);
return "user/list";
}
/**
* 到添加页面使用method请求的方式来区分
* @return
*/
@RequestMapping(value={"/add"},method=RequestMethod.GET)
public String add(User user)
{
return "/user/add";
}
/**
* post请求方式实现真正的添加
* 使用bean validation
* BindingResult br 必须在@valid后面
* @return
*/
@RequestMapping(value={"/add"}, method=RequestMethod.POST)
public String add(@Validated User user, BindingResult br)
{
if(br.hasErrors())
{
//出错
return "user/add";
}
map.put(user.getUserName(), user);
return "redirect:/user/list";
}
/**
* 查看
* @param userName
* @param model
* @return
*/
@RequestMapping({"/{userName}/show"})
public String show(@PathVariable String userName, Model model)
{
User user = map.get(userName);
model.addAttribute(user);
return "/user/show";
}
/**
* 到修改页面
* @param userName
* @return
*/
@RequestMapping(value={"/{userName}/update"},method=RequestMethod.GET)
public String update(@PathVariable @ModelAttribute(value="userName") String userName, Model model)
{
User user = map.get(userName);
model.addAttribute(user);
return "/user/update";
}
/**
* 真正的更新
* @param userName
* @param user
* @param br
* @return
*/
@RequestMapping(value={"/{userName}/update"},method=RequestMethod.POST)
public String update(@PathVariable String userName, @Valid User user, BindingResult br)
{
map.put(userName, user);
return "redirect:/user/list";
}
/**
* 删除的实现
* @param userName
* @return
*/
@RequestMapping(value={"/{userName}/delete"},method=RequestMethod.GET)
public String delete(@PathVariable String userName)
{
map.remove(userName);
return "redirect:/user/list";
}
} 使用到bean validation的类 注解放在get方法只上
package com.kite.entity; import javax.validation.constraints.Size; import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
import org.hibernate.validator.constraints.Range; public class User
{
private String userName;
private String password;
private String nickName;
private String email;
public User()
{
super();
// TODO Auto-generated constructor stub
}
public User(String userName, String password, String nickName, String email)
{
super();
this.userName = userName;
this.password = password;
this.nickName = nickName;
this.email = email;
}
@Override
public String toString()
{
return "User [userName=" + userName + ", password=" + password
+ ", nickName=" + nickName + ", email=" + email + "]";
}
@NotEmpty(message="用户名不能为空")
public String getUserName()
{
return userName;
} public void setUserName(String userName)
{
this.userName = userName;
}
@Size(min=,max=,message="密码的长度必须在6-18之间")
public String getPassword()
{
return password;
} public void setPassword(String password)
{
this.password = password;
}
public String getNickName()
{
return nickName;
}
public void setNickName(String nickName)
{
this.nickName = nickName;
}
@Email(message="邮箱格式不符合")
public String getEmail()
{
return email;
} public void setEmail(String email)
{
this.email = email;
} } 其他代码就不一一复制了

基于springmvc的简单增删改查实现---中间使用到了bean validation的更多相关文章

  1. MyBatis之二:简单增删改查

    这一篇在上一篇的基础上简单讲解如何进行增删改查操作. 一.在mybatis的配置文件conf.xml中注册xml与注解映射 <!-- 注册映射文件 --> <mappers> ...

  2. ado.net的简单数据库操作(三)——简单增删改查的实际应用

    果然,在犯困的时候就该写写博客,写博客就不困了,哈哈! 上篇我记录了自己的SqlHelper的开发过程,今天记录一下如何使用这个sqlhelper书写一个具有简单增删改查的小实例啦. 实例描述:在数据 ...

  3. Redis:五种数据类型的简单增删改查

    Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" OK #查询ay_ke ...

  4. 基于pymysql模块的增删改查

    上课笔记 重点:(熟练)多表查询创建存储过程原生sql索引原理 pymysql 封装好的客户端cursor 底层就是一个send操作commit 告诉mysql真的要完成修改操作(不然修改不会生效)e ...

  5. 国产化之路-统信UOS + Nginx + Asp.Net MVC + EF Core 3.1 + 达梦DM8实现简单增删改查操作

    专题目录 国产化之路-统信UOS操作系统安装 国产化之路-国产操作系统安装.net core 3.1 sdk 国产化之路-安装WEB服务器 国产化之路-安装达梦DM8数据库 国产化之路-统信UOS + ...

  6. Mybatis实现简单增删改查

    Mybatis的简单应用 学习内容: 需求 环境准备 代码 总结: 学习内容: 需求 使用Mybatis实现简单增删改查(以下是在IDEA中实现的,其他开发工具中,代码一样) jar 包下载:http ...

  7. idea+spring4+springmvc+mybatis+maven实现简单增删改查CRUD

    在学习spring4+springmvc+mybatis的ssm框架,idea整合简单实现增删改查功能,在这里记录一下. 原文在这里:https://my.oschina.net/finchxu/bl ...

  8. 学生信息管理系统--基于jsp技术和MySQL的简单增删改查

    web实现增删改查的方式有很多啊,对于初学者来说当然是要先了解各部分的传值的方式.本篇博客从jsp技术的最基础方面进行说明. 一.什么是jsp技术 首先,我们要了解什么是jsp技术. jsp技术是基于 ...

  9. springMVC操作mongoDB增删改查

    下面是mongoDb简单的增删改查(新闻类) 附:query.addCriteria(Criteria.where("modelId").ne("").ne(n ...

随机推荐

  1. HDU 2673 shǎ崽 OrOrOrOrz

    #include <cstdio> #include <algorithm> using namespace std; int main() { int n; while (s ...

  2. C++ 经常使用类 string类

    ===6.3.2使用string对象=== string word="I love China" *链接字符串* string description=adjective  + & ...

  3. SqlServer之like、charindex、patindex(转载)

    SqlServer之like.charindex.patindex   1.环境介绍 测试环境 SQL2005 测试数据 200W条   2.环境准备 2.1建表 CREATE TABLE [dbo] ...

  4. MySQL 5.7.14 安装

    http://www.cnblogs.com/zcGu/articles/5740936.html 因笔者个人需要需要在本机安装Mysql,先将安装过程记录如下,希望对他人有所参考. 一, 1, 进入 ...

  5. java之内存可见型

    1.可见性的概念 一个线程对于共享变量的修改,能够及时被其他的线程看到. 2.什么是共享变量 一个变量在多个线程中的工作内存中都存在变量副本,那么这个变量在这几个线程之间共享. 3.Java线程的工作 ...

  6. URAL 1203 Scientific Conference dp?贪心

    题目:click here 分明就是贪心怎么会在dp的专题 #include <bits/stdc++.h> using namespace std; typedef unsigned l ...

  7. 2351: [BeiJing2011]Matrix( hash )

    hash一下, 把原矩阵所有A*B的子矩阵的hash值存在set里面, 然后对于每个询问就求出hash值, 在set中查找. ------------------------------------- ...

  8. swift + xcode 新手上路

    有用的参考博文: 视频教程: 如何创建第一个iPhone App - HelloWorldHelloWorld 熟悉xcode: http://www.cocoachina.com/swift/201 ...

  9. 我的Python成长之路---第八天---Python基础(23)---2016年3月5日(晴)

    socketserver 之前讲道德socket模块是单进程的,只能接受一个客户端的连接和请求,只有当该客户端断开的之后才能再接受来自其他客户端的连接和请求.当然我们也可以通过python的多线程等模 ...

  10. Linux的起源、特点和版本号

    前言 最近上陈渝老师的<高级操作系统>,需要在ucore实验平台上完成一个麻雀虽小五脏俱全的OS,本着看过一小半<30天自制操作系统>的自信,以为这不过是小case,怎料被虐得 ...