在这一节的学习,我们会更多的使用表单,还有更为复杂的SpringMVC应用。由于内容比较多,所以我们就分几个章节来学习。

1.创建DTO

DTO是DataTransfer Object的缩写。通常理解就是我们所操作的实体对象,这也是我们面向对象的语言的思维。我们把我们的对象称为ProfileForm.它将会映射到我们表单域的信息里。我们将ProfileForm放到src/main/java/masterSpringMVC/profile下。

 package masterSpringMVC.profile;import masterSpringMVC.date.PastLocalDate;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;/*** Profile,即用户的信息的实体类* Created by OwenWilliam on 2016/5/15.*/
public class ProfileForm {private String twitterHandle;private String email;private LocalDate birthDate;private List<String> tastes = new ArrayList<String>();public String getTwitterHandle() {return twitterHandle;}public void setTwitterHandle(String twitterHandle) {this.twitterHandle = twitterHandle;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public LocalDate getBirthDate() {return birthDate;}public void setBirthDate(LocalDate birthDate) {this.birthDate = birthDate;}public List<String> getTastes() {return tastes;}public void setTastes(List<String> tastes) {this.tastes = tastes;}@Overridepublic String toString() {return "ProfileForm{" +"twitterHandle='" + twitterHandle + '\'' +", email='" + email + '\'' +", birthDate=" + birthDate +", tastes=" + tastes +'}';}
}

上面就是POJO的规则,不要忘记了加入getter和setter方法,不然的话它将不能执行相应的工作。最后,我们添加了toString()函数,可以不加,但是好习惯还是加一下。

2.创建profilePage视图

在我们上面创建的实体对象之后,我们就要使用它们,在我们的profilePage视图中展现出来。我们来看一下我们的视图页面是如何设计的。文件名字是profilePage.html,路径是在:src/main/resource/templates/profile/

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorator="layout/default">
<head lang="en">
<title>Your profile</title>
</head>
<body>
<div class="row" layout:fragment="content">
<h2 class="indigo-text center">Personal info</h2>
<form th:action="@{/profile}" th:object="${profileForm}"
method="post" class="col m8 s12 offset-m2">
<div class="row">
<div class="input-field col s6">
<input th:field="${profileForm.twitterHandle}"
id="twitterHandle" type="text"/>
<label for="twitterHandle">Last Name</label>
</div>
<div class="input-field col s6">
<input th:field="${profileForm.email}" id="email"
type="text"/>
<label for="email">Email</label>
</div>
</div>
<div class="row">
<div class="input-field col s6">
<input th:field="${profileForm.birthDate}"
id="birthDate" type="text"/>
<label for="birthDate">Birth Date</label>
</div>
</div>
<div class="row s12">
<button class="btn waves-effect waves-light" type="submit"
name="save">Submit
<i class="mdi-content-send right"></i>
</button>
</div>
</form>
</div>
</body>
</html>

从上面的代码中, 我们需要注意的两件事是:th:object这个是form表单的参数, th:filed这个是表单域中发的参数。也就是说th:object是对应的实体对象是谁,我们要以小写字母开关,而th:field是实体的各各属性。

3.控制层的实现

为了让上面的th:onbject可以作用,我们需要添加控制层来应用。名字叫做ProfileController,所在有路径是:src/main/java/profile/

@Controller
public class ProfileController {
@RequestMapping("/profile")
public String displayProfile(ProfileForm profileForm) {
return "profile/profilePage";
}
@RequestMapping(value = "/profile", method = RequestMethod.POST)
public String saveProfile(ProfileForm profileForm) {
System.out.println("save ok" + profileForm);
return "redirect:/profile";
}
}

4.总结

通过上面的设计,我们可以看到的结果如下:

我们是以 POST的方式 来请求,可是当你添加的日期为10/10/2015时,那么网页将会报错,报错的信息是400.对于这个问题我们下节将会讲解。


源码路径:git@github.com:owenwilliam/masterSpringMVC.git

SpringMVC创建用户信息(一)相关推荐

  1. Facebook热门应用被曝向第三方提供用户信息

    北京时间10月18日消息,据国外媒体报道,<华尔街日报>日前所作的一项调查发现,许多Facebook最热门应用一直都将用户的身份信息实发送给数十家广告和互联网研究公司.据悉,该身份信息不仅 ...

  2. 39-网上商城数据库-用户信息数据操作

    39-网上商城数据库-用户信息数据操作 项目描述 在电子商务兴起的大环境下,建立利用互联网开拓销售渠道,帮助企业及时调整商品结构,协助经销商打开货源的信息门户成为解决信息流通不畅的有效方案,电子商务有 ...

