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 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
apache struts2 취약점 검증이번에는 보안 캠프의 과제였던 apache struts2의 취약성에 대해 실제로 손을 움직여 실행해 보고 싶습니다. 환경 VirtualBox에서 브리지 어댑터 사용 호스트:macOS 10.12 게스트:ubuntu 1...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.