우리 모두 알다시피, strut2의 조치 클래스는 요청 매개 변수, 조치 구성 매개 변수, 다른 동작 (체인 결과를 통해)으로 속성 값을 전달하는 등의 속성을 통해 모든 관련 값을 얻을 수 있습니다. struts2가 액션 클래스의 작업 메소드를 호출하기 전에 (기본값은 실행 메소드입니다) 해당 조치 속성이 할당됩니다.
이 함수를 완성하기 위해 Struts2는 Valuestack 객체에 크게 의존합니다. 이 개체는 전체 수명주기를 통해 실행됩니다 (액션 클래스의 각 객체 인스턴스에는 Valuestack 객체가 있습니다). struts2가 .Action 요청을 수신하면 먼저 액션 클래스 객체의 인스턴스를 생성하지만 액션 메소드를 호출하지는 않지만 먼저 Valuestack 객체의 최상위 노드에 액션 클래스의 해당 속성을 배치합니다 (Valuestack 객체는 스택과 동일합니다). 모든 속성 값은 문자열 유형의 속성 값이 null, int 유형의 속성 값은 0 등과 같은 기본값이라는 것입니다.
위의 작업을 처리 한 후 Struts2는 인터셉터 체인에서 인터셉터를 호출합니다. 모든 인터셉터를 호출하면 액션 클래스의 동작 방법이 호출됩니다. 액션 메소드를 호출하기 전에 Valuestack 객체의 최상위 노드의 속성 값이 작업 클래스의 해당 속성에 할당됩니다. 모두가주의를 기울여야합니다. 이것은 우리에게 많은 유연성을 가져옵니다. 즉, Struts2가 인터셉터를 호출하는 과정에서 Valuestack 객체의 속성 값을 변경할 수 있습니다. 특정 속성 값이 변경되면 액션 클래스의 해당 속성 값은 인터셉터에서 속성의 마지막 변경 값이됩니다.
위의 설명에서 struts2의 동작 클래스에서 다른 인터셉터에서 처리하는 속성과 동일한 이름의 매개 변수 값을 얻을 수 있음을 쉽게 알 수 있습니다. 예를 들어, 요청 매개 변수를 얻는 인터셉터는 매개 변수이며, 동작의 구성 매개 변수를 얻는 인터셉터는 정적 파람 등입니다. 이러한 인터셉터 내부의 해당 값을 읽고 Valuestack 객체의 상단 레벨 노드의 해당 속성 값을 업데이트하십시오. Valuestack 객체는 컨베이어 벨트와 같습니다. 컨베이어 벨트와 같습니다. 속성 값을 한 인터셉터에서 다른 인터셉터로 전달하고 (물론이 시간 동안 속성 값이 변경 될 수 있음), 최종적으로 액션 객체로 전달되며 Valuestack 객체의 속성의 최종 값은 동작 클래스의 해당 속성에 할당됩니다.
디스플레이 레이어에서 EL 표현식을 사용하면 EL 표현식의 11 개의 숨겨진 객체의 특성에 액세스 할 수있을뿐만 아니라 Valuestack의 객체 속성 값에 액세스 할 수 있습니다.
public class strutsrequestwrapper는 httpservletrequestwrapper {public strutsrequestwrapper (httpservletrequest req) {super (req);} public object getAttribute (strings) {...... ActionContext Ctx = ActionContext.getContext (); gettattriptribute (superattrittribute); Get get get the get get get get get get get get get get get get get get get get get get get value. (ctx! = null) {if (attribute == null) {// 속성 값이 요청 범위에서 찾을 수없는 경우, 객체의 속성 값은 Valuestack에서 찾을 수 있습니다 ... Valuestack stack = ctx.getValuestack (); // valuestack 객체 속성 = stack.findvalue (specified valuge get the arever get at the arever get at the arever get at the arever get the object get the object) Valuestack ...}} return attribute;}}요약
위의 내용은 STRUT2가 요청 매개 변수를 어떻게 캡슐화하는지에 대한이 기사에 관한 것이며, 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구는이 사이트의 다른 관련 주제를 계속 참조 할 수 있습니다. 단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!