JSP 배경 검증

16653 단어 jsp
지난 편 에 서 는 JSP 프론트 검증 의 흔 한 방법 을 요약 하 였 으 며, 이 편 에 서 는 백 스테이지 검증 방법 을 설명 하 였 다.저 는 배경 검증 을 크게 두 가지 로 나 누 었 습 니 다. 하 나 는 비 Ajax 방식 이 고 하 나 는 Ajax 방식 입 니 다.
1. 비 아 약 스 방식
1) 사용 방법: 정상적으로 양식 을 제출 하고 Action 층 어 딘 가 에서 폼 의 내용 이 정확 한 지 판단 한다.배경 에 Struts 2 프레임 워 크 를 사용 했다 면 이 '판단' 은 * * Action 류 의 어떤 방법 에서 execute 류 의 방법 일 수도 있 고 vaidate 류 의 방법 일 수도 있 습 니 다.vaidate 류 의 방법 에 넣 으 면 논리 가 더욱 뚜렷 해 질 수 있 습 니 다. 왜냐하면 대량의 if - else 나 try - catch 코드 세그먼트 가 비교적 복잡 하기 때 문 입 니 다.
    특히 주의해 야 할 것 은 검증 에 실 패 했 습 니 다. Struts 2 는 기본적으로 < result name = "input" > < / result > 가 지정 한 물리 보 기 를 되 돌려 줍 니 다.만약 직접 jsp 페이지 라면, 기본적으로 아무런 문제 가 없다.다른 action 이 라면 정 보 를 잃 어 버 리 지 않도록 일반 type 은 chain 이 어야 합 니 다.현재 의 처 지 를 간단하게 묘사 하 다.

  
    
1 < action name ="action1" class ="FooAction" method ="foo" >
2 < result name ="success" > *** </ result >
3 < result name ="input" type ="chain" >action2 </ result >
4   </ action >
5   < action name ="action2" class ="BarAction" method ="bar" >
6 < result > *** </ result >
7   </ action >

action 1 로 넘 어 갈 때 FooAction. foo () 방법 을 실행 하기 전에 인증 이 통과 되 지 않 으 면 프로그램 은 input 이 지정 한 물리 보기 action 2 로 넘 어 갑 니 다.그러나 input 라 는 result 의 유형 은 chain 이기 때문에 검증 이 통과 되 지 않 은 정 보 를 포함 하여 모든 정 보 를 보류 합 니 다.이렇게 되면 BarAction. bar () 방법 에 들 어가 기 전에 또 BarAction 의 차단기 에 의 해 차단 되 고 검증 이 통과 되 지 않 아 input 이라는 result 가 필요 합 니 다.따라서 action 2 도 input 를 추가 해 야 합 니 다.이것 은 아무것도 아 닙 니 다. 정말 어 려 운 것 은 BarAction. bar () 에 들 어 갈 기회 가 없 으 면 < result name = "input" > 물리 보기 < / result > 의 물리 보기 가 bar () 방법 으로 데 이 터 를 얻 으 려 면 어떻게 해 야 합 니까?해결 방법 도 있 습 니 다. action 설정 을 추가 할 수 있 습 니 다.

  
    
< action name ="action3" class ="BarAction" method ="input" >
< result > *** </ result >
</ action >

