Struts 2 의 Action 이 Servlet API 에 접근(전환)

5810 단어 자바 개발
자바 코드
  • public  String execute(){  
  • //ActionContext 대상 획득
  •    ActionContext ac = ActionContext.getContext();  
  • //HttpServletRequest 에서 request 대상 의 요청 매개 변 수 를 가 져 옵 니 다 Map
  • Map paramMap = ac.getParameters();  
  • //주의:key 를 사용 하여 맵 에서 얻 은 것 은 Striing 배열 참조,즉 같은 이름 을 가 진 요청 매개 변수 집합 입 니 다
  •    String[] ids = (String[]) paramMap.get("id" );   
  •    String[] names = (String[]) paramMap.get("name" ); 
  • //Session 속성 을 저장 하 는 맵 을 가 져 옵 니 다
  •    Map sessionMap = ac.getSession();  
  •    sessionMap.put("id" , ids[ 0 ]);  
  •    sessionMap.put("name" , names[ 0 ]);  
  •    return   "toSession" ;  
  • }  

  •  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 에 주입 합 니 다.
    자바 코드
  • public   class  ServletAction2  implements   
  •              CookiesAware,ParameterAware, RequestAware,  
  •              SessionAware, ServletRequestAware,  
  •              ServletResponseAware, ApplicationAware {    
  •   
  •  private  Map sessionMap;  
  •  private  HttpServletRequest request;  
  •  private  HttpServletResponse response;  
  •  private  Map applicationMap;  
  • //정의 만 있 고 코드 에 사용 되 지 않 으 며 설명 역할 을 합 니 다.  
  •  private  Map cookieMap;  
  • //정의 만 있 고 코드 에 사용 되 지 않 으 며 설명 역할 을 합 니 다.  
  •  private  Map requestMap;  
  • //정의 만 있 고 코드 에 사용 되 지 않 으 며 설명 역할 을 합 니 다.  
  •  private  Map parameterMap;  
  • //정의 만 있 고 코드 에 사용 되 지 않 으 며 설명 역할 을 합 니 다.    

  • 이상 의 구성원 변 수 를 생 성 하 는 setter 를 생략 합 니 다. getter 방법      
  •   
  • public  String execute(){    
  •   
  •     String id = this .request.getParameter( "id" );    
  •   
  •     String name = this .request.getParameter( "name" );    
  •   
  • sessionMap.put("id" , id);    
  •   
  •     sessionMap.put("name" , name);    
  •   
  •     return   "toSession" ;    
  •   
  •  }    
  •   
  • 좋은 웹페이지 즐겨찾기