Struts 2 에서 자주 사용 하 는 몇 가지 주해
@Action
잔말 말고 코드 얘 기 하지 마.
package com.ponpon.actions;
import org.apache.struts2.convention.annotation.Action;
import com.opensymphony.xwork2.ActionSupport;
public class myAction extends ActionSupport {
@Action("/v1/url")
public String execute() {
return SUCCESS;
}
}
이 예******tring execute()방법 에@Action("/v1/url")을 사 용 했 습 니 다.Action 과 Action URL 간 의 매 핑 관 계 를 바 꾸 었 습 니 다.이러한 변 화 는"OverWrite"가 아니 라 원래 약속 한 토대 에서 다른 호출 방식 을 추 가 했 습 니 다.
원래@Action("/v1/url")주석 이 없 는 상태 에서 저 희 는 브 라 우 저 에 http:/응용 서버 ip:포트/응용/my action 을 입력 하면 com.ponpon.actions.my Action 에 접근 할 수 있 고 http:/응용 서버 ip:포트/응용/my action.jsp 페이지 를 최종 적 으로 표시 할 수 있 습 니 다.(물론 여기 도 html 등 페이지 일 수 있 습 니 다.
@Action("/v1/url")주해 의 경우 상기 접근 방식 을 제외 하고 브 라 우 저 에 http:/응용 서버 ip:포트/응용 을 입력 할 수 있 습 니 다.
/v1/url,com.ponpon.actions.myaction 에 도 접근 할 수 있 지만 http://응용 서버 ip:포트/응용/v1/url.jsp 페이지 가 표 시 됩 니 다.
코드 를 먼저 올 리 는 게 좋 을 것 같 아 요.
package com.ponpon.actions;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Actions;
import com.opensymphony.xwork2.ActionSupport;
public class myaction1 extends ActionSupport {
private String message;
public String getMessage() {
return message;
}
@Actions( { @Action("/one/url"), @Action("/another/url") })
public String execute() {
message = "myaction1 execute()";
return SUCCESS;
}
}
이 예******tring execute()방법 에@Actions 와@Action 주 해 를 사 용 했 습 니 다.그 중에서@Actions 주 해 는@Action("/one/url")과@Action("/another/url")주 해 를 포함한다.이러한 주 해 는 http://응용 서버 ip:포트/응용/my action 1 을 통 해 com.ponpon.actions.my action 1 을 방문 하고 http:/응용 서버 ip:포트/응용/my action.jsp 를 최종 적 으로 표시 하 는 것 외 에 두 가지 접근 방식 이 있 습 니 다.
즉:
http://응용 서버 ip:포트/응용/one/url 을 통 해 com.ponpon.actions.myaction 1 을 방문 하고 http:/응용 서버 ip:포트/응용/one/url.jsp 를 최종 적 으로 표시 합 니 다.
http://응용 서버 ip:포트/응용/another/url 을 통 해 com.ponpon.actions.myaction 1 을 방문 하고 http:/응용 서버 ip:포트/응용/another/url.jsp 를 최종 적 으로 표시 합 니 다.이렇게 하면 하나의 ACTION 중의 한 방법 으로 여러 개의 서로 다른 URL 에 응답 하 는 효 과 를 얻 을 수 있다.
package com.ponpon.actions;
import org.apache.struts2.convention.annotation.Action;
import com.opensymphony.xwork2.ActionSupport;
public class myaction2 extends ActionSupport {
private String message;
public String getMessage() {
return message;
}
@Action("/v1/url")
public String execute() {
message = "myaction2 execute()!";
return SUCCESS;
}
@Action("url")
public String doSomething() {
message = "myaction2 doSomething()!";
return SUCCESS;
}
}
이 예*******tring execute()방법 에@Action(v1/url)주 해 를 사 용 했 습 니 다.StringdoSomething()방법 에@Action("url")을 사 용 했 습 니 다.전 자 는 http://응용 서버 ip:포트/응용/v1/url 을 통 해 com.ponpon.actions.my cation 2 의 execute()방법 을 방문 하고 http:/응용 서버 ip:포트/응용/v1/url.jsp 를 최종 적 으로 표시 할 수 있 습 니 다.후 자 는 http://응용 서버 ip:포트/응용/url 을 통 해 com.ponpon.actions.my action 2 의 doSomething()방법 을 방문 하고 http:/응용 서버 ip:포트/응용/url.jsp 를 최종 적 으로 표시 합 니 다.
이 예 에서 주의해 야 할 것 은@Action("/v1/url")과@Action("url")의 차이 점 입 니 다."url"전에"/"가 없다 는 것 은"url"이 my action 2 의 네 임 스페이스 를 기반 으로 한 것 임 을 의미 합 니 다.myaction 2 가 있 는 가방 이 com.ponpon.actions.aaa 라 고 가정 하면 http://응용 서버 ip:포트/응용/aaa/url 을 통 해서 만 com.ponpon.actions.aaa.myaction 2 에 접근 할 수 있 고 http:/응용 서버 ip:포트/응용/aaa/url.jsp 를 최종 적 으로 표시 합 니 다.한편,'/v1/url'은'/'네 임 스페이스 를 바탕 으로 한다.
위의 글 에서 결과 페이지 에 대해 서 는 Convention Plugin 의 약속 을 사용 하지만 이 절 은@Results 와@Result 를 이용 하여 이 약속 을 바 꿔 야 합 니 다.그리고@Results 와@Result 가 클래스 와 방법 을 주석 한 후에 발생 하 는 효과 입 니 다.아니면 코드 를 먼저 볼 까요?
package com.ponpon.actions;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.ActionSupport;
@Results( { @Result(name = "global", location = "/global.jsp") })
public class myaction3 extends ActionSupport {
@Action(value = "/v1/url", results = { @Result(name = SUCCESS, location = "/v1/success.jsp"),
@Result(name = "failure", location = "/v1/fail.jsp") })
public String execute() {
if (System.currentTimeMillis() % 3 == 0) {
return "failure";
} else if (System.currentTimeMillis() % 3 == 1) {
return SUCCESS;
} else {
return "global";
}
}
@Action("globalTest")
public String global() {
return "global";
}
@Action(value = "globalOverWrite", results = { @Result(name = "global", location = "/v1/globalOverWrite.jsp") })
public String globalOverWrite() {
return "global";
}
}
코드 의 String execute()방법 에서 진행 되 었 습 니 다. @Action(value = "/v1/url", results = { @Result(name = SUCCESS, location = "/H5/success.jsp"), @Result(name="failure",location="/H5/fail.jsp")}주석.만약@Action(...)에 results 가 없다 면={@Result(name=SUCCESS,location="/v1/success.jsp"), @Result(name="failure",location="/H5/fail.jsp")}은 Convention Plugin 의 약속 에 따라 결과 페이지 는/v1/url.jsp 입 니 다.빨간색 글꼴 의 부분 을 추가 하면 execute()방법 이 실 행 된 후 빨간색 글꼴 의 설정 에 따라 결 과 를 해당 페이지 로 이동 합 니 다.
상기 코드 를 자세히 살 펴 보고 Hello World 5 에서@Result({@Result(name="global",location="/global.jsp")}주 해 를 진행 하 였 습 니 다.이 클래스 와 하위 클래스 의 모든 방법 이'global'이라는 결과 페이지 로 돌아 갈 수 있다 는 뜻 이다.이 페이지 는'/global.jsp'입 니 다.이 때문에'/global.jsp'로 이동 하 는 모든 방법 에서@Result(name='global',location='/global.jsp')주 해 를 하지 않 아 도 됩 니 다.이것 은 실제 업무 에서 도 매우 흔히 볼 수 있 는 상황 이다.자세히 관찰 할 수 있 는 execute()방법 과 global()방법.그들 은 모두'global'이라는 결과 페이지(즉,location 속***정 의 된'/global.jsp'페이지)로 이동 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
한 편의 문장으로 Struts2의 유형 전환을 해결하다우리는 HTTP를 통해 백그라운드에 제출된 데이터가 모두 문자열의 형식이라는 것을 알고 있으며, 우리가 필요로 하는 데이터 형식은 당연히 문자열 형식 하나만 있는 것이 아니다.그래서 우리는 유형 전환이 필요하다!다음...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.