struts2는 요청, 세션, 애플리케이션의 맵 유형을 사용합니다.
7611 단어 【스트럿츠2】
프로그램 항목은 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;
}
}