Struts 2 의 Action 이 Servlet API 에 접근(전환)
5810 단어 자바 개발
struts 1 에서 HttpServletResponse,HttpServletRequest 등 대상 은 execute 방법의 매개 변 수 를 통 해 얻 을 수 있 습 니 다.그러면 Action 류 는 Servlet API 에 의존 합 니 다.struts 2 에서 Action 류 의 execute 방법 매개 변 수 는 비어 있 고 그 어떠한 인 터 페 이 스 를 계승 하지 않 아 도 됩 니 다.그러면 Action 은 어떻게 Servlet 에 접근 합 니까?
struts 2 에서 두 가지 방식 을 제공 합 니 다.1.Action Context 류 방문 Servlet 대상 을 제공 합 니 다. 2、IOC 를 통 해 용기 에서 주입
다음은 일일이 설명 하고 총 결 을 하 겠 습 니 다.
1.Action Context 류 를 통 해 Servlet 대상 을 방문 하 는 것 은 두 가지 방식 으로 나 뉜 다.
1.Action Context 류 는 com.opensymphony.xwork 2 에서 일련의 관련 방법 을 제공 하여 ServletContext,HttpSession,HttpServletRequest 에 저 장 된 정 보 를 방문 하고 Map 에 저장 합 니 다.Action Context 클래스 에서 정적 방법 Public static Action Context getContext()를 정의 하여 자신의 인 스 턴 스 를 가 져 오 는 데 사용 합 니 다.new 와 같은 대상 은 안 됩 니 다!
자주 사용 하 는 방법:
public static ActionContext getContext()
ActionContext 대상 가 져 오기
public Map getParameters()
요청 대상(HttpServletRequest)에서 요청 인자 가 져 오기
public Map getApplication()
ServletContext 에 저 장 된 Attribute 가 져 오기
public Map getSession()
HttpSession 에 저 장 된 Attribute 가 져 오기
request 의 인 자 를 얻 고 session 에 두 는 방법 을 보 여 줍 니 다.
주:getParameters()방법 으로 얻 은 요청 매개 변수 유형 은 모두 String[]이 므 로 실제 상황 에 따라 값 을 추출 해 야 합 니 다.값 이 하나 밖 에 없다 면 배열 의 0 번 째 요 소 를 꺼 내 면 됩 니 다.
2.Action Context 는 webwork 가 정의 하 는 클래스 이기 때문에 struts 2 는 새로운 종류의 org.apache.struts 2.ServletAction Context 를 정의 합 니 다.이 종 류 는 Action Context,ServletAction Context 류 와 Action Context 에 비해 더 많은 방법 을 확장 하 였 으 며 주로 정적 방법 입 니 다.독자 소스 코드 보기
ServletAction Context 를 사용 하여 request 의 인 자 를 얻 고 session 에 두 는 방법 을 보 여 줍 니 다.
public String execute(){
String id = ServletActionContext.getRequest().getParameter("id");
String name = ServletActionContext.getRequest().getParameter("name");
Map sessionMap = ServletActionContext.getContext().getSession();
sessionMap.put("id", id);
sessionMap.put("name", name);
System.out.println("id=" + sessionMap.get("id"));
System.out.println("name=" + sessionMap.get("name"));
return "toSession";
}
ServletAction Context 를 사용 할 때 돌아 오 는 대상 은 바로 HttpServletResponse 입 니 다.HttpServletRequest 는 이전 방식 과 다 릅 니 다!
2.IOC 를 통 해 Servlet 대상 방문
Struts 2 에 서 는 IOC(주입 의존)를 통 해 Servlet 대상 을 Action 에 주입 할 수 있 습 니 다.이 모든 것 은 하나의 인터페이스 에 의 해 결 정 됩 니 다.이 인 터 페 이 스 는 하나의 공통점 이 있 고 이름 은 Aware 로 끝 납 니 다.다음은 이 인터페이스의 설명 이다.
인터페이스 정의
역할.
public interface ApplicationAware { public void setApplication(Map application); }
맵 형식 으로 Action 에 ServletContext 에 저 장 된 Attribute 집합 을 주입 합 니 다.
public interface SessionAware { public void setSession(Map session); }
HttpSession 에 저 장 된 Attribute 집합 을 맵 형식 으로 Action 에 주입 합 니 다.
public interface ServletResponseAware { public void setServletResponse(HttpServletResponse response); }
Action 에 HttpServletResponse 대상 주입
public interface ServletRequestAware { public void setServletRequest(HttpServletRequest request); }
Action 에 HttpServletRequest 대상 주입
public interface RequestAware { public void setRequest(Map request); }
HttpServletRequest 에 저 장 된 Attribute 집합 을 맵 형식 으로 Action 에 주입 합 니 다.
public interface CookiesAware { void setCookiesMap(Map cookies); }
맵 형식 으로 Action 에 쿠키 의 데이터 집합 을 주입 합 니 다.
public interface ParameterAware { public void setParameters(Map parameters); }
Action 에 요청 매개 변수 집합 을 주입 합 니 다.
Action 이 이 인 터 페 이 스 를 실현 시 키 기만 하면 됩 니 다.Struts 2 는 자동 으로 데이터 와 대상 을 Action 에 주입 합 니 다.
자바 코드
이상 의 구성원 변 수 를 생 성 하 는 setter 를 생략 합 니 다. getter 방법
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
학습 찌르기: 초보 Servlet 용기 (웹 서버) ― Tomcat압축 을 풀 면 tomcat 패키지 의 디 렉 터 리 구 조 를 볼 수 있 습 니 다. 2. 시작 에 실패 하면 TCP 의 8080 포트 가 다른 프로그램 에 의 해 점용 될 수 있 습 니 다.작업 관리자 에서 어떤...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.