SpringMVC 매개 변수 검사, 자바 빈 과 기본 형식의 검사 (전재) 포함
26191 단어 springmvc
1. spingmvc 는 Hibernate Validator 검사 프레임 워 크 를 도입 하고 주 소 를 참고 합 니 다.http://blog.csdn.net/menghuanzhiming/article/details/78059876
2. JavaBean 검사
1. javaben 의 실체 클래스 주석 검사:
package edu.hrbeu.platform.modeling.pojo;
import java.io.Serializable;
import javax.validation.constraints.Pattern;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
public class User implements Serializable{
private Integer userId;
@NotEmpty
@Pattern(regexp="^[A-Za-z\u4e00-\u9fa5]{2,10}$", message=" :2-10 ")
private String username;
@NotEmpty
@Pattern(regexp="^[A-Za-z\u4e00-\u9fa5]{2,10}$", message=" :2-10 ")
private String alias;
@NotEmpty
@Pattern(regexp="^(?=.*[a-z])(?=.*[A-Z])[a-zA-Z\\d]{6,18}$", message=" :6-18 , ")
private String password;
@NotEmpty
@Email
private String email;
@NotEmpty
@Pattern(regexp="^1[0-9]{10}$", message=" :11 ")
private String phone;
}
2. javaben 은 주해 검사 등 라벨 을 정의 한 후 Controller 에 결합 하여 @ Valid 와 BindingResult 를 사용 하면 매개 변수의 검 사 를 완성 할 수 있 습 니 다.예 를 들 어 registerUser 방법 에 @ Valid 라벨 만 추가 하면 검 사 를 완성 할 수 있 습 니 다.검사 가 통과 되 지 않 으 면 오류 정 보 는 BindingResult 대상 에 봉 인 됩 니 다. bindingResult 와 관련 된 방법 으로 자세 한 오류 정 보 를 얻 고 사용자 에 게 되 돌려 줄 수 있 습 니 다.Binding Result 를 추가 하지 않 으 면 이상 을 던 집 니 다.이 때 폼 클래스 나 사용자 등록 과 같은 요청 한 매개 변수 검 사 를 완료 할 수 있 습 니 다. bindingResult 정 보 를 가 져 온 후 직접 return 을 선택 할 수 있 습 니 다.만약 에 이런 검사 가 필요 한 곳 이 비교적 많 으 면 각각 단독으로 처리 하 는 것 이 비교적 번 거 로 우 므 로 op 을 통 해 통일 적 으로 처리 하여 돌아 갈 수 있 고 나중에 말씀 드 리 겠 습 니 다.검 증 된 탭 참조:http://blog.csdn.net/catoop/article/details/51278675 관련 글:http://412887952-qq-com.iteye.com/blog/2312356
/**
*
* @Title: RegisterUser
* @Description: TODO( )
* @return Map
* @return
*/
@RequestMapping("registerUser")
@ResponseBody
@Operationlog(desc=" ")
public Map registerUser(
@Valid
User user,
BindingResult bindingResult
) {
while(bindingResult.hasErrors()) {
System.out.println(" ");
return null;
}
return null;
}
2. 기본 유형 검사
많은 장면 에서 우 리 는 자바 빈 을 검사 할 필요 가 없고 하나의 int, String 등 을 검사 할 필요 가 없습니다.그러나 직접 쓰 면 소 용이 없습니다. 검증 프레임 워 크 는 검증 되 지 않 았 습 니 다. 우리 가 해 야 할 일 은 바로 그것 을 효력 을 발생 시 키 는 것 입 니 다.다음 참조:https://diamondfsd.com/article/78fa12cd-b530-4a90-b438-13d5a0c4e26c 여기 링크 내용 써 주세요.
1. controller 층 에 주석 검사 추가: controller 층 방법 코드 는 다음 과 같 습 니 다. javabean 의 검사 도 있 고 간단 한 매개 변수 검사 도 있 습 니 다.
/**
*
* @Title: RegisterUser
* @Description: TODO( )
* @return Map
* @param user
* @param confirmPassword
* @param vercode
* @param request
* @return
*/
@RequestMapping("registerUser")
@ResponseBody
@Operationlog(desc=" ")
public Map registerUser(
@Valid
User user,
BindingResult bindingResult,
@NotEmpty
String confirmPassword,
@NotEmpty
String vercode) {
return null;
}
2. aop 를 설정 하여 javabean 의 검사 정보 BindingResult 를 통일 적 으로 관리 하고 간단 한 매개 변수 에 대한 설명 검사 가 적 용 됩 니 다. (1) springmvc 의 contrller 설정 aop 주의사항: 연결 참조:http://blog.csdn.net/menghuanzhiming/article/details/78780612 op 을 사용 할 수 없다 면 jar 패키지 가 충돌 하 는 지 확인 하 십시오.
(2) 프로필: spring - aspect. xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
<aop:aspectj-autoproxy proxy-target-class="true"/>
<bean id="requestParamValidAspect" class="edu.hrbeu.platform.modeling.common.aspect.RequestParamValidAspect"/>
beans>
springmvc 프로필 에 spring - aspect. xml 파일 도입:
"1.0" encoding="UTF-8"?>
"http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
...
...
"spring-aspect.xml"/>
절단면 클래스 RequestParamValidAspect:
package edu.hrbeu.platform.modeling.common.aspect;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.ElementKind;
import javax.validation.Validation;
import javax.validation.ValidatorFactory;
import javax.validation.executable.ExecutableValidator;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.hibernate.validator.internal.engine.path.NodeImpl;
import org.hibernate.validator.internal.engine.path.PathImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
import org.springframework.core.ParameterNameDiscoverer;
import org.springframework.validation.BeanPropertyBindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.ObjectError;
import edu.hrbeu.platform.modeling.exception.ParamValidException;
import edu.hrbeu.platform.modeling.pojo.SimpleFiledError;
/**
*
* @ClassName: RequestParamValidAspect
* @Description: TODO(controller aspectj)
* @author chenliming
* @date 2017 12 12 10:27:36
*
*/
@Aspect
public class RequestParamValidAspect {
private final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
private final ExecutableValidator validator = factory.getValidator().forExecutables();
Logger log = LoggerFactory.getLogger(getClass());
@Pointcut("execution(public java.util.Map edu.hrbeu.platform.modeling.*.controller.*.*(..))")
public void controllerAround() {
}
ParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer();
/**
*
* @Title: around
* @Description: TODO( , controller )
* @return Object
* @param pjp
* @return
* @throws Throwable
*/
@Around("controllerAround()")
public Object around(ProceedingJoinPoint pjp) throws Throwable {
System.out.println("aspect start.....");
try {
// , ,
Object[] args = pjp.getArgs();
if (args.length == 0) {
return pjp.proceed();
}
List simpleFiledErrors = new ArrayList<>();
/************************** javabean **********************/
// BindingResult , error,
for (Object arg : args) {
if (arg instanceof BeanPropertyBindingResult) {
//
BeanPropertyBindingResult result = (BeanPropertyBindingResult) arg;
if (result.hasErrors()) {
List list = result.getAllErrors();
for (ObjectError error : list) {
// System.out.println(
// error.getCode() + "---" + error.getArguments() + "--" + error.getDefaultMessage());
String name = null;
if(error instanceof FieldError) {
//
name = ((FieldError)error).getField();
} else {
//
name = error.getObjectName();
}
SimpleFiledError simpleFiledError = new SimpleFiledError();
simpleFiledError.setName(name);
simpleFiledError.setMessage(error.getDefaultMessage());
simpleFiledErrors.add(simpleFiledError);
}
}
}
}
/************************** *************************/
//
Object target = pjp.getThis();
//
Method method = ((MethodSignature) pjp.getSignature()).getMethod();
// ,
Set> validResult = validMethodParams(target, method, args);
//
if (!validResult.isEmpty()) {
String[] parameterNames = parameterNameDiscoverer.getParameterNames(method); //
for (ConstraintViolation
절단면 류 의 서 라운드 강 화 는 검사 오 류 를 모 아 되 돌려 줍 니 다.
파라미터 이상 처리 클래스 ParamValidException:
package edu.hrbeu.platform.modeling.exception;
import java.util.List;
import edu.hrbeu.platform.modeling.pojo.SimpleFiledError;
public class ParamValidException extends Exception{
private static final long serialVersionUID = 1L;
private List fieldErrors;
public ParamValidException(List fieldErrors) {
this.fieldErrors = fieldErrors;
}
}
사용자 정의 오류 실체 클래스 Simple Filed 오류 검사:
package edu.hrbeu.platform.modeling.pojo;
public class SimpleFiledError {
private String name;
private String message;
public SimpleFiledError() {
super();
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
springmvc application/octet-stream problemmistake: Source code: Solution: Summarize: application/octet-stream is the original binary stream method. If the convers...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.