Struts 2 의 입력 검사 인 스 턴 스 코드
클 라 이언 트 검사:주로 jsp 를 통 해 js 스 크 립 트 를 작성 하 는데 그 장점 이 뚜렷 합 니 다.바로 잘못 입력 하면 알림 이 신속 하고 서버 의 부담 을 줄 일 수 있 습 니 다.그러나 클 라 이언 트 검 사 는 안전 하지 않 습 니 다.쉽게 말 하면 군 자 를 막 고 소인 을 막 을 수 없습니다.
서버 측 검사:가장 큰 특징 은 데이터 안전 이지 만 서버 측 검사 만 있 으 면 서버 측의 부담 을 크게 증가 시 킬 수 있 습 니 다.
그래서 일반적으로 우리 개발 에서 클 라 이언 트 와 서버 측 검사 가 결합 하 는 역할 을 합 니 다.
이 글 은 서버 에서 만 검사 할 수 있 습 니 다.Struts 2 에서 두 가지 검사 방식 을 지원 합 니 다.
코드 검사:서버 에서 자바 코드 편집 을 통 해 데이터 검 사 를 완료 합 니 다.
설정 검사:xml 설정 검 사 는 xml 프로필 을 통 해 데이터 검 사 를 완료 합 니 다.
(1)코드 검사:
코드 검 사 는 세 단계 로 나 뉜 다.
단계 1.패키지 데이터
단계 2.검증 할 Action 실현 Action Support 를 계승 해 야 합 니 다.
단계 3.덮어 쓰기 Validate 방법 그리고 비 즈 니스 논리 데이터 검증 완료
사용자 인터페이스 register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title> </title>
</head>
<body style="text-align: center;">
<table align="center" width="50%">
<tr>
<td style="color: red">
<!-- <s:fielderror></s:fielderror> --> <!-- -->
</td>
</tr>
</table>
<form action="${pageContext.request.contextPath }/login" method="post" >
:<input type="text" name="username"><br><br>
:<input type="text" name="password"><br><br>
:<input type="text" name="password2"><br><br>
<input type="reset" value=" ">
<input type="submit" value=" ">
</form>
</body>
</html>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- -->
<constant name="struts.devMode" value="true"></constant>
<package name="struts2" extends="struts-default" >
<action name="login" class="com.study.Login.RegisterAction">
<result name="success">/success.jsp</result>
<!-- input <s:fielderror/> -->
<result name="input">/register.jsp</result>
</action>
</package>
</struts>
RegisterAction.java
import com.opensymphony.xwork2.ActionSupport;
public class RegisterAction extends ActionSupport{
private String username;
private String password;
private String password2;
// set
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
public void setPassword2(String password2) {
this.password2 = password2;
}
@Override
public String execute() throws Exception {
return NONE;
}
//
@Override
public void validate() {
// ,
System.out.println(username+"---"+password+"---"+password2);
if(username==null || username.length()<6 || username.length()>20){
//
this.addFieldError("username", " ");
}
if(password==null || password.length()<6 || password.length()>20){
//
this.addFieldError("password", " ");
}else if( password2==null || password2.length()<6 || password2.length()>20){
this.addFieldError("password2", " ");
}else if(!password.equals(password2)){
this.addFieldError("password2", " ");
}
super.validate();
}
}
실행 결과:(2)프레임 검사
프레임 워 크 검증 은 XML 설정 방식 을 통 해 데이터 검증 을 하 는 것 이 고 이것 도 우리 가 기업 에서 개발 한 주류 검증 이다.
XML 검사 원리:많은 규칙 코드 를 xml 파일 에서 사용 할 검사 규칙 만 정의 하면 됩 니 다.그래서 우리 의 개발 시간 을 크게 줄 였 다.
나 는 먼저 절 차 를 한 번 썼 다.
STEP 1:JSP 작성
STEP 2:Action 계승 Action Support 또는 Validateable 인터페이스 작성
STEP 3:패 키 징 요청 파라미터
단계 4:xml 검사 규칙 파일 작성
Xml 검사 파일 의 이름 규칙: Action 클래스 이름-vaidation.xml 액 션 의 모든 방법 을 검증 합 니 다.
예 를 들 어 명명 규칙 RegisterAction-validation.xml
동시에 만족 시 켜 야 합 니 다:Xml 검사 파일 과 Action 클래스 는 같은 가방 에 있어 야 합 니 다.
STEP 1:register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title> </title>
</head>
<body style="text-align: center;">
<table align="center" width="50%">
<tr>
<td style="color: red">
<s:fielderror></s:fielderror>
</td>
</tr>
</table>
<form action="${pageContext.request.contextPath }/login.action" method="post" >
<table width="60%" >
<tr>
<td> </td>
<td>
<input type="text" name="username" >
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="password" name="password" >
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="password" name="password2" >
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="text" name="age" >
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="text" name="email" >
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="text" name="birthday" >
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="text" name="graduation" >
</td>
</tr>
<tr>
<td>
<input type="reset" value=" ">
</td>
<td>
<input type="submit" value=" ">
</td>
</tr>
</table>
</form>
</body>
</html>
STEP 2:RegisterAction.java
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class RegisterAction extends ActionSupport implements ModelDriven<User>{
//
private User user =new User();
@Override
public String execute() throws Exception {
return NONE;
}
public User getModel() {
return user;
}
}
STEP 3:패 키 징 요청 파라미터위 에서 수 동 으로 검사 한 사례 는 set 방법 으로 데 이 터 를 봉 인 했 습 니 다.그러면 여기 서 저 는 Model Driven 인 터 페 이 스 를 사용 하여 요청 데 이 터 를 봉 인 했 습 니 다.
전에 제 가 데 이 터 를 봉인 하 는 세 가지 방법 을 말씀 드 렸 는데 잘 모 르 겠 으 면 이 글 을 보 세 요.Struts 프레임 워 크(6)-action 수신 요청 파라미터
User.java
import java.util.Date;
public class User {
private String username;
private String password;
private String password2;
private Integer age;
private String email;
private Date birthday;
private Date graduation;
/*
* get set
*/
}
STEP 4:RegisterAction-validation.xml
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<!--dtd xwork-core-**.jar -->
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message> </message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">15</param>
<message> ${minLength} ${maxLength} </message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message> </message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">15</param>
<message> ${minLength} ${maxLength} </message>
</field-validator>
</field>
<field name="password2">
<field-validator type="fieldexpression">
<param name="expression"><![CDATA[password==password2]]></param>
<message> </message>
</field-validator>
</field>
<field name="age">
<field-validator type="required">
<param name="trim">true</param>
<message> </message>
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message> ${min} ${max} </message>
</field-validator>
</field>
<field name="email">
<field-validator type="email">
<message> </message>
</field-validator>
</field>
<field name="birthday">
<field-validator type="date">
<param name="min">2001-01-01</param>
<param name="max">2003-12-31</param>
<message> ${min} ${max} </message>
</field-validator>
</field>
</validators>
struts.xml 은 변경 이 필요 없습니다.이전 과 같 으 면 됩 니 다.실행 결과:
잘못된 위 치 를 제시 하 는 것 이 추 하 다 고 생각한다 면 Struts 2 의
현재 두 가지 방식 을 모두 말 했 습 니 다.지금 은 xml 설정 의 요점 에 대해 지식 요점 을 요약 합 니 다.
xml 검사 파일 상세 설명:
위 에서 지정 한 검사 기 requiredstring 은 시스템 에서 제공 되 며 시스템 은 대부분의 검증 수 요 를 만족 시 킬 수 있 습 니 다.
이 검사 기의 정 의 는 xwork-2.x.jar 에 있 습 니 다.
com.opensymphony.xwork 2.vaidator.vaidators 의 default.xml 에서 찾 을 수 있 습 니 다.
:하위 요 소 는 검증 프로그램 에 파 라 메 터 를 전달 할 수 있 습 니 다.
키 속성 을 지정 합 니 다.키 의 값 은 속성 파일 의 키 입 니 다.
struts 2 검사 규칙:
시스템 에서 제공 하 는 검사 기 는 다음 과 같 습 니 다.
required(필수 검사 기,검 증 된 속성 값 은 null 일 수 없습니다)
requiredstring(필수 문자열 검사 기,검 증 된 속성 값 은 null 일 수 없 으 며 길이 가 0 이상 이 어야 합 니 다.기본 값 은 문자열 의 앞 뒤 공백 을 제거 합 니 다)
stringlength(문자열 길이 검사 기,검 증 된 속성 값 은 지정 한 범위 내 에 있어 야 합 니 다.그렇지 않 으 면 검사 에 실 패 했 습 니 다.minLength 매개 변 수 는 최소 길 이 를 지정 하고 maxLength 매개 변 수 는 최대 길 이 를 지정 합 니 다.trim 매개 변 수 는 검사 field 를 지정 하기 전에 문자열 전후의 빈 칸 을 제거 할 지 여부)
regex(정규 표현 식 검사 기,검 증 된 속성 값 이 정규 표현 식 과 일치 하 는 지 확인 합 니 다.expression 매개 변 수 는 정규 표현 식 을 지정 합 니 다.CaeSensive 매개 변 수 는 정규 표현 식 과 일치 할 때 대소 문 자 를 구분 할 지,기본 값 은 true 입 니 다)
int(정수 검사 기,field 의 전체 수 치 는 지정 한 범위 내 에서 min 은 최소 값 을 지정 하고 max 는 최대 값 을 지정 해 야 합 니 다)
double(2 정밀도 부동 소수점 검사 기,field 의 2 정밀도 부동 소수점 은 반드시 지정 범위 내 에서 min 은 최소 값 을 지정 하고 max 는 최대 값 을 지정 해 야 합 니 다)
fieldexpression(필드 OGNL 표현 식 검사 기,field 가 ognl 표현 식 을 만족 시 키 도록 요구 합 니 다.expression 매개 변 수 는 ognl 표현 식 을 지정 합 니 다.이 논리 표현 식 은 ValueStack 을 기반 으로 값 을 구 합 니 다.true 로 돌아 갈 때 검 사 를 통과 합 니 다.그렇지 않 으 면 통과 하지 않 습 니 다)
email(메 일 주소 검사 기,검 증 된 속성 값 이 비어 있 지 않 으 면 합 법 적 인 메 일 주소 여야 합 니 다)
url(인터넷 주소 검사 기,검 증 된 속성 값 이 비어 있 지 않 으 면 합 법 적 인 url 주소 여야 합 니 다)
date(날짜 검사 기,field 의 날짜 값 은 지정 한 범위 내 에서 min 은 최소 값 을 지정 하고 max 는 최대 값 을 지정 해 야 합 니 다)
conversion(검사 기 변환,형식 변환 에 실 패 했 을 때 알려 주 는 오류 정보 지정)
visitor(action 의 복합 형식의 속성 을 검사 하 는 데 사 용 됩 니 다.복합 형식 속성 을 검사 하 는 데 사용 할 검사 파일 을 지정 합 니 다)
expression(OGNL 표현 식 검사 기,비 필드 검사 기 입 니 다.expression 매개 변 수 는 ognl 표현 식 을 지정 합 니 다.이 논리 표현 식 은 ValueStack 을 기반 으로 값 을 구 합 니 다.true 로 돌아 갈 때 검 사 를 통과 합 니 다.그렇지 않 으 면 통과 하지 않 습 니 다.이 검사 기 는 필드 검사 기 스타일 의 설정 에 사용 할 수 없습니다)
마지막 으로 세부 사항 을 말씀 드 리 겠 습 니 다.
검사 파일 을 작성 할 때 도움말 정보 가 나 올 수 없습니다.
ActionClassName-vaidation.xml 검사 파일 을 작성 할 때 도움말 정보 가 나타 나 지 않 으 면 다음 방법 으로 해결 할 수 있 습 니 다.
windwos->preferences->myeclipse->files and editors->xml->xmlcatalog
"add"를 누 르 고 나타 나 는 창 에 있 는 location 에서"File system"을 선택 한 다음 xwork-2.1.2 디 렉 터 리 의 src\자바 디 렉 터 리 에서 xwork-vaidator-1.0.3.dtd 를 선택 하 십시오.
설정 창 으로 돌아 갈 때 창 을 급 하 게 닫 지 말고 창 에 있 는 Key Type 을 URI 로 바 꿔 야 합 니 다.Key 변경http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd
위 에서 말 한 것 은 소 편 이 소개 한 Struts 2 의 입력 검사 인 스 턴 스 코드 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
한 편의 문장으로 Struts2의 유형 전환을 해결하다우리는 HTTP를 통해 백그라운드에 제출된 데이터가 모두 문자열의 형식이라는 것을 알고 있으며, 우리가 필요로 하는 데이터 형식은 당연히 문자열 형식 하나만 있는 것이 아니다.그래서 우리는 유형 전환이 필요하다!다음...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.