最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring學(xué)習(xí)筆記2之表單數(shù)據(jù)驗(yàn)證、文件上傳實(shí)例代碼

 更新時(shí)間:2016年07月18日 14:22:21   作者:everSeeker  
這篇文章主要介紹了Spring學(xué)習(xí)筆記2之表單數(shù)據(jù)驗(yàn)證、文件上傳 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

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

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

用戶注冊(cè)時(shí),需要填寫賬號(hào)、密碼、郵箱以及手機(jī)號(hào),均為必填項(xiàng),并且需要符合一定的格式。比如賬號(hào)需要32位以內(nèi),郵箱必須符合郵箱格式,手機(jī)號(hào)必須為11位號(hào)碼等??梢圆捎迷谧?cè)時(shí)驗(yàn)證信息,或者專門寫一個(gè)工具類用來(lái)驗(yàn)證;來(lái)看下在SpringMVC中如何通過(guò)簡(jiǎn)單的注釋實(shí)現(xiàn)表單數(shù)據(jù)驗(yàn)證。

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

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

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

@Past: 所注解的元素的值必須是一個(gè)過(guò)去的時(shí)間。

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

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

另外,在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只是定義了校驗(yàn)API,必須添加API的實(shí)現(xiàn)才行,比如org.hibernate.validator,否則會(huì)報(bào)錯(cuò)。

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

public class User implements Serializable {
@Size(min = 32, max = 32, message = "uuid應(yīng)該為32位字符串")
private String id;
@Size(min = 1, max = 32, message = "賬號(hào)長(zhǎng)度應(yīng)該在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 = "手機(jī)號(hào)長(zhǎng)度為11位")
private String cellphone;
}

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

3、在UserController中應(yīng)用校驗(yàn)功能,添加@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對(duì)象應(yīng)用校驗(yàn)功能
if (errors.hasErrors()) { //如果表單驗(yàn)證失敗,返回注冊(cè)頁(yè)面
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文件,展示頁(yè)面,以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">
<%-- 如果表單數(shù)據(jù)驗(yàn)證失敗,顯示錯(cuò)誤信息 --%>
<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中,文件上傳很簡(jiǎn)單,只需要3步即可。

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

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

2、配置multipart解析器。

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

3、處理multipart請(qǐng)求。對(duì)于用戶上傳的文件等信息,可以用byte[]數(shù)組來(lái)表示,但更推薦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)方法: 將文件寫入到系統(tǒng)中。

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

<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、參考文獻(xiàn):Spring實(shí)戰(zhàn)(第4版)。

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

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

相關(guān)文章

  • springboot3.x中Jakarta包無(wú)法引入的問(wèn)題

    springboot3.x中Jakarta包無(wú)法引入的問(wèn)題

    最近想將一些項(xiàng)目升級(jí)到springboot3.x和java17的時(shí)候,發(fā)現(xiàn)項(xiàng)目依賴中有Jakarta的包,但是代碼標(biāo)紅提示沒(méi)有相關(guān)的類,本文就來(lái)介紹一下解決方法,感興趣的可以了解一下
    2024-02-02
  • Java客戶端利用Jedis操作redis緩存示例代碼

    Java客戶端利用Jedis操作redis緩存示例代碼

    Jedis是Redis官方推薦的用于訪問(wèn)Java客戶端,下面這篇文章主要給大家介紹了關(guān)于Java客戶端利用Jedis操作redis緩存的相關(guān)資料,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-07-07
  • 基于SpringBoot框架管理Excel和PDF文件類型

    基于SpringBoot框架管理Excel和PDF文件類型

    這篇文章主要介紹了基于SpringBoot框架,管理Excel和PDF文件類型,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Struts2 使用OGNL遍歷map方法詳解

    Struts2 使用OGNL遍歷map方法詳解

    這篇文章主要介紹了Struts2 使用OGNL遍歷map方法詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-09-09
  • Java this super代碼實(shí)例及使用方法總結(jié)

    Java this super代碼實(shí)例及使用方法總結(jié)

    這篇文章主要介紹了Java this super代碼實(shí)例及使用方法總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java中的ConcurrentLinkedQueue松散隊(duì)列解析

    Java中的ConcurrentLinkedQueue松散隊(duì)列解析

    這篇文章主要介紹了Java中的ConcurrentLinkedQueue松散隊(duì)列解析,鏈表是松散的,鏈表節(jié)點(diǎn)并不都是有效的,允許存在無(wú)效節(jié)點(diǎn)val=null,但是只有最后一個(gè)節(jié)點(diǎn)才能next=null,需要的朋友可以參考下
    2023-12-12
  • JAVA抽象類及接口使用方法解析

    JAVA抽象類及接口使用方法解析

    這篇文章主要介紹了JAVA抽象類及接口使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java使用代理進(jìn)行網(wǎng)絡(luò)連接方法示例

    Java使用代理進(jìn)行網(wǎng)絡(luò)連接方法示例

    這篇文章主要介紹了Java使用代理進(jìn)行網(wǎng)絡(luò)連接方法示例,內(nèi)容十分詳細(xì),需要的朋友可以參考下。
    2017-09-09
  • 5分鐘搞懂java注解@Annotation的具體使用

    5分鐘搞懂java注解@Annotation的具體使用

    這篇文章主要介紹了5分鐘搞懂java注解@Annotation的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • mybatis接口綁定失效的解決

    mybatis接口綁定失效的解決

    這篇文章主要介紹了mybatis接口綁定失效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評(píng)論

克什克腾旗| 马龙县| 同德县| 通海县| 拜城县| 龙州县| 双牌县| 理塘县| 盐源县| 金堂县| 永泰县| 巨野县| 洪泽县| 湖南省| 左云县| 屏东市| 哈巴河县| 洞头县| 德庆县| 宜昌市| 泰宁县| 寿光市| 丰镇市| 通州区| 宁夏| 富顺县| 汝阳县| 运城市| 行唐县| 富锦市| 堆龙德庆县| 纳雍县| 南安市| 崇礼县| 什邡市| 龙口市| 博乐市| 泸定县| 武强县| 澄迈县| 如皋市|