一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Spring學習筆記2之表單數(shù)據(jù)驗證、文件上傳實例代碼

Spring學習筆記2之表單數(shù)據(jù)驗證、文件上傳實例代碼

2020-05-29 14:26everSeeker JAVA教程

這篇文章主要介紹了Spring學習筆記2之表單數(shù)據(jù)驗證、文件上傳 的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

在上篇文章給大家介紹了Spring學習筆記1之IOC詳解盡量使用注解以及java代碼,接下來本文重點給大家介紹Spring學習筆記2之表單數(shù)據(jù)驗證、文件上傳實例代碼,具體內容,請參考本文吧!

一、表單數(shù)據(jù)驗證

用戶注冊時,需要填寫賬號、密碼、郵箱以及手機號,均為必填項,并且需要符合一定的格式。比如賬號需要32位以內,郵箱必須符合郵箱格式,手機號必須為11位號碼等。可以采用在注冊時驗證信息,或者專門寫一個工具類用來驗證;來看下在SpringMVC中如何通過簡單的注釋實現(xiàn)表單數(shù)據(jù)驗證。

在javax.validation.constraints包下面,定義了多個注解。比如:

@NotNull: 所注解元素的值必須不能為null。注:表單中不填寫任何數(shù)據(jù)直接提交,并不意味著為null,而是空字符串。

@Size: 所注解的元素必須為String、集合或者數(shù)組,并且長度要符合給定的范圍。

@Past: 所注解的元素的值必須是一個過去的時間。

@Digits: 所注解的元素必須是數(shù)字,并且它的值必須有指定的位數(shù)。

@Pattern: 所注解的元素的值必須匹配給定的正則表達式

另外,在org.hibernate.validator.constraints包下面,定義了更多的注解。比如:

@Email: 匹配email格式。

@URL: 匹配url格式。

下面看一下在SpringMVC中如何使用。

1、首先在pom.xml文件中載入需要的

?
1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.4.Final</version>
</dependency>

需要注意的是,javax.validation只是定義了校驗API,必須添加API的實現(xiàn)才行,比如org.hibernate.validator,否則會報錯。

2、在類的屬性上添加注解,以User.java為例。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
public class User implements Serializable {
@Size(min = 32, max = 32, message = "uuid應該為32位字符串")
private String id;
@Size(min = 1, max = 32, message = "賬號長度應該在1-32位之間")
private String username;
@NotEmpty(message = "密碼不能為空")
private String password;
@NotEmpty(message = "email不能為空")
@Email(message = "email格式不正確")
private String email;
@Size(min = 11, max = 11, message = "手機號長度為11位")
private String cellphone;
}

message: 如果表單數(shù)據(jù)驗證失敗,可以顯示的錯誤信息。

3、在UserController中應用校驗功能,添加@Valid注解即可。

以UserController.java為例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Controller
@RequestMapping("/user")
public class UserController {
private UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String processRegistration(@Valid User user, Errors errors) { //@Valid,user對象應用校驗功能
if (errors.hasErrors()) { //如果表單驗證失敗,返回注冊頁面
return "register";
}
if (user.getId() == "")
user.setId(UUID.randomUUID().toString().replaceAll("-", ""));
if (user.getRegDate() == 0)
user.setRegDate(new Date().getTime());
userService.addUser(user);
return "redirect:/user/" + user.getUsername();
}
}

4、編寫jsp文件,展示頁面,以register.jsp為例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
<%@ page session="false" %>
<html lang="en">
<head>
<title>Register</title>
<link rel="stylesheet"
type="text/css"
href="<c:url value="/resources/style.css" />" >
</head>
<body>
<sf:form method="POST" action="/register/user/register" commandName="user">
<%-- 如果表單數(shù)據(jù)驗證失敗,顯示錯誤信息 --%>
<sf:errors path="*" element="div" cssClass="errors"/><br />
<table align="center">
<tr>
<td>UserName: </td>
<td><sf:input path="username" cssErrorClass="errors"/></td>
</tr>
<tr>
<td>Password: </td>
<td><sf:password path="password" cssErrorClass="errors"/></td>
</tr>
<tr>
<td>Email: </td>
<td><sf:input path="email" cssErrorClass="errors"/></td>
</tr>
<tr>
<td>CellPhone: </td>
<td><sf:input path="cellphone" cssErrorClass="errors"/></td>
</tr>
</table><br />
<input type="submit" value="Register"/>
</sf:form>
</body>
</html>

