Struts 2-결과 및 결과 유형
앞서 언급했듯이 <results> 태그는 viewStruts2 MVC 프레임 워크에서. 이 작업은 비즈니스 로직을 실행합니다. 비즈니스 로직을 실행 한 후 다음 단계는<results> 꼬리표.
종종 결과와 함께 몇 가지 탐색 규칙이 첨부됩니다. 예를 들어 작업 방법이 사용자를 인증하는 경우 가능한 결과는 세 가지입니다.
- 성공적인 로그인
- 로그인 실패-잘못된 사용자 이름 또는 비밀번호
- 잠긴 계정
이 시나리오에서 작업 방법은 세 가지 가능한 결과 문자열과 세 가지 다른보기로 구성되어 결과를 렌더링합니다. 우리는 이미 이전 예제에서 이것을 보았습니다.
그러나 Struts2는 JSP를 뷰 기술로 사용하는 것과 관련이 없습니다. 결국 MVC 패러다임의 전체 목적은 레이어를 분리하고 고도로 구성 가능한 상태로 유지하는 것입니다. 예를 들어 Web2.0 클라이언트의 경우 XML 또는 JSON을 출력으로 반환 할 수 있습니다. 이 경우 XML 또는 JSON에 대한 새 결과 유형을 만들고이를 달성 할 수 있습니다.
Struts에는 미리 정의 된 여러 result types 우리가 이미 본 것은 기본 결과 유형이었습니다. dispatcher, JSP 페이지로 디스패치하는 데 사용됩니다. Struts를 사용하면보기 기술에 다른 마크 업 언어를 사용하여 결과를 표시 할 수 있으며 인기있는 선택은 다음과 같습니다.Velocity, Freemaker, XSLT 과 Tiles.
디스패처 결과 유형
그만큼 dispatcher결과 유형은 기본 유형이며 다른 결과 유형이 지정되지 않은 경우 사용됩니다. 서버에서 서블릿, JSP, HTML 페이지 등으로 전달하는 데 사용됩니다. RequestDispatcher.forward () 메서드를 사용합니다 .
결과 태그의 본문으로 JSP 경로를 제공 한 이전 예제에서 "축약 형"버전을 확인했습니다.
<result name = "success">
/HelloWorld.jsp
</result>
다음과 같이 <result ...> 요소 내에서 <param name = "location"> 태그를 사용하여 JSP 파일을 지정할 수도 있습니다.
<result name = "success" type = "dispatcher">
<param name = "location">
/HelloWorld.jsp
</param >
</result>
우리는 또한 parse기본적으로 true입니다. parse 매개 변수는 위치 매개 변수가 OGNL 표현식에 대해 구문 분석되는지 여부를 결정합니다.
FreeMaker 결과 유형
이 예에서는 어떻게 사용할 수 있는지 살펴 보겠습니다. FreeMaker보기 기술로. Freemaker는 미리 정의 된 템플릿을 사용하여 출력을 생성하는 데 사용되는 인기있는 템플릿 엔진입니다. 이제 Freemaker 템플릿 파일을 생성하겠습니다.hello.fm 다음 내용으로-
Hello World ${name}
위 파일은 name정의 된 작업을 사용하여 외부에서 전달되는 매개 변수입니다. 이 파일을 CLASSPATH에 보관합니다.
다음으로 struts.xml 다음과 같이 결과를 지정하려면-
<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name = "struts.devMode" value = "true" />
<package name = "helloworld" extends = "struts-default">
<action name = "hello"
class = "com.tutorialspoint.struts2.HelloWorldAction"
method = "execute">
<result name = "success" type = "freemarker">
<param name = "location">/hello.fm</param>
</result>
</action>
</package>
</struts>
HelloWorldAction.java, HelloWorldAction.jsp 및 index.jsp 파일을 예제 장에서 만든대로 유지하겠습니다.
이제 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 Export > WAR File War 파일을 만듭니다.
그런 다음 Tomcat의 webapps 디렉토리에이 WAR을 배포합니다. 마지막으로 Tomcat 서버를 시작하고 URL에 액세스하십시오.http://localhost:8080/HelloWorldStruts2/index.jsp. 그러면 다음 화면이 생성됩니다.
"Struts2"값을 입력하고 페이지를 제출하십시오. 다음 페이지가 보일 것입니다.
보시다시피 이것은 JSP를 뷰 기술로 사용하지 않는다는 점을 제외하면 JSP 뷰와 똑같습니다. 이 예제에서는 Freemaker를 사용했습니다.
리디렉션 결과 유형
그만큼 redirect결과 유형은 표준 response.sendRedirect () 메서드를 호출하여 브라우저가 지정된 위치에 대한 새 요청을 생성하도록합니다.
<result ...> 요소의 본문 또는 <param name = "location"> 요소로 위치를 제공 할 수 있습니다. 리디렉션은 또한parse매개 변수. 다음은 XML을 사용하여 구성된 예입니다.
<action name = "hello"
class = "com.tutorialspoint.struts2.HelloWorldAction"
method = "execute">
<result name = "success" type = "redirect">
<param name = "location">
/NewWorld.jsp
</param >
</result>
</action>
따라서 위에서 언급 한대로 리디렉션 유형을 정의하도록 struts.xml 파일을 수정하고 hello 작업이 성공할 때마다 리디렉션 될 새 파일 NewWorld.jpg를 만듭니다. 더 나은 이해를 위해 Struts 2 Redirect Action 예제를 확인할 수 있습니다 .