1,创建实体类对象User

注意要导入 bean-validator.jar 包

package com.yangw.springmvc.entity;import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty;
import org.hibernate.validator.constraints.Range;
import org.springframework.format.annotation.NumberFormat;
import org.springframework.format.annotation.NumberFormat.Style; /***  * 这里的这几个注解是用来验证字段的  */
public class User {@NotEmpty(message="用户名不能为空")private String name;@Length(min=3 ,max=10,message="密码长度应该在3-10之间")private String password;@NumberFormat(style=Style.NUMBER)@Range(min=1,max=100,message="年龄应该在1-100之间")private int age;public User() {}public User(String name, String password, int age) {this.name = name;this.password = password;this.age = age;}/**    *get set方法这里略去    */
}/*** Springmvc作服务器端验证更加简单* 它支持 JSR303  ,JSR是sun公司专门为java来更新的每一个标准* bean-validator.jar  是hibernate的jar包*/

2,在UserController类中完成 User的添加,显示所有内容

package com.yangw.springmvc.controller;import java.util.HashMap;
import java.util.Map;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;import com.yangw.springmvc.entity.User;@Controller
@RequestMapping(value="/user")
public class UserController{private Map<String,User> users = new HashMap<String,User>();public UserController(){users.put("yangw", new User("yangw","123456",24));users.put("ganw", new User("ganw","123456",25));users.put("wangw", new User("wangw","123456",27));}//只有get请求才处理@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 )
//    public String add(Model model){
//        //这里需要提供一个User对象,因为添加的页面
//     第一种方式    model.addAttribute(new User());//        //直接返回到add页面
//        return "user/add";
//    }//链接到add页面时是GET请求,会访问这段代码@RequestMapping(value="/add",method=RequestMethod.GET )public String add(@ModelAttribute(value="user") User user){//第二种提供一个User对象的方式,因为添加的页面return "user/add"; }//链接到add页面时是POST请求,会访问这段代码@RequestMapping(value="/add",method=RequestMethod.POST)//这个User是一个要被验证的对象,使用@Validated说明;//紧跟@Validated来写验证结果类,用BindingResult表示public String add(@Validated User user,BindingResult br){if(br.hasErrors()){//如果有错误,到add界面显示return "user/add";}users.put(user.getName(), user);return "redirect:/user/users"; }}

3,list.jsp页面

注意加入标签库的jar包 jsf-api.jar jsf-impl.jar jstl-1.2.jar

<%@ 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>Insert title here</title>
</head>
<body><a href="add">添加用户</a><br/><c:forEach items="${users }" var="um" ><!-- 这里的um是一个个的 键值对 -->${um.key}---${um.value.name }---${um.value.password }----${um.value.age } <br/></c:forEach>
</body>
</html>

4,add.jsp页面