이 새로 추 가 된 action, 가장 중요 한 것 은 method 이름 이 input 여야 한 다 는 것 입 니 다.이때 action 1 의 input 소 chain 의 action 은 action 2 가 아니 라 action 3 이다.그럼 BarAction. input () 방법 은 bar () 를 간단하게 호출 하면 됩 니 다.왜 이렇게 하면 문 제 를 해결 할 수 있 는 지 에 대해 서 나 는 따로 글 을 써 서 간단하게 말 할 것 이다.여러 방법 이 하나의 input 와 대응 해 야 한다 면 action 3 에 하나의 인 자 를 추가 하거나 모든 동작 에 하나의 Action 류 를 쓸 수 있 습 니 다 (대상 마다 하나의 Action 류 에 대응 하 는 것 이 아 닙 니 다).나 는 action 3 에 인 자 를 추가 하 는 방법 을 시도 해 본 적 이 없다. 단지 그것 이 문 제 를 해결 할 수 있 을 것 이 라 고 느 꼈 을 뿐이다.
2) 오류 정보 표시: 인증 에 실패 하면 Action Support. addFieldError () 방법 으로 프론트 데스크 에 정 보 를 전달 할 수 있 습 니 다.addFieldError () 첫 번 째 매개 변 수 는 오류 정 보 를 어느 폼 요소 위 에 표시 할 지 지정 하고 두 번 째 매개 변 수 는 오류 정 보 를 지정 합 니 다.물론 검 증 된 페이지 에 < s: fielderror > < s: param > 한 폼 의 name 속성의 값 < / s: param > < s: filederror > 가 있 으 면 그 폼 위 에 표시 되 지 않 고 정 보 를 표시 합 니 다.
3) 장단 점: 전체 페이지 를 새로 고침 하면 한편 으로 는 사용자 에 게 좋 지 않 은 체험 을 가 져 다 주 고 다른 한편 으로 는 더 많은 시간 을 소모 하여 더 많은 대역 폭 을 차지 해 야 한다.그리고 위 에서 설명 한 그 chain 의 문제 도 있 습 니 다.장점 이 거의 없 죠?
2. 아 약 스 방식
1) 사용 방법: 많은 js 프레임 워 크 는 편리 한 ajax 제출 기능 과 결과 처리 방법 을 제공 합 니 다.예 를 들 어 prototype. js 나 jQuery. js.Struts 2 는 기본적으로 prototype. js 를 사용 합 니 다.Ajax 를 사용 하려 면 json 2. js, prototype. js, 그리고 jsonplugin - 0.32. jar 세 파일 을 도입 해 야 합 니 다.
제출 단추 의 이벤트 처리 함수 에서 정식으로 제출 하기 전에 다음 코드 를 사용 하 십시오.

  
    
1 function validateAddInAction(){
2 var url = action; // action

3 var params = Form.serialize( ' form id ' );
4 var ajaxreq = new Ajax.Request(
5 url,
6 {
7 method: ' post ' ,
8 parameters:params,
9 onComplete:processResponse, // ajax
10 asynchronous: true
11 }
12 );
13 }

다음은 processResponse () 의 예 입 니 다.

  
    
1 function processResponse(request){
2 var res = JSON.parse(request.responseText);
3 var temp = res[ ' Action ' ];
4 ......
5
6 var form = document.forms[ 0 ];
7 form.action = " action " ;
8 ......
9 form.submit();
10 }

위의 코드 에서 temp = res ['] 의 매개 변 수 는 Action 류 의 특정한 속성의 이름 입 니 다.예 를 들 어 Action 에 private String a 가 있 습 니 다.private String b;그리고 이들 에 대응 하 는 getter (), setter () 방법 은 ajax 가 돌아 온 결과 에서 res [a '] 와 res [b'] 를 통 해 값 을 얻 을 수 있 습 니 다.
 
그 밖 에 action 설정 도 수정 해 야 합 니 다.

  
    
1 < action name =" action" class ="FooAction" method ="f" >
2 < result type ="json" ></ result >
3 </ action >
4
5 < action /> < package /> extends struts-default json-default。

상기 설정 에서 f () 는 검증 에 사용 되 는 방법 입 니 다.결 과 를 되 돌려 주 는 형식 은 json 이기 때문에 물리 적 보 기 를 지정 할 필요 가 없습니다.본 격 적 으로 제출 한 action 에 대응 하 는 방법 이 foo () 라면 해당 하 는 검증 방법 을 vaidatefoo () 라 고 명명 하고 foo () 전에 @ SkipValidation 을 추가 해 야 합 니 다. foo () 에 들 어가 기 전에 다시 한 번 vaidatefoo () 방법 으로 검증 하 는 것 을 방지 하기 위해 서 입 니 다.
2) 오류 메시지 표시
검증 이 통과 되 지 않 으 면 오류 정 보 는 Action 의 특정한 속성 을 통 해 프론트 데스크 에 전달 할 수 있 고 구체 적 인 방법 은 위의 설명 을 참조 할 수 있 습 니 다.
3) 장단 점: 장점 만 있 는 것 같다.

좋은 웹페이지 즐겨찾기