springMVC入门-04
这一讲介绍springMVC使用rest风格添加数据的实现。在之前的一讲中添加一个链接跳转到add.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>
<a href="add">添加</a>
<c:forEach items="${users}" var="um" >
${um.value.username }
----${um.value.nickname }
----${um.value.password }
----${um.value.email }<br/>
</c:forEach>
</body>
</html>
对应使用get方式跳转的url为http://localhost:8080/springMVC001/user/add。对应controller类中需要跳转到add.jsp页面,其中需要初始化一个user对象。对应add方法如下所示:
// 链接到add页面时是GET请求,会访问这段代码
@RequestMapping(value = "/add", method = RequestMethod.GET)
public String add(@ModelAttribute("user") Users user) {
// 开启modelDriven
//两种方式往add.jsp页面初始化一个user实例:
//方式一:在入参中使用Model,然后在方法中新建一个user对象;
//方式二:在入参中使用ModelAttribute注解方式新建一个user对象,此处使用该方式。
// model.addAttribute(new User());
return "user/add";
}
对应跳转到add.jsp页面,为一个表单结构,需要使用spring提供的表单标签,对应代码如下所示:
<%@ 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>
<!-- 此时没有写action,直接提交会提交给/add -->
<!-- controller类中需要初始化一个User对象在前台表单中使用-->
<!-- 将表单中的值添加到modelAttribute的属性值user中 -->
<sf:form method="post" modelAttribute="user" enctype="multipart/form-data">
Username:<sf:input path="username"/><sf:errors path="username"/><br/>
Password:<sf:password path="password"/><sf:errors path="password"/><br/>
Nickname:<sf:input path="nickname"/><br/>
Email:<sf:input path="email"/><sf:errors path="email"/><br/>
<input type="submit" value="添加用户"/>
</sf:form>
</body>
</html>
对应请求为post请求,且没有表单action,则跳转到RequestMethod为post的add方法中,之前add.jsp页面中存在对输入的服务器校验,需要针对User对象使用bean-validator.jar进行校验,对应代码如下所示:
package zttc.itat.entity; import javax.validation.constraints.Size; import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty; public class Users {
private String username;
private String password;
private String nickname;
private String email; public Users() {
} @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;
} 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;
} public Users(String username, String password, String nickname, String email) {
super();
this.username = username;
this.password = password;
this.nickname = nickname;
this.email = email;
}
}
对应在controller类中需要将post请求得到的user对象进行前台验证,使用BindingResult来得到验证的结果,如果结果有误,则跳转到add.jsp页面,对应代码如下所示:
// 在具体添加用户时,是post请求,就访问以下代码
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@Validated Users user, BindingResult br,
) throws IOException {// 一定要紧跟Validate之后写验证结果类
if (br.hasErrors()) {
// 如果有错误直接跳转到add视图
return "user/add";
}
users.put(user.getUsername(), user);
return "redirect:/user/users";
}
springMVC入门-04的更多相关文章
- SpringMVC札集(01)——SpringMVC入门完整详细示例(上)
自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...
- 【Spring】SpringMVC入门示例讲解
目录结构: // contents structure [-] SpringMVC是什么 Spring MVC的设计原理 SpringMVC入门示例 1,复制Jar包 2,Web.xml文件 3,My ...
- Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(一)
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6999743.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十一)——S ...
- SpringMVC入门第二天
SpringMVC第二天 1. 回顾 1.Springmvc介绍? Springmvc是Spring公司 2.Springmvc入门程序 第一步:Web工程 第二步:导Jar包 第三步:web.x ...
- 【网络爬虫入门04】彻底掌握BeautifulSoup的CSS选择器
[网络爬虫入门04]彻底掌握BeautifulSoup的CSS选择器 广东职业技术学院 欧浩源 2017-10-21 1.引言 目前,除了官方文档之外,市面上及网络详细介绍BeautifulSoup ...
- 3.2.1 SpringMVC入门
一. SpringMVC入门 1. MVC介绍 MVC全名 是Model View Controller, 是模型(model) - 视图(view) - 控制器(controller) 的缩写, 它 ...
- SpringMVC入门学习(二)
SpringMVC入门学习(二) ssm框架 springMVC 在上一篇博客中,我简单介绍了一下SpringMVC的环境配置,和简单的使用,今天我们将进一步的学习下Springmvc的操作. mo ...
- SpringMVC入门学习(一)
SpringMVC入门学习(一) ssm框架 spring SpringMVC是一个Java WEB框架,现在我们知道Spring了,那么,何为MVC呢? MVC是一种设计模式,其分为3个方面 mo ...
- springMVC入门(一)
1. SpringMVC入门 1.1SpringMVC是什么 Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出 ...
随机推荐
- SearchView去掉下划线
SearchView calSearchView = (SearchView) findViewById(R.id.sv_search_text); if (calSearchView != null ...
- Chapter 3 Phenomenon——17
Dr. Cullen raised his eyebrows. "Do you want to stay?" Cullen医生抬起了他的眉毛“你想待在这吗?” "No, ...
- IntelliJ IDEA使用心得之问题篇;
在使用IDEA的时候,难免会遇到一些问题,总结下来,一是备忘,而是分享. 1.IDEA代码编辑区无法编辑? 当系统时间被调整到当前时间以前时会导致IDEA无法编辑,有3中解决方案:1)重启IDEA:( ...
- C++中模板与泛型编程
目录 定义一个通用模板 模板特化和偏特化 模板实例化与匹配 可变参数模板 泛型编程是指独立与任何类型的方式编写代码.泛型编程和面向对象编程,都依赖与某种形式的多态.面向对象编程的多态性在运行时应用于存 ...
- spring中获取applicationContext(2)
前几天写web项目的时候,用到了spring mvc. 但是又写bean.我要在代码里面生成,而这个bean里面,又有一些属性是通过spring注入的. 所以,只能通过ApplicationConte ...
- 通过六个题目彻底掌握String笔试面试题
http://blog.csdn.net/chj97/article/details/6899598 1 public static void main(String[] args) { String ...
- SFTP服务器搭建
Sftp搭建文档 1. 查看openssh的版本 # ssh -V Openssh版本必须大于4.8p1. 2. 创建用户并设置登录密码 #groupadd sftp #useradd –d / ...
- 12312312312312ssss
- 面试6 在c#中如何声明一个类不能被继承
C#通过关键字 sealed 可以声明一个类型不能被继承. 设计中应该为所有不被作为基类的类型添加sealed关键字,用以避免各种来自继承的易产生的错误.
- Python中类的属性的访问控制
因为自己是做.NET的,之前有学习过Python,喜欢这门语言的很多特性,最近又不时看了一会儿,将自己的感受分享给大家,其中也难免会用C#的角度看Python的语法,主要还是讲下Python中类中对属 ...