  用到了springmvc的form表单

<%@ 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>添加用户</title>
</head>
<body><!-- 设置为post请求,并且会自动将表单中的值添加到user中 --><!-- 此时没有写action,直接提交会提交给/add --><sf:form method="post" modelAttribute="user"><!--  sf:input path属性 中设置user对象的属性名 --><!--这个是服务器端验证 sf:errors 标签来输出 验证的错误信息 -->username:<sf:input path="name"/> <sf:errors path="name"/><br/>password:<sf:password path="password"/><sf:errors path="password"/><br/>age:<sf:input path="age"/><sf:errors path="age"/><br/><input type="submit" value="提交" /></sf:form>
</body>
</html>

5,web.xml增加编码过滤器

<filter><filter-name>characterEncoding</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>characterEncoding</filter-name><url-pattern>/*</url-pattern></filter-mapping>

6,显示一个用户详细信息

    /*** @PathVariable:路径中的变量**/@RequestMapping(value="/{name}",method=RequestMethod.GET)public String show(@PathVariable String name,Model model){model.addAttribute(users.get(name));return "/user/show"; }

show.jsp页面

<body>username:${user.name }<br/>password:${user.password}<br/>age:${user.age }</body>

为list页面的增加超级链接

<c:forEach items="${users }" var="um" ><!-- 这里的um是一个个的 键值对 -->${um.key}---<a href="${um.value.name }">${um.value.name }</a>---${um.value.password }----${um.value.age } <br/></c:forEach>

7,用户的删除,更新

/*** 修改用户,获取原始用户页面信息**/@RequestMapping(value="/{name}/update",method=RequestMethod.GET)public String update(@PathVariable String name,Model model){model.addAttribute(users.get(name));return "/user/update"; }/*** 修改用户,对提交的数据进行更新操作**/@RequestMapping(value="/{name}/update",method=RequestMethod.POST)public String update(@Validated User user,BindingResult br){if(br.hasErrors()){//如果有错误,到add界面显示return "user/update";}users.put(user.getName(), user);return "redirect:/user/users"; }/*** 删除用户**/@RequestMapping(value="/{name}/delete",method=RequestMethod.GET)public String delete(@PathVariable String name){users.remove(name);return "redirect:/user/users"; }

update.jsp 和 list.jsp

update.jsp页面 与add.jsp其实一样<body><!-- 设置为post请求,并且会自动将表单中的值添加到user中 --><!-- 此时没有写action,直接提交会提交给/update --><sf:form method="post" modelAttribute="user">username:<sf:input path="name"/> <sf:errors path="name"/><br/>password:<sf:password path="password"/><sf:errors path="password"/><br/>age:<sf:input path="age"/><sf:errors path="age"/><br/><input type="submit" value="提交" /></sf:form>
</body>

 <c:forEach items="${users }" var="um" ><!-- 这里的um是一个个的 键值对 -->${um.key}---<a href="${um.value.name }">${um.value.name }</a>---${um.value.password }----${um.value.age } ----<a href="${um.value.name }/update">更新</a>---<a href="${um.value.name }/delete">删除</a><br/></c:forEach>

转载于:https://www.cnblogs.com/yangw/p/3434627.html

springmvc02相关推荐

  1. Java(SpringMVC02)

    Java(SpringMVC02) 参考视频:8. Controller配置总结(狂神) 6. 控制器Controller和Restful风格 6.1 控制器Controller 控制器复杂提供访问应 ...

  2. Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解

    Spring MVC 学习总结(二)--控制器定义与@RequestMapping详解 目录 一.控制器定义 1.1.实现接口Controller定义控制器 1.2.使用注解@Controller定义 ...

  3. layuiajax提交表单控制层代码_究竟怎么用Restful风格编代码必看这篇。(二)

    点击上方"IT咸鱼",星标公众号每天分享技术栈,开发工具等 简单急记几个小点:RequestMapping注解的使用和里面涉及到的参数用途和写法 @RequestMapping(& ...

  4. SpringMVC框架 学习DAY_03:@RequestMapping注解/拦截器与过滤器

    1. 关于@RequestMapping注解 在控制器中,在处理请求的方法之前添加@RequestMapping注解,可以配置请求路径与处理请求的方法的映射关系! 在@RequestMapping注解 ...

  5. springMVC3.0(文件上传,@RequestMapping加参数,@SessionAttributes,@ModelAttribute,转发,重定向,数值获取,传参,ajax,拦截器)

    1.项目包结构如下: 2.       spring配置文件springMVC.xml修改如下: <?xml version="1.0" encoding="UTF ...

  6. springmvc新建拦截器

    [1]web.xml中配置springmvc的配置文件路径 <!-- 配置 DispatcherServlet --><servlet><servlet-name> ...

  7. springmvc,spring,hibernate5.0整合

    目录 1. pom依赖 2. web.xml 3. spring核心配置文件 3.1 jdbc配置信息 3.2 sping 配置文件 4. 实体映射 5. 项目结构 5.1 curd 5.2 页面 6 ...

  8. springday04-go1

    springmvc02: 1.创建项目,导入jar包 2.复制xml文件到src下 3.在web.xml中配置DispatcherServlet(代码一致) <?xml version=&quo ...

  9. 【狂神说JAVA】SpringMVC笔记

    最近在学习java框架,发现狂神说的视频挺好的,通俗易懂,还有笔记,整理过来,以便随时复习回顾. 狂神说springmvc 视频链接: B站视频 springmvc 系列笔记 狂神说SpringMVC ...

最新文章

  1. 纪录片 量子力学揭秘
  2. Docker Swarm Mode 学习笔记(聊聊 replicas)
  3. python基础框架_Python基础框架和工具-阿里云开发者社区
  4. PowerPoint中的LinkFormat对象
  5. matlab搜索路径
  6. js实现对象完美克隆
  7. 黑龙江计算机单招学校,黑龙江有名气的中专单招
  8. java thread signal_java — Thread之CountDownLatch的使用
  9. 在JAX-RS中处理异步请求中的超时
  10. Go 空结构体的 3 种使用场景
  11. TCP/IP:SCTP报文格式
  12. 原创案例文章:安徽淮南矿业集团网络分析案例
  13. python学习(四)----函数
  14. 测试笔记本续航的软件,续航时间测试和总结
  15. PHP获取客户端IP函数
  16. kali安装火狐浏览器
  17. 给移动硬盘装上LINUX全攻略,给移动硬盘装上LINUX全攻略
  18. 继承MongoDBRepository仓库的模糊查询
  19. 微信小程序云函数调用成功result返回null
  20. java 位置定位_地图实时定位我的位置

热门文章

  1. 两个字符串的最长公共子序列长度_【面试】动态规划-之最长公共子序列、最长公共子串问题...
  2. python语言的语法_Python语言 中的一些特殊语法
  3. CodeForces-1058B B. Vasya and Cornfield
  4. java互联网架构师入门进阶之路
  5. C# 中的char 和 byte
  6. 全志A33-编译uboot
  7. 大额存款到期,银行不能给兑付怎么办?
  8. 第一次申请信用卡额度太低,怎么办?
  9. 对刺客历史的一种颠覆:说说《最后的刺客》
  10. html提交多个正则表达式,将多个html文件的正则表达式结果写入.txt outfile