struts2는 요청, 세션, 애플리케이션의 맵 유형을 사용합니다.

7611 단어 【스트럿츠2】
Action 클래스에서는 ActionContext 객체를 통해 요청, 세션, 애플리케이션을 획득하고, 세 객체에 대한 키와 값을 설정하고, 다른 jsp 인터페이스의 키에 해당하는 값에 접근할 수 있다.
프로그램 항목은 index.jsp에 의해 입력되고 action이라는 액션 태그는 struts.xml에 있습니다.
  <body>
  <a href="action">进入a>
  body>
struts.xml, TestAction 클래스 찾기
<struts>
    <package name="demo" extends="struts-default" namespace="/">
        <action name="action" class="action.TestAction">
            <result name="success">Hello.jspresult>
        action>
    package>
struts>
액션 클래스, ActionContext를 통해 kv를 설정하고 execute()에서 SUCCESS를 반환하고 결과 태그가 이에 대응하도록 합니다.
public class TestAction extends ActionSupport{
    Map request;
    Map session;
    Map application;

    public TestAction() {
        ActionContext context = ActionContext.getContext();
        request = (Map) context.get("request");
        session = (Map) context.get("session");
        application = (Map) context.get("application");
    }

    @Override
    public String execute() throws Exception {
        request.put("info", "reqValue");
        session.put("info", "sesValue");
        application.put("info", "appValue");
        System.out.println("结果"+request.get("info"));
        return Action.SUCCESS;
    }
}
Hello.jsp 표시 값
  <body>
    <s:property value="#request.info"/><br>
    <s:property value="#session.info"/><br>
    <s:property value="#application.info"/>

    <s:debug>s:debug>
  body>

위의 액션은 3가지 스코프를 정의하는데 액션이 많을 경우 각 액션 클래스에 반복적으로 코드를 작성하는 것은 좋지 않습니다.
public class BaseAction implements RequestAware,ApplicationAware,SessionAware{
    protected Map session;
    protected Map   application;
    protected Map request;

    @Override
    public void setSession(Map arg0) {
        // TODO Auto-generated method stub
        this.session=arg0;
    }

    @Override
    public void setApplication(Map arg0) {
        // TODO Auto-generated method stub
        this.application=arg0;
    }

    @Override
    public void setRequest(Map arg0) {
        // TODO Auto-generated method stub
        this.request=arg0;

    }
}
이때 TestAction을 다시 수정하면 위와 같은 효과도 얻을 수 있다.
public class TestAction extends BaseAction{

    public TestAction() {
    }

    public String execute(){
        request.put("info", "reqValue");
        session.put("info", "sesValue");
        application.put("info", "appValue");
        System.out.println("结果"+request.get("info"));
        return Action.SUCCESS;
    }
}

좋은 웹페이지 즐겨찾기