【代碼總結】Spring MVC數據校驗


1.實驗介紹

-----------------------------------------------------------------------------------------------------------------------------

1.1實驗環境

  • Tomcat 7.0.72
  • JDK 1.8
  • IntelliJ IDEA 2017.2
  • Firefox

1.2實驗知識點

  • Spring MVC執行流程
  • 注解
  • 參數綁定
  • 數據綁定
  • Hibernate-Validator

-----------------------------------------------------------------------------------------------------------------------------

2.實驗介紹

2.1Spring MVC執行流程

1、DispatcherServlet

前端控制器,所有的請求都經過它統一分發,請求會被分給對應的Handler

2、HandlerMapping(處理器映射器)

解析請求鏈接,然后根據請求連接找到執行這個請求的類

3、HandlerAddapter(處理器適配器)

調用具體的方法對用戶發來的請求來進行處理

4、Controller

Controller 將處理用戶請求,Controller 處理完用戶請求,則返回 ModelAndView 對象給 DispatcherServlet 前端控制器。

從宏觀角度考慮,DispatcherServlet 是整個 Web 應用的控制器;從微觀考慮,Controller 是單個 Http 請求處理過程中的控制器。

5、ViewResolver(視圖解析器)

解析 ModelMdoelAndView 中的邏輯視圖名變為一個真正的 View 對象,並將 MdoelAndView 中的 Model 取出

2.2常用注解@Controller

在Spring MVC中,控制器Controoller負責處理有DispatcherServlet分發的請求,它把用戶請求的數據經過業務處理層處理之后封裝成Model,再把Model返回給對應的View進行展示

2.3常用注解@RequestMapping

@RequestMapping注解用來處理請求地址映射,指示Spring用哪個類或方法處理請求

常見屬性:

value:指定請求的實際地址,即value屬性將URL映射到方法上

@RequestMapping(value="/register")
@RequestMapping("/register")

method:指定請求的method類型,即該方法可以處理的HTTP請求方式,如GET,POST

@RequestMapping("/register",method=RequestMethod.POST)

consumes:指定處理請求的提交內容類型(Content-Type),如aoolication/json

@RequestMapping("/register",method=RequestMethod.POST,consumes="application/json")

produces:指定返回的內容類型,僅當request求情頭的(Accept)類型中包含指定類型才返回

@RequestMapping("/register",method=RequestMethod.POST,produces="application/json")

params:指定request中必須包含的參數值

@RequestMapping("/register",method=RequestMethod.POST,params="myParam=Value")

header:指定request中必須包含指定的header值

@RequestMapping("/register",method=RequestMethod.POST,headers="Referer=http://www.shiyanlou.com")

2.4常用校檢注解

這里給出 Hibernate-Validator 主要的校驗注解說明:

-----------------------------------------------------------------------------------------------------------------------------

3.實驗過程

3.1新建項目工程

在WEB-INF下創建lib文件夾,將jar包下載到lib文件夾內,單擊右鍵 Add as Libiary,這里 hibernate-validator最新版的包缺少關聯的jar包,會報錯

3.2配置web.xml文件

3.4SpringMVC-servlet.xml文件

在web/WEB-INF/目錄下新建Spring MVC配置文件

3.5創建實體類

在項目目錄src的包com.SpringMVC.Entity下新建類User.java,包含username,password,age和email屬性,在 User 類要校驗的屬性前添加必要的 Hibernate Validator 注解對前台提交的數據進行驗證,代碼如下:

 1 package com.SpringMVC.Entity;
 2 
 3 
 4 import org.hibernate.validator.constraints.Email;
 5 import org.hibernate.validator.constraints.Length;
 6 import org.hibernate.validator.constraints.NotBlank;
 7 import org.hibernate.validator.constraints.Range;
 8 
 9 public class User {
10     @NotBlank(message = "Username can not be empty")
11     private String username;
12     @Length(min = 6, max = 16, message = "The length of the password must be between 6 and 16 bits")
13     private String password;
14     @Range(min = 18, max = 60, message = "Age must be between 18 and 60 years old")
15     private Integer age;
16     @Email(message = "Please enter a valid email address")
17     private String email;
18 
19 
20 
21     public User(){}
22     public User(String username, String password, int age, String email) {
23         this.username = username;
24         this.password = password;
25         this.age = age;
26         this.email = email;
27     }
28 
29     public String getUsername() {
30         return username;
31     }
32 
33     public void setUsername(String username) {
34         this.username = username;
35     }
36 
37     public String getPassword() {
38         return password;
39     }
40 
41     public void setPassword(String password) {
42         this.password = password;
43     }
44 
45     public int getAge() {
46         return age;
47     }
48 
49     public void setAge(int age) {
50         this.age = age;
51     }
52 
53     public String getEmail() {
54         return email;
55     }
56 
57     public void setEmail(String email) {
58         this.email = email;
59     }
60 }

 

 3.6Controller類的實現

在項目目錄src的包com.SpringMVC.Controller下新建類UserController.java,代碼如下:

package com.SpringMVC.Controller;

import com.SpringMVC.Entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.validation.Valid;

@Controller
public class UserController {

    // 進入注冊頁面
    @RequestMapping(value = "/register_form")
    public String register_form(Model model) {
        model.addAttribute("user", new User());
        return "register";
    }

    // 注冊請求的響應方法
    @RequestMapping(value = "/register")
    public String register(@Valid @ModelAttribute("user") User user, Errors errors, Model model) {
        if(errors.hasErrors()){
            return "/register";
        }else {
            model.addAttribute("user", user);
            return "success";
        }
    }
}

其中 @Valid @ModelAttribute("user") User user 的 @Valid 意思是在把數據綁定到 @ModelAttribute("user") 后就進行驗證。后面跟着 Errors 對象保存校驗信息,如果 errors 中有錯誤信息,則返回 register 頁面,驗證成功則跳轉到 success 頁面

 3.7JSP頁面

1、register.jsp

在WEB-INF文件夾下新建page文件夾,和SpringMVC指定的文件目錄相同,並在文件夾下創建register.jsp,添加 <form:errors> 標簽顯示屬性的錯誤信息

 1 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
 2 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 3 <html>
 4 <head>
 5     <title>Register</title>
 6 </head>
 7 <body>
 8 
 9 <div id="global">
10     <form:form modelAttribute="user" method="post" action="register">
11         <fieldset>
12             <legend>register</legend>
13             <p>
14                 <label>name:</label>
15                 <form:input path="username" />
16                 <form:errors path="username" cssStyle="color:red"/>
17             </p>
18             <p>
19                 <label>password:</label>
20                 <form:password path="password" />
21                 <form:errors path="password" cssStyle="color:red"/>
22             </p>
23             <p>
24                 <label>age:</label>
25                 <form:input path="age" />
26                 <form:errors path="age" cssStyle="color:red"/>
27             </p>
28             <p>
29                 <label>email:</label>
30                 <form:input path="email" />
31                 <form:errors path="email" cssStyle="color:red"/>
32             </p>
33             <p id="buttons">
34                 <input id="submit" type="submit" value="register"> <input
35                     id="reset" type="reset" value="reset">
36             </p>
37         </fieldset>
38     </form:form>
39 </div>
40 </body>
41 </html>

form 表單中的 modelAttribute="user" 綁定了一個 JavaBean 對象。

2、success.jsp

在WEB-INF/page文件夾下創建success.jsp

 

 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 2 <html>
 3 <head>
 4     <title>success</title>
 5 </head>
 6 <body>
 7 <h5>Registration success, personal information:</h5>
 8 name:${user.username}<br />
 9 password:${user.password}<br />
10 age:${user.age}<br />
11 email:${user.email}<br />
12 
13 </body>
14 </html>

 

4.實驗測試

-----------------------------------------------------------------------------------------------------------------------------

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM