struts 2 Action 에서 request, session, application 속성 에 접근 합 니 다.

5342 단어 Struts2
struts 1 에 서 는 시스템 의 request, session 또는 application 대상 을 얻 는 것 이 매우 편리 하고 모두 형태 에 따라 전달 되 지만 struts 2 에 서 는 request, session, application 이 모두 숨겨 져 있다.      struts 는 세 션, request, application 대상, 즉 IOC 방식 과 비 IOC 방식 을 두 가지 방식 으로 방문 하 는데 그 중에서 SPRING 에서 말 하 는 IOC 즉 반전 을 제어 하 는 데 자주 사용 된다.
1. 비 Ioc 방식:
            이러한 방식 은 주로 com. opensymphony. xwork 2. Action Context 류 와 org. apache. struts 2. ServletAction Context 류 를 이용 한 것 으로 구체 적 인 방법 은 다음 과 같다.
          (1) servlet API 와 결합 하 는 방식 (ServletAction Context 클래스 를 통 해 직접 가 져 오기)
HttpServletRequest request = ServletActionContext.getRequest(); //  request    
HttpSession session = request.getSession();//  session  
ServletContext  application = ServletActionContext.getServletContext(); //  application       
  ServletContext application = session.getServletContext(); //  application     
HttpServletResponse response = ServletActionContext.getResponse(); //  response  

        (2) servet API 와 결합 하지 않 는 방식 (ActionContext 클래스 를 통 해 직접 가 져 오기)
ActionContext context = ActionContext.getContext();  //requestScope
Map request = (Map) context.get("request");  //  request
Map session = context.getSession();   //  session
Map application = context.getApplication();  //  application


ActionContext ctx = ActionContext.getContext();
ctx.getApplication().put("app","application    ");
ctx.getSession().put("sess","session    ");
ctx.put("req","request    ");

2. IOC 방식:
       (1) request 대상 획득:
          STEP 1: 액 션 으로 ServletRequestAware 인터페이스 구현          두 번 째 단계: action 에서 HttpServletRequest 형식의 인 스 턴 스 변 수 를 설명 합 니 다.          세 번 째 단계: action 에서 ServletRequestAware 인 터 페 이 스 를 실현 하 는 setServletRequest 방법 은 실현 방식 이 간단 합 니 다. 다음 과 같 습 니 다. 
//1.  ServletRequestAware  
public class UserAction implements ServletRequestAware {

    //2.  HttpServletRequest          getter/setter  
    private HttpServletRequest request;

    public HttpServletRequest getRequest() {
        return request;
    }
    public void setRequest(HttpServletRequest request) {
        this.request = request;
    }
    
    //3.  ServletRequestAware   setServletRequest  ,    request         request
    @Override
    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
    }
}

       (2) 세 션 대상 획득 (주의, 이때 session 은 SessionMap 형식):
         STEP 1: action 이 Session Aware 인 터 페 이 스 를 실현 하도록 합 니 다.         두 번 째 단계: action 에서 맵 형식의 인 스 턴 스 변 수 를 설명 합 니 다.         세 번 째 단계: action 에서 Session Aware 인 터 페 이 스 를 실현 하 는 setSession 방법 은 실현 방식 이 간단 합 니 다. 다음 과 같 습 니 다.   
//1.  SessionAware  
public class UserAction implements SessionAware {

    //2.  Map          getter/setter  
    private Map session;

    public Map getSession() {
        return session;
    }
    
    //3.  SessionAware   setSession  ,    session         session
    @Override
    public void setSession(Map session) {
        this.session = session;
    }
    
}

      (3) 애플 리 케 이 션 대상 가 져 오기:
        첫 번 째 단계: action 이 ServletContextAware 인 터 페 이 스 를 실현 하도록 합 니 다.        두 번 째 단계: action 에서 ServletContext 형식의 인 스 턴 스 변 수 를 설명 합 니 다.        세 번 째 단계: action 에서 ServletContextAware 인 터 페 이 스 를 실현 하 는 setServletContext 방법 은 실현 방식 이 매우 간단 하 다. 다음 과 같다.  
//1.  ServletContextAware  
public class UserAction implements ServletContextAware {

    //2.  ServletContext          getter/setter  
    private ServletContext application;

    public ServletContext getApplication() {
        return application;
    }

    public void setApplication(ServletContext application) {
        this.application = application;
    }

    //3.  ServletContextAware   setServletContext  ,    application         application
    @Override
    public void setServletContext(ServletContext application) {
        this.application = application;
    }
}

      (4) response 대상 가 져 오기:
        첫 번 째 단계: action 이 ServletResponse Aware 인 터 페 이 스 를 실현 하도록 합 니 다.        두 번 째 단계: action 에서 HttpServletResponse 형식의 인 스 턴 스 변 수 를 설명 합 니 다.        세 번 째 단계: action 에서 HttpServletResponse 인 터 페 이 스 를 실현 하 는 setResponse 방법 은 실현 방식 이 간단 합 니 다. 다음 과 같 습 니 다.  
//1.  ServletResponseAware  
public class UserAction implements ServletResponseAware {

    //2.  HttpServletResponse          getter/setter  
    private HttpServletResponse response;

    public HttpServletResponse getResponse() {
        return response;
    }

    public void setResponse(HttpServletResponse response) {
        this.response = response;
    }

    //3.  ServletResponseAware   setServletResponse  ,    response         response
    @Override
    public void setServletResponse(HttpServletResponse response) {
        this.response = response;    
    }
    
}

첨부: Jps 페이지 에서 Scope 대상 값 을 가 져 오 는 몇 가지 방법:
(1) ${} 형식
${applicationScope.app}
${sessionScope.sess}
${requestScope.req}

(2) 태그



(3) getAttribute () 방식



좋은 웹페이지 즐겨찾기