머리말
Struts2에 대한 소개 자습서를 소개했습니다. 나는 내가 배운 지식, 학습 과정 및 솔루션 중에 발생한 문제를 계속 공유 할 것입니다. 물론 독자가 문제를 발견하면 아래 의견에 알려줄 수 있습니다. 미리 감사드립니다
실제로 웹 리소스에 액세스합니다
웹 리소스
소위 웹 리소스는 httpservletrequest, httpservletresponse 및 ServletContext와 같은 기본 API를 나타냅니다. B/S 애플리케이션 개발 컨트롤러로서 도메인 개체에 대한 속성 읽기 및 쓰기와 같은 웹 리소스에 액세스 할 수 있어야합니다.
웹 리소스에 액세스하는 방법
Servletapi의 분리 방법 : Servletapi와의 커플 링을 피하고 단위 테스트를 촉진하기 위해 httpservletrequest, httpsession 및 servletcontext를 캡슐화하면 3 개의 맵 객체를 구성 하여이 3 개 객체를 교체합니다. 실제로 httpservletrequest, httpservletsession 및 httpservletcontext의 해당 맵 객체를 사용하여 데이터를 저장 및 읽을 수 있습니다.
public Object get(Object key) 메소드를 사용하여 요청 매개 변수를 전달하여 구현을 달성해야합니다.setRequest() 메소드를 구현하여 모든 작업 메소드에서 요청 맵을 호출 할 수 있도록하십시오. ActionContext를 사용하여 도메인 객체의 코드 데모를받습니다.
index.jsp 페이지에서 요청을 showpage.jsp로 보내고 요청을 struts 'action class objectAction.java로 넘겨 요청을 처리합니다.
ObjectAction.java에서 도메인 객체는 ActionContext에 의해 검색되고 속성 값이 추가되고 요청은 showpage.jsp로 전달됩니다.
showpage.jsp 페이지에서 각 도메인 객체의 값을 얻을 수 있습니다.
index.jsp
< %@ page contenttype = "text/html; charset = utf-8"language = "java" %> <html> <head> <title> 핸들 </title> </head> <hod>-이름 매개 변수를 전달합니다. > 응용 프로그램 </a> </body> </html>
ObjectAction.java
package com.request.test; import com.opensymphony.xwork2.actioncontext; import java.util.map; public class objectAction {public string print () {// ActionContext ActionContext ActionContext = ActionContext.getContext (// ActionContext)에 해당하는 맵을 가져옵니다. ApplicationMap.put ( "ApplicationMap", "ApplicationMapValue"); // 세션 맵 <string, object> sessionmap = actionContext.getSession (); // sessionMap을 sessionMap.put에 할당하는 ( "sessionMap", "sessionMapValue"); // 해당 getRequest (geter Quest <mater)가 있습니다. Object> requestMap = (map <String, Object>) ActionContext.get ( "request"); // 요청에 해당하는 맵을 가져옵니다. 해당 getRequest () 메소드가 없으므로 get ( "request") 메소드 맵 <string, object> requestmap = (map <string, object>) actionContext.get ( "request"); // requestMap requestMap.put ( "requestMap"), "requestMapValue"); // 객체 <actionmap = acturemap = acturemap = acturemap = acturemap = acturemap. 매개 변수 string [] params = (String []) paramsmap.get ( "name"); // 매개 변수 값을 콘솔 시스템에 인쇄합니다 (params [0]); "성공"을 반환합니다. }}struts.xml (패키지 노드 만 표시)
<package name = "showValue"extends = "struts-default"> <action name = "showpage"method = "print"> <result name = "success">/showpage.jsp </action> </package>
showpage.jsp (바디 태그 내용 만 표시)
<%-응용 프로그램 도메인 객체의 값을 가져옵니다-%> $ {ApplicationScope.applicationMap} <br> <ber- <%-세션 도메인 객체의 값 가져 오기-%> $ {sessionscope.sessionmap} <ber <%-요청 도메인 객체의 값-%> $ {requestscope.requestmap} <br> value that the that the that the value the value the vale the the the the the the valk a vale the the the the the val 개체-%> $ {requestScope.RequestMap}세부 사항 및 관심 (더 큰 이미지를 보려면 브라우저의 새 탭 페이지로 이미지를 드래그)
xxxaware 인터페이스를 사용하여 웹 리소스에 액세스합니다
ActionContext 사용과 마찬가지로 index.jsp 페이지에서 객관적 요청을 보내는 것은 print2() 메소드로 처리됩니다.
ObjectAction.java에서 print2() 메소드에서 도메인 객체에 값을 할당하고 전달 된 매개 변수의 값을 가져옵니다.
마지막으로 ShowPage.jsp에서 도메인 객체의 값을 얻습니다. 이전의 것과 구별하기 위해 구별 할 각 출력 값에 기호를 추가합니다.
index.jsp (표시 태그 부품 표시)
<a href = "showpage2.action? name = smzyy"rel = "외부 nofollow"> topage2 </a>
ObjectAction.java
package com.request.test; import com.opensymphony.xwork2.actioncontext; import org.apache.struts2.interceptor.applicationaware; import org.apache.struts2.interceptor.parameteraware; import org.apache.Struts.requestaware; import org.apache.struts.interceptor.songeat java.util.map; 공개 클래스 객관화는 RequestAware, SessionAware, ApplicationAware, ParameterAware {private map <string, object> requestMap; 개인지도 <문자열, 객체> 세션 맵; 개인지도 <문자열, 객체> ApplicationMap; private map <string, string []> parametermap; // showpage.action 필수 메소드 공개 문자열 print2 () {applicationmap.put ( "ApplicationMap", "ApplicationMapVal ==="); requestMap.put ( "requestMap", "requestMapVal ==="); SessionMap.put ( "SessionMap", "SessionMapVal ==="); 문자열 [] name = parameteRmap.get ( "name"); System.out.println (이름 [0] + "===="); "성공"을 반환합니다. } @override public void setApplication (map <string, object> map) {this.applicationMap = map; } @override public void setparameters (map <string, string []> map) {this.parametermap = map; } @override public void setRequest (map <string, object> map) {this.requestmap = map; } @override public void setsession (map <string, object> map) {this.sessionmap = map; }}struts.xml (패키지 노드 부품 표시)
<package name = "showvalue"extends = "struts-default"> <action name = "showpage2"method = "print2"> <result name = "success">/showpage.jsp </result> </action> </package>
showpage.jsp (위와 동일, 전혀 변경되지 않았습니다)
선택 제안
웹 리소스를 얻는 위의 두 가지 방법을 통해 첫 번째 방법에 도메인 객체를 호출 해야하는 많은 동작 방법이 있으면 각 방법을 구현 해야하는 반면, 두 번째 방법은 한 번만 구현하면되므로 실제 개발에서는 상황에 따라 해당 방법을 구현하기 위해 선택됩니다.
Servletapi와 결합 : 더 많은 Servletapis에 액세스 할 수 있고 기본 방법을 호출 할 수 있습니다.
여기서 구현 방법은 위 구현 방법과 유사하므로 이야기하지 않습니다.
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.