1. 클라이언트는 서틀 컨테이너 (TOMCAT)에 대한 요청을 초기화합니다.
2.이 요청은 일련의 필터를 통과 한 다음 FilterDispatcher가 호출됩니다.
3. FilterDispatcher는 ActionMapper에게 요청이 특정 작업을 호출 해야하는지 여부를 결정하도록 요청합니다.
4. ActionMapper가 작업을 호출하기로 결정하면 FilterDispatcher가 요청 처리를 ActionProxy에 건네줍니다. ActionPro는 ConfigurationManager에 따라 Framework 구성 파일을 요청하고 일반적으로 struts.xml을 읽는 작업 클래스를 찾습니다.
5. ActionProxy는 ActionInvocation 인스턴스를 만듭니다. ActionInvocation 인스턴스는 이름이 지정된 패턴을 사용하여 호출됩니다. 행동을 호출하는 과정 전후에, 관련 인터셉터의 호출이 관련됩니다.
6. 작업이 실행되면 ActionInvocation은 struts.xml의 구성에 따라 해당 반환 결과를 찾습니다.
예를 들어 코드 :
struts2는 .Action 요청을 얻은 후 부분을 기반으로 호출 할 비즈니스 로직 구성 요소를 결정합니다.
Struts2 응용 프로그램의 모든 동작은 struts.xml에 정의됩니다.
사용자 요청을 처리하기 위해 Struts2에서 사용하는 조치 인스턴스는 사용자가 구현 한 비즈니스 컨트롤러가 아니라 사용자가 구현 한 서비스 컨트롤러가 Servletapi와 결합되지 않으며 사용자 요청을 처리 할 수 없기 때문에 작업 프록시입니다.
<html> <head> <title> 성공 </title> </head> </head> <body> <form action = "hello.action"method = "post"> username : <입력 유형 = "text"name = "name"> </br> 비밀번호 : <입력 유형 = "possk"name = "pass"> </br> <input type = "value ="value = "제출"> </html> </html> </html> </html>
예를 들어, Hello.Action 위의 양식의 경우,이 조치 속성은 일반 서블릿 또는 동적 JSP 페이지가 아닙니다. 양식이 hello.action에 제출되면 struts2의 필터 디스패퍼가 작동하여 사용자 요청을 해당 조치로 전달합니다.
struts2 action은 기본적으로 접미사로 모든 요청을 가로 채 웁니다. 양식을 처리를위한 조치에 제출 해야하는 경우 양식 동작 속성을 .Action 형식으로 설정해야합니다.
컨트롤러 클래스
공개 클래스 helloAction {private String name; private string pass; public void setName (문자열 이름) {this.name = name;} public void setpass (string pass) {this.pass = pass;} public String execute () {if (이름) && "1234".Equals (pass)) {return "}}}}}}이전 실행이 완료되면 페이지 전달이 수행되며 사용자의 상태는 추적되지 않습니다. 사용자가 로그인하면 사용자 이름을 httpsession의 상태 정보로 추가해야합니다.
httpsession 인스턴스에 액세스하기 위해 struts2는 actioncontext 클래스를 제공합니다.이 메소드의 반환 값은 httpsession ()가 아니라 map ()이지만 struts2의 인터셉터는 session ()과 httpsession () 사이를 전환 할 책임이 있습니다.
설정 한 세션 속성이 성공했는지 확인하려면 성공 후 인터페이스를 설정할 수 있습니다.
<html> <head> <base href = "<%= basepath%>"rel = "external nofollow"> <title> 성공 </title> </head> </head> welcome, $ {sessionscope.user}, 당신은 이미 로그인되었습니다. </body> </html>JSP2.0 표현 구문을 사용하여 HTTP 세션에서 사용자 속성을 출력하십시오.
액션 도구 클래스 통합 액션 업 포트
ActionSupport 클래스는 도구 클래스이며 ACTION 인터페이스를 구현했습니다. 또한 데이터 검증 기능을 제공하여 ValidAtableZ 인터페이스를 구현합니다.
입력 데이터의 검증 기능을 늘리려면 재 작성 유효성 검사 메소드를 추가하십시오.
public void validate () {if (getName () == null || getName (). trim (). equals ( "")) {addfielderror ( "name", getText ( "name.required"));} if (getPass () == null || getPass (). equals ( "") {AddFielder ( "Pass", getText ( "Pass.Required");}}위에 추가 된 다시 작성된 Validate 메소드는 시스템 Execute () 메소드 전에 실행됩니다. 액션 클래스의 필드러에 이미이 메소드를 실행 한 후 데이터 검증 오류가 포함 된 경우 요청이 입력 논리보기로 전달되므로 로그인 페이지로 점프하려면 struts.xml에서 입력 논리보기 이름을 추가해야합니다.
이 Validate 메소드의 단점은 검증 메소드의 많은 재 작성이 필요하므로 Struts2의 검증 프레임 워크를 사용할 수 있다는 것입니다.
<? xml version = "1.0"encoding = "utf-8"?> <! doctype validators public "-// OpenSymphony Group // Xwork Validator 1.0.3 // en" "http://www.opensymphony.com/xwork/xwork-validator-1.03.33.dtd"> <validator>-volidators>- <field-validator type = "requiredString"> <message key = "name.required"/> </field-validator> </field> <!-양식 패스 확인-> <field name = "pass"> <field-validator type = "resightstring"> <message key = "pass.required"/> </field> </field>
요약
위는 Struts2의 프로세스 및 일련의 관련 지식 코드 분석에 대한이 기사의 전체 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!