[Struts 2 3] Struts 2 액 션 퍼 가기 유형
11020 단어 struts2
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="/simple" namespace="/simple" extends="struts-default">
<action name="helloworld" class="com.tom.actions.HelloWorldAction" method="executeAction">
<result name="success">/htmls/user.jsp</result>
</action>
</package>
</struts>
result 리 트 윗 의 네 가지 상용 유형
action 설정 항목 의 하위 요소 result 는 두 가지 속성 을 포함 합 니 다. name 과 type, name 속성 값 은 action 처리 결과 와 일치 합 니 다. type 은 action 결과 의 점프 유형 을 나타 내 고 네 가지 기본 값 을 포함 합 니 다.
1. dispatcher 는 forward, 즉 점프 를 요청 합 니 다. type 속성 을 지정 하지 않 을 때 기본 값 은 dispatcher 입 니 다.request 는 현재 action 에서 다른 보기 (jsp, action 또는 velocity 등) 로 이동 할 때 변 하지 않 고 사용자 에 게 투명 합 니 다.
2. type = redirect, 방향 변경
2.1 재 설정 은 요청 을 다시 시작 하 는 것 을 의미 합 니 다. 사용 자 는 브 라 우 저 URL 이 변 하 는 것 을 볼 수 있 습 니 다. 두 개의 서로 다른 요청 이기 때문에 현재 action 에 대응 하 는 request 는 그 후의 request 와 완전히 독립 되 어 있 습 니 다. 뒤의 request 는 현재 action 에 대응 하 는 request 의 설정 속성 값 을 공유 할 수 없습니다.
2.2 Struts 2 는 현재 action 이 뒤의 보기 에 매개 변 수 를 전달 하 는 것 을 지원 합 니 다. 예 를 들 어
<result type="redirect">/pages/abc.jsp?userId=${user.id}</result>
이것 은 / pages / abc. jsp 로 전송 할 때 요청 매개 변수 userId 를 가 져 올 수 있 습 니 다. 매개 변수 값 은 ${user. id} 입 니 다. 이것 은 현재 action 의 user 대상 에서 id 속성 을 추출 하고 action 은 getUser () 방법 이 있 으 며 user 대상 은 getId () 방법 이 있 습 니 다. 이것 은 ognl 표현 식 입 니 다.
3. type = redirect Action, 어떤 Action 으로 다시 설정
3.1 같은 가방 에 있 는 Action 으로 이동 하여 다음 설정 을 사용 합 니 다.
<result type="redirectAction">helloworld</result>
현재 action 이 있 는 패키지 (package) 의 namespace 를 helloworld 로 전환 하 는 action 을 표시 합 니 다.
3.2 다른 가방 아래 Action 은 다음 설정 을 사용 합 니 다.
<result type="redirectAction">
<param name="actionName">otherAction</param>
<param name="namespace">otherNamespace</param>
</result>
4. plainText 일반 텍스트 내용
plainText 는 점프 할 view 를 텍스트 로 되 돌려 주 겠 다 고 밝 혔 습 니 다. 다음 설정 을 사용 하 십시오. 현재 action 에 접근 할 때 abc. jsp 의 원본 내용 을 되 돌려 줍 니 다. abc. jsp 를 html 코드 로 해석 하 는 것 이 아 닙 니 다.
<result type="plainText">
<param name="location">abc.jsp</param>
<param name="charSet">UTF-8</param> <!-- UTF-8 abc.jsp, -->
</result>
예시
1. /htmls/user.jsp
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<!--message Action , ${message}-->
<!--message URL , ${param.message}-->
Hello, ${message}
</body>
</html>
2. HelloWorldAction.java
package com.tom.actions;
public class HelloWorldAction {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String executeAction() {
setMessage("Welcome to the Struts2 world");
return "success";
}
}
3. struts.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="resultType" namespace="/resultType" extends="struts-default">
<action name="plainText" class="com.tom.actions.HelloWorldAction" method="executeAction">
<result name="success" type="plainText">/htmls/user.jsp</result>
<!-- user.jsp <html> -->
</action>
<action name="dispatcher" class="com.tom.actions.HelloWorldAction" method="executeAction">
<result name="success" type="dispatcher">/htmls/user.jsp</result>
<!-- ,request , user.jsp ${message} -->
</action>
<action name="redirect1" class="com.tom.actions.HelloWorldAction" method="executeAction">
<result name="success" type="redirect">/htmls/user.jsp</result>
<!--- user.jsp http://localhost:8688/web/htmls/user.jsp-->
<!--${message} , , jsp, jsp JSTL , -->
</action>
<action name="redirect2" class="com.tom.actions.HelloWorldAction" method="executeAction">
<result name="success" type="redirect">/htmls/user.jsp?message=${message}</result>
<!--user.jsp ${param.message} JSTL -->
</action>
<action name="redirectAction1" class="com.tom.actions.HelloWorldAction" method="executeAction">
<!--HelloWorldAction dispatcher action-->
<!--dispatcher action forward /htmls/user.jsp, ,user.jsp dispatcher action -->
<!-- URL dispatcher action URL-->
<result name="success" type="redirectAction">dispatcher</result>
</action>
<action name="redirectAction2" class="com.tom.actions.HelloWorldAction" method="executeAction">
<result name="success" type="redirectAction">
<param name="actionName">otherAction</param>
<param name="namespace">otherNamespace</param>
</result>
</action>
</package>
<package name="other" namespace="/resultType/otherNamespace" extends="struts-default">
<!--redirectAction2 , action namespace redirectAction2 namespace -->
<action name="otherAction">
<!-- ActionSupport user.jsp, ActionSupport message, user.jsp message -->
<result>/htmls/user.jsp</result>
</action>
</package>
</struts>
전역 (package 범위 의) result
하나의 항목 에 있어 서 일부 result 의 설정 은 하나의 가방 에 국한 되 는 것 이 아니 라 통 일 된 것 입 니 다. 예 를 들 어 < result name = "error" > error. jsp > / result > 는 전체 프로젝트 가 통용 되 어야 합 니 다. Struts 는 global result 의 설정 을 제공 합 니 다.
<global-results>
<result name="error">error.jsp</result>
<result name="exception">exception.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Throwable" result="exception">
</exception-mapping>
</global-exception-mappings>
안 타 깝 게 도 global - results 와 global - exception - mappings 는 package 단계 로 만 정의 할 수 있 습 니 다. 즉, package 의 하위 요소 로 만 정의 할 수 있 습 니 다. package 의 하위 요소 로 정의 한 후에 같은 struts. xml 다른 package 에서 action 은 이러한 항목 등급 의 result 설정 을 사용 할 수 없습니다. 해결 방법 은 추상 적 인 기본 패 키 지 를 정의 하 는 것 입 니 다.이 base 패키지 에서 이 항목 등급 의 전역 설정 을 방지 합 니 다. 그러면 각 가방 을 이 가방 에서 계승 하면 됩 니 다.
1. struts. xml 설정
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="base" namespace="" extends="struts-default" abstract="true">
<global-results>
<result name="error">/htmls/error.jsp</result>
<result name="exception">/htmls/exception.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Throwable" result="exception">
</exception-mapping>
</global-exception-mappings>
</package>
<package name="resultType" namespace="/resultType" extends="base">
<action name="error" class="com.tom.actions.HelloWorldAction" method="errorCall">
<!-- <result type="error"></result> HelloWorldAction error, result -->
</action>
<action name="exception" class="com.tom.actions.HelloWorldAction" method="exceptionCall">
<!-- <result type="exception"></result> HelloWorldAction exception, result -->
</action>
</package>
</struts>
2. HelloWorldAction. java 코드
package com.tom.actions;
public class HelloWorldAction {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String executeAction() {
setMessage("Welcome to the Struts2 world");
return "success";
}
public String errorCall() {
return "error";
}
public String exceptionCall() {
throw new NullPointerException("This is a NPE");
}
}
3.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
apache struts2 취약점 검증이번에는 보안 캠프의 과제였던 apache struts2의 취약성에 대해 실제로 손을 움직여 실행해 보고 싶습니다. 환경 VirtualBox에서 브리지 어댑터 사용 호스트:macOS 10.12 게스트:ubuntu 1...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.