  3. Django rest_framework 后端接口开发 开发与用户相关的一组接口 登录注册与用户信息查询修改

    Django rest_framework 后端接口开发 开发与用户相关的一组接口 Django DRF框架用起来还是有一些难度的,需要做的配置,需要导的包很多,所以需要多多练习才能掌握它的使用.此文 ...

  4. C#海康威视人脸设备-创建人脸信息,并同步到数据库

    目录 1.介绍 2.登录设备 3.退出登录设备 4.云端→设备 5.设备→云端 6.公共方法.实体类 1.介绍 海康威视官方有对应的demo,该文章只是总结! 使用的wpf,数据库用的是mysql 主 ...

  5. SSM:实现用户信息的增删改和分页展示

    maven项目:实现用户信息的增删改和分页展示 接着上一篇博客项目的基础上开始 在page目录下,创建failer.jsp,当用户登录失败后,进入failer.jsp提示用户登录失败 <%@ p ...

  6. Linux操作系统——批量创建用户

    Linux操作系统--批量创建用户 文章目录 Linux操作系统--批量创建用户 第一步:创建组群GID为650的是student的组群 第二步:创建用户信息文件students.txt,并用vim编 ...

  7. 企业微信内自创建app 获取用户信息问题

    为了防止自己健忘,从现在开始 每个学习阶段都会记录博客!! 获取用户信息第一步. 构造链接 https://open.weixin.qq.com/connect/oauth2/authorize? a ...

  8. 【在表格下方创建“添加”按钮,完成添加用户信息,点击后自动添加等功能】

    视频教程 在Tab表格下方建立一个添加按钮,实现在页面上添加用户信息的功能 1.在elementUI中找到Click,当前使用的是第一种效果,复制 2.在表单下面:创建按钮.复制代码. 3.修改 绑定 ...

  9. 登录页面设置cookie,用户登录后,创建cookie保存用户信息

    代码要求: 用户登录后,创建cookie保存用户信息 设置cookie的有效期为5分钟 在登录页循环遍历cookie数组,判断是否存在指定名称的cookie,若存在则直接跳转至欢迎页面 代码实现过程: ...

  10. Centos中用户相关操作(创建用户、设置密码、切换用户、修改用户信息、附加组、删除用户、用户分类)

    1.创建新用户 在root用户权限下新建用户: useradd -m xxx 选项 说明 -m 自动创建用户主目录,主目录的名字就是用户名 -g 指定用户所属的用户组,默认不指定会自动创建一个同名的用 ...

最新文章

  1. AJAXControlToolkit-Framework3.5SP1 下载地址
  2. 首批新冠肺炎人体疫苗来了!全球第一mRNA药物研发公司研制,已开启安全性临床试验...
  3. 数据库备份(存储过程)
  4. python中的with
  5. 细说双 11 直播背后的压测保障技术
  6. 被替换的项目不是替换值长度的倍数_面试官,为啥HashMap的长度是2的n次方?
  7. python 文本框_重置Python中的文本框
  8. 奥运加油,中国加油!!!
  9. core identity mysql_Microsoft.AspNetCore.Identity 使用 mysql 报错处理
  10. 为什么印度盛产码农_印度农产品价格的时间序列分析
  11. PicGo复制自定义链接
  12. tomcat日志中文乱码问题
  13. 计算机视觉(7)————特征检测(边缘/角/斑点)小专题(2)Roberts 算子
  14. 12306验证码的一些思考
  15. 阿里淘系优质开源项目推荐(下)
  16. 爬虫系列 | 1、什么是爬虫,玩爬虫的正确姿势有哪些
  17. 将文件夹添加到Windows 7 Media Center中的影片库
  18. 滤镜艺术---新海诚(你的名字)滤镜特效的实现解密
  19. 视达配色教程4 色相型和色量率是什么
  20. SH-SSS丨跨年龄声纹识别:学习年龄不变的说话人特征

热门文章

  1. 用Ant来做一键部署
  2. 小型工厂企业网站究竟该怎么做好SEO优化,从而带来更多订单?
  3. 丽江,是否一群失意的人聚合地
  4. Codeforces Round 1 - 10总结 【@Abandon】
  5. 网管学习日记-STP
  6. 游戏开发之C++面向对象模型(C++类中成员变量和成员函数的存储原理及this指针)(C++基础)
  7. Linux 源码包软件安装操作与实战
  8. C# Hashtable赋值给另一个Hashtable时
  9. 《验收测试驱动开发:ATDD实例详解》—第2章2.2节结对完成第一个测试
  10. 解决启动Eclipse后提示’Running android lint’错误的问题