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. C# 读书笔记之访问虚方法、重写方法和隐藏方法

    C#允许派生类中的方法与基类中方法具有相同的签名:基类中使用关键字virtual定义虚方法:然后派生类中使用关键字override来重写方法,或使用关键字new来覆盖方法(隐藏方法). 重写方法用相同 ...

  2. APUE学习之---------------进程

    离职了,交接期也有足够的时间了,可以在好好的再看一下APUE,想想上次详细的看还是在两年之前,虽然中间也偶尔会翻出来看看,但是由于工作上交集相对比较少一直没有去细读一下.现在正好是一段空挡期可以好好看 ...

  3. 讲讲金融业务(一)--自助结算终端POS

    之前在群里和大家聊天的时候,发现好多人对银行业务比較感兴趣,或许是由于大家对银行不了解,以为非常神奇的样子.全部,从这周開始我打算把我肚子里的墨水慢慢地倒出来,和大家分享分享.   在技术还不发达的时 ...

  4. CRC32 vs Java.HashCode

    找了容量为27万中文词库进行试验    CRC32 中冲突率 < 0.01%    而 Java.HashCode 有 4%    hashCode 的速度 应该比 CRC 快 2-3 倍 CR ...

  5. C#中接口和方法的运用(Fourteenth Day)

    由于周五我有一些事情没来得及总结当天的知识,所以在今天总结一下周五在云和学院所学到的有关接口和方法的知识. 理论: 接口: •接口的定义:interface关键字,接口中可以有属性.方法(未实现) • ...

  6. 快速构建ASP.NET MVC Admin主页

    前言 后台开发人员一般不喜欢调样式,搞半天样式出不来,还要考虑各种浏览器兼容,费心费力不讨好,还好互联网时代有大量的资源共享,避免我们从零开始,现在就来看怎么快速构建一个ASP.NET MVC后台管理 ...

  7. UIScreen的 bound、frame、scale属性

    CGRect bound = [[UIScreen mainScreen] bounds];  // 返回的是带有状态栏的Rect   CGRect frame = [[UIScreen mainSc ...

  8. Windows最常用的几个网络CMD命令总结

    Windows最常用的几个网络CMD命令总结 http://www.cnblogs.com/sbaicl/archive/2013/03/05/2944001.html 一.ping 主要是测试本机T ...

  9. 杭电oj An easy problem

    </pre><h1 style="color: rgb(26, 92, 200);">An easy problem</h1><stron ...

  10. (Problem 47)Distinct primes factors

    The first two consecutive numbers to have two distinct prime factors are: 14 = 2  7 15 = 3  5 The fi ...