程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Spring進修筆記2之表雙數據驗證、文件上傳實例代碼

Spring進修筆記2之表雙數據驗證、文件上傳實例代碼

編輯:關於JAVA

Spring進修筆記2之表雙數據驗證、文件上傳實例代碼。本站提示廣大學習愛好者:(Spring進修筆記2之表雙數據驗證、文件上傳實例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是Spring進修筆記2之表雙數據驗證、文件上傳實例代碼正文


在上篇文章給年夜家引見了Spring進修筆記1之IOC詳解盡可能應用注解和java代碼,接上去本文重點給年夜家引見Spring進修筆記2之表雙數據驗證、文件上傳實例代碼,詳細內容,請參考本文吧!

1、表雙數據驗證

用戶注冊時,須要填寫賬號、暗碼、郵箱和手機號,均為必填項,而且須要相符必定的格局。好比賬號須要32位之內,郵箱必需相符郵箱格局,手機號必需為11位號碼等。可以采取在注冊時驗證信息,或許專門寫一個對象類用來驗證;來看下在SpringMVC中若何經由過程簡略的正文完成表雙數據驗證。

在javax.validation.constraints包上面,界說了多個注解。好比:

@NotNull: 所注解元素的值必需不克不及為null。注:表單中不填寫任何數據直接提交,其實不意味著為null,而是空字符串。

@Size: 所注解的元素必需為String、聚集或許數組,而且長度要相符給定的規模。

@Past: 所注解的元素的值必需是一個曩昔的時光。

@Digits: 所注解的元素必需是數字,而且它的值必需有指定的位數。

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

別的,在org.hibernate.validator.constraints包上面,界說了更多的注解。好比:

@Email: 婚配email格局。

@URL: 婚配url格局。

上面看一下在SpringMVC中若何應用。

1、起首在pom.xml文件中載入須要的

<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的完成才行,好比org.hibernate.validator,不然會報錯。

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

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: 假如表雙數據驗證掉敗,可以顯示的毛病信息。

3、在UserController中運用校驗功效,添加@Valid注解便可。

以UserController.java為例:

@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為例:

<%@ 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">
<%-- 假如表雙數據驗證掉敗,顯示毛病信息 --%>
<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>

終究後果以下:

2、文件上傳

在Spring中,文件上傳很簡略,只須要3步便可。

1、假如我們設置裝備擺設的DispartcherServlet繼續了AbstractAnnotationConfigDispatcherServletInitializer的話,重載customizeRegistration()辦法來設置裝備擺設multipart的詳細細節。

@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
//限制上傳文件的年夜小不跨越2MB,全部要求不跨越4M,一切上傳的文件都要寫到磁盤中
registration.setMultipartConfig(new MultipartConfigElement("/tmp/uploads", 2097152, 4194304, 0));
}

2、設置裝備擺設multipart解析器。

//設置裝備擺設multipart解析器
@Bean
public MultipartResolver multipartResolver() throws IOException {
return new StandardServletMultipartResolver();
}

3、處置multipart要求。關於用戶上傳的文件等信息,可以用byte[]數組來表現,但更推舉Spring供給的MultipartFile接口。它供給了更多功效,好比獲得文件名、文件年夜小、文件類型等。

@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)辦法: 將文件寫入到體系中。

寫個頁面測試,看指定的文件目次下文件能否已上傳勝利。

<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實戰(第4版)。

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

以上所述是小編給年夜家引見的Spring進修筆記2之表雙數據驗證、文件上傳實例代碼,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved