Spring MVC 資料驗證——validate編碼方式
1、匯入jar包
- 其他的就是一些日誌包(不一定全不需要):jboss-logging-3.1.3.GA.jar、slf4j-log4j12-1.6.1.jar
2、web專案的結構圖
3、專案配置
- web.xml配置
Spring mvc專案的最小配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<display-name>SpringMVC</display-name>
<welcome-file-list>
<welcome-file>jsp/hello.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1 </load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
- hello-servlet.xml配置
通過自動載入
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan
base-package="controller">
</context:component-scan>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/" p:suffix=".jsp">
<!-- <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> -->
</bean>
<!--資料驗證 編碼方式的配置-->
<mvc:annotation-driven validator="accountValidator"/>
<bean id="accountValidator" class="dao.AccountValidator"></bean>
</beans>
4、src下新增原始碼
- controller包
RegisterController類主要有兩個方法,一個用於get,另一個用於post。其中資料驗證是放在registerIF()方法中的。驗證是通過前兩個引數,第一個引數是一個javabean儲存的是註冊使用者的資訊,第二個引數用於資料驗證提交過來的javabean物件。
package controller;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.DataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import dao.Account;
import dao.AccountValidator;
@Controller
@RequestMapping("/register")
public class RegisterController {
@RequestMapping(method=RequestMethod.GET)
public String register(Model model){
if (!model.containsAttribute("account")) {
model.addAttribute("account",new Account());
}
return "register";
}
@InitBinder
public void initBinder(DataBinder binder){
binder.setValidator(new AccountValidator());
}
@RequestMapping(method=RequestMethod.POST)
public String registerIF(@Valid @ModelAttribute("account")Account account,BindingResult result,Model model){
System.out.println("使用者名稱:"+account.getUsername());
if (result.hasErrors()) {
System.out.println("register faliure.");
model.addAttribute("message", "註冊失敗");
}else {
model.addAttribute("message", "註冊成功");
}
return "register";
}
}
- dao包
(1)、javabean類Account,用於儲存註冊使用者資訊
package dao;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
public class Account {
private String username;
private String password;
public Account() {
// TODO Auto-generated constructor stub
}
public Account(String username, String password) {
super();
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
(2)、 AccountValidator用於檢驗Account的輸入使用者資訊
這個就是編碼方式驗證資料的主要類,通過hello-servlet.xml中的自動載入方式,將類載入進去,引入點就是在@Valid註解處。
package dao;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;
public class AccountValidator implements Validator {
@Override
public boolean supports(Class<?> arg0) {
// TODO Auto-generated method stub
return Account.class.equals(arg0);
}
@Override
//主要通過這個方法,驗證資料
public void validate(Object obj, Errors erros) {
// TODO Auto-generated method stub
ValidationUtils.rejectIfEmpty(erros, "username", null,"使用者名稱不能為空.");
ValidationUtils.rejectIfEmpty(erros, "password", null,"密碼不能為空.");
Account account = (Account) obj;
if (account.getUsername().length()<3 || account.getUsername().length()>20) {
erros.rejectValue("username","length","使用者名稱長度在3-20個字串之間");
}
if (account.getPassword().length()<6 || account.getPassword().length()>20) {
erros.rejectValue("password","size","密碼長度在6-20個字元之間");
}
}
}
5、加入jsp
在WEB-INF中新建一個jsp目錄,然後新建一個register.jsp檔案,新增如下程式碼:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>註冊介面</title>
</head>
<body>
<form:form method="post" modelAttribute="account">
<label for="username">使用者名稱:</label>
<form:input type="text" path="username"/>
<form:errors path="username"/><br><br>
<label for="pwd">密碼:</label>
<form:input type="password" path="password"/>
<form:errors path="password"/>
<br><br>
<input type="submit" value="註冊" name="login"/>
</form:form>
<br><hr>
${message}
</body>
</html>
6、效果演示
相關推薦
Spring MVC 資料驗證——validate編碼方式
1、匯入jar包 其他的就是一些日誌包(不一定全不需要):jboss-logging-3.1.3.GA.jar、slf4j-log4j12-1.6.1.jar 2、web專案的結構圖 3、專案配置 web.xml配置 Spring m
Spring MVC 數據驗證——validate編碼方式
end 3.2 content springmvc div 信息 ng- stub 驗證 1、導入jar包 validation-api-1.0.0.GA.jar這是比較關鍵的一個jar包,[email protected]/* */ h
Spring MVC Hibernate驗證器
學生 taglib inpu pub ips int css 方法 顯示 下面的示例演示如何使用Spring Web MVC框架在表單中使用錯誤處理和驗證器。 首先使用Eclipse IDE,並按照以下步驟使用Spring Web Framework開發基於動態表單的Web
spring mvc引數驗證
描述: 在使用bean接收前臺傳過來的引數時,如果bean中有接收date行,那麼如果對該引數使用@NotBlank註解,會報如下異常: javax.validation.UnexpectedTypeException: HV000030: No validator could b
Spring MVC 資料繫結和表單標籤庫
資料繫結是將使用者輸入繫結到領域模型的一種特性。 資料繫結的好處: 1. 型別總是為 String 的 HTTP 請求引數,可用於填充不同型別的物件屬性。 2. 當輸入驗證失敗時,會重新生成一個 HTML 表單。 為了高效的使用資料繫結,還需要 Spring 的表單標籤庫。表單標籤庫中包含了可以用在
Spring MVC 資料繫結流程分析
1. 資料繫結流程原理★ ① Spring MVC 主框架將 ServletRequest 物件及目標方法的入參例項傳遞給 WebDataBinderFactory 例項,以建立 DataBinder 例項物件 ②
spring-MVC普通驗證&&分組驗證
普通驗證 1.所需jar包 2.spring配置檔案 3.html頁面 4.設定properties表單 5.配置java bean驗證 6.後臺驗證程式碼 7.頁面輸出錯誤驗證資訊 8.效果 分組
spring mvc返回json字串的方式
spring mvc返回json字串的方式 方案一:使用@ResponseBody 註解返回響應體 直接將返回值序列化json 優點:不需要自己再處理 步驟一:
Spring MVC 資料校驗
資料校驗是 Web 應用必須處理的內容,Spring MVC 提供了兩種方法來對使用者的輸入資料進行校驗,一種是 Spring 自帶的 Validation 校驗框架,另一種是利用 JRS-303 驗證框架進行驗證。 Hibernate-Validator 實
Spring MVC---資料繫結和表單標籤
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transi
Spring MVC Controller中解析GET方式的中文引數會亂碼的問題
問題描述 在工作上使用Spring老是碰到一個問題,使用Controller處理GET方式的請求引數時,服務端得到的結果會碰到亂碼,之前翻閱了很多與Java EE相關的很多亂碼處理資料,不管是加過濾器還是統一檔案編碼,都沒能正確解決,後來設計介面時,一直採用先Base64
Spring MVC:圖片驗證碼的生成與返回
效果 程式碼 模型 //分類圖片和儲存圖片數量和路徑 public class ImageGroup { private String name; //圖片組名稱 private int count;//圖片組
HttpClient資料傳輸的編碼方式
約定 1. HttpClient版本:HttpClient4.1 2. 服務端中介軟體:tomcat7 HttpGet請求的URI編碼設定 1. 問題及原因 使用HttpClient的HttpGet方法進行get請求時,如果請求的URI中含有中文引數,則請求的服務端容易出現亂
freemarker+spring mvc 的驗證
在springmvc+freemarker的驗證問題: @Component public class PositionValidator implements Validator { @Override public boolean supports(Class&l
Spring mvc資料轉換與格式化
Spring mvc資料繫結 spring mvc通過反射機制對目標方法的簽名進行分析,將請求訊息繫結到處理方法入參中。 資料繫結的核心部件是DataBinder。 spring mvc主框架將servletRequest物件及處理方法入參物件例項傳遞給DataBinde
spring mvc 資料繫結 400錯誤
情景:使用在方法中繫結資料的時候,開啟連結,出現400錯誤。 @RequestMapping(value = "editItemSubmit") public String editItemSubmit(int id, Items item) {
js獲取後臺Spring MVC資料
後臺Controller: @HtmlTitle(title = "Statistic") @RequestMapping("/statistic") public String statistic(Model model){ List&l
spring mvc中 shiro logout 配置方式
預設情況是跳轉到網站首頁,但現在需要後臺登陸登出後,跳轉到後臺登陸介面修改如下:1、在applicationContext-shiro.xml中增加LogoutFilter並配置登出跳轉url,可參考如下程式碼:<bean id="logoutFilter" cl
spring mvc 資料繫結問題 提交表單提示HTTP status 400, The request sent by the client was syntactically incorrect
我們在spring mvc 中controller方法中的引數,spring mvc會自動為我們進行資料繫結。 spring mvc 方法中不一定要全部都有 form表單提交的屬性, 也可以有 請求屬性中 沒有的引數(這時候只會把對應不上的引數設為null),
Spring mvc通過xml配置檔案方式實現簡單HelloWorld
實現Spring MVC有兩種不同的方式:基於XML配置檔案和基於註解。 這裡,我們使用XML檔案的方式來實現。 首先,我們需要在Eclipse或者是MyEclipse中新建一個web專案,並將Spr