最終效果如下:

Spring學習筆記2之表單數(shù)據(jù)驗證、文件上傳實例代碼

二、文件上傳

在Spring中,文件上傳很簡單,只需要3步即可。

1、如果我們配置的DispartcherServlet繼承了AbstractAnnotationConfigDispatcherServletInitializer的話,重載customizeRegistration()方法來配置multipart的具體細節(jié)。

?
1
2
3
4
5
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
//限制上傳文件的大小不超過2MB,整個請求不超過4M,所有上傳的文件都要寫到磁盤中
registration.setMultipartConfig(new MultipartConfigElement("/tmp/uploads", 2097152, 4194304, 0));
}

2、配置multipart解析器。

?
1
2
3
4
5
//配置multipart解析器
@Bean
public MultipartResolver multipartResolver() throws IOException {
return new StandardServletMultipartResolver();
}

3、處理multipart請求。對于用戶上傳的文件等信息,可以用byte[]數(shù)組來表示,但更推薦Spring提供的MultipartFile接口。它提供了更多功能,比如獲取文件名、文件大小、文件類型等。

?
1
2
3
4
5
@RequestMapping(value = "/{username}", method = RequestMethod.POST)
public String showUserInfo(@RequestPart("icon") MultipartFile icon) throws IOException {
icon.transferTo(new File("/Users/pingping/Projects/IdeaProjects/spring/register/src/main/webapp/uploads/" + icon.getOriginalFilename()));
return "user";
}

transferTo(File dest)方法: 將文件寫入到系統(tǒng)中。

寫個頁面測試,看指定的文件目錄下文件是否已上傳成功。

?
1
2
3
4
5
<form method="post" enctype="multipart/form-data">
<label>上傳頭像圖片?</label>
<input type="file" name="icon" accept="image/jpeg, image/png" value="選擇文件"/>
<button type="submit">確定</button>
</form>

1、參考文獻:Spring實戰(zhàn)(第4版)。

2、github地址:https://github.com/everseeker0307/register。

以上所述是小編給大家介紹的Spring學習筆記2之表單數(shù)據(jù)驗證、文件上傳實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網(wǎng)站的支持!

原文鏈接:http://www.cnblogs.com/everSeeker/p/5680753.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本68xxxxxxxxx59 日本 视频 在线 | 91制片厂免费观看 | 青青草原国产视频 | 精品一区二区三区免费观看 | 1313午夜精品久久午夜片 | 日本一区二区三区在线 观看网站 | 精品国产91久久久久 | 免费片在线观看 | aaa黄色| 午夜亚洲WWW湿好爽 午夜想想爱午夜剧场 | 女子张腿让男人桶免费 | 毛片免费观看的视频 | 成人快插 | 欧美一区二区三 | 亚洲男人第一天堂 | 久久精品亚洲热综合一本 | 精品国产精品国产 | 亚洲精品老司机福利在线播放 | 国产草逼视频 | 四虎国产成人亚洲精品 | 国产91页| 91短视频在线免费观看 | 91欧美国产| 日产国产精品亚洲系列 | 日本一区二区三区在线 视频 | 精品一产品大全 | 国内精品久久久久影院网站 | 久久国产精品人妻中文 | 牧教师在线观看 | 亚洲国产综合另类视频 | 国产大神91一区二区三区 | 日日摸夜夜爽色婷婷91 | adc 我们的永久网址 | 爽好紧别夹宝贝叫大声点护士 | 欧美高清一级 | 黑人巨大和日本娇小中出 | 91人人在线| 波多野结衣之高校教师 | 午夜亚洲国产 | 美女国内精品自产拍在线播放 | 国产悠悠视频在线播放 |