Struts 2 및 Tiles 통합
이 장에서는 Tiles 프레임 워크를 Struts2와 통합하는 단계를 살펴 보겠습니다. Apache Tiles는 웹 애플리케이션 사용자 인터페이스의 개발을 단순화하기 위해 구축 된 템플릿 프레임 워크입니다.
먼저 Apache Tiles 웹 사이트 에서 tiles jar 파일을 다운로드해야합니다 . 프로젝트의 클래스 경로에 다음 jar 파일을 추가해야합니다.
- tiles-api-x.y.z.jar
- tiles-compat-x.y.z.jar
- tiles-core-x.y.z.jar
- tiles-jsp-x.y.z.jar
- tiles-servlet-x.y.z.jar
위의 것 외에도 struts2 다운로드에서 다음 jar 파일을 복사해야합니다. WEB-INF/lib.
- commons-beanutils-x.y.zjar
- commons-digester-x.y.jar
- struts2-tiles-plugin-x.y.z.jar
이제 설정하겠습니다. web.xmlStruts-Tiles 통합을 위해 아래와 같이 제공됩니다. 여기서 주목해야 할 두 가지 중요한 점이 있습니다. 먼저 타일 구성 파일을 찾을 위치를 타일에 알려야합니다.tiles.xml. 우리의 경우에는/WEB-INF폴더. 다음으로 Struts2 다운로드와 함께 제공되는 Tiles 리스너를 초기화해야합니다.
<?xml version = "1.0" Encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns = "http://java.sun.com/xml/ns/javaee"
xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id = "WebApp_ID" version = "2.5">
<display-name>Struts2Example15</display-name>
<context-param>
<param-name>
org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
</param-name>
<param-value>
/WEB-INF/tiles.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.apache.struts2.tiles.StrutsTilesListener
</listener-class>
</listener>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
다음으로 tiles.xml / WEB-INF 폴더 아래에 다음 내용이 있습니다.
<?xml version = "1.0" Encoding = "UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name = "baseLayout" template="/baseLayout.jsp">
<put-attribute name = "title" value = "Template"/>
<put-attribute name = "banner" value = "/banner.jsp"/>
<put-attribute name = "menu" value = "/menu.jsp"/>
<put-attribute name = "body" value = "/body.jsp"/>
<put-attribute name = "footer" value = "/footer.jsp"/>
</definition>
<definition name = "tiger" extends = "baseLayout">
<put-attribute name = "title" value = "Tiger"/>
<put-attribute name = "body" value = "/tiger.jsp"/>
</definition>
<definition name = "lion" extends = "baseLayout">
<put-attribute name = "title" value = "Lion"/>
<put-attribute name = "body" value = "/lion.jsp"/>
</definition>
</tiles-definitions>
다음으로 기본 골격 레이아웃을 baseLayout.jsp. 5 개의 재사용 가능 / 재정의 가능 영역이 있습니다. 즉title, banner, menu, body 과 footer. baseLayout에 대한 기본값을 제공 한 다음 기본 레이아웃에서 확장되는 두 가지 사용자 지정을 만듭니다. 타이거 레이아웃은 기본 레이아웃과 비슷하지만tiger.jsp본문과 제목으로 "Tiger"라는 텍스트가 있습니다. 마찬가지로, 사자 레이아웃은 기본 레이아웃과 비슷하지만lion.jsp 본문과 제목으로 "Lion"이라는 텍스트가 있습니다.
개별 jsp 파일을 살펴 보겠습니다. 다음 내용은baseLayout.jsp 파일-
<%@ taglib uri = "http://tiles.apache.org/tags-tiles" prefix = "tiles"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset = UTF-8">
<title>
<tiles:insertAttribute name = "title" ignore="true" />
</title>
</head>
<body>
<tiles:insertAttribute name = "banner" /><br/>
<hr/>
<tiles:insertAttribute name = "menu" /><br/>
<hr/>
<tiles:insertAttribute name = "body" /><br/>
<hr/>
<tiles:insertAttribute name = "footer" /><br/>
</body>
</html>
여기에서는 타일 속성이있는 기본 HTML 페이지를 모았습니다. 필요한 곳에 타일 속성을 삽입합니다. 다음으로banner.jsp 다음 내용의 파일-
<img src="http://www.tutorialspoint.com/images/tp-logo.gif"/>
그만큼 menu.jsp 파일에는 TigerMenu.action 및 LionMenu.action struts 작업에 대한 링크 인 다음 행이 있습니다.
<%@taglib uri = "/struts-tags" prefix = "s"%>
<a href = "<s:url action = "tigerMenu"/>" Tiger</a><br>
<a href = "<s:url action = "lionMenu"/>" Lion</a><br>
그만큼 lion.jsp 파일 내용은 다음과 같습니다-
<img src="http://upload.wikimedia.org/wikipedia/commons/d/d2/Lion.jpg"/>
The lion
그만큼 tiger.jsp 파일 내용은 다음과 같습니다-
<img src="http://www.freewebs.com/tigerofdarts/tiger.jpg"/>
The tiger
다음으로 액션 클래스 파일을 생성하겠습니다. MenuAction.java 다음을 포함하는-
package com.tutorialspoint.struts2;
import com.opensymphony.xwork2.ActionSupport;
public class MenuAction extends ActionSupport {
public String tiger() { return "tiger"; }
public String lion() { return "lion"; }
}
이것은 매우 간단한 수업입니다. 우리는 각각 tiger와 lion을 결과로 반환하는 두 개의 메소드 tiger ()와 lion ()을 선언했습니다. 모두 함께 넣어 보겠습니다.struts.xml 파일-
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name = "default" extends = "struts-default">
<result-types>
<result-type name = "tiles"
class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name = "*Menu" method = "{1}"
class = "com.tutorialspoint.struts2.MenuAction">
<result name = "tiger" type = "tiles">tiger</result>
<result name = "lion" type = "tiles">lion</result>
</action>
</package>
</struts>
위 파일에서 우리가 무엇을했는지 확인합시다. 우선, 뷰 기술에 일반 jsp 대신 타일을 사용하고 있으므로 "타일"이라는 새로운 결과 유형을 선언했습니다. Struts2는 Tiles View 결과 유형을 지원하므로 "org.apache.struts2.view.tiles.TilesResult"클래스가 될 결과 유형 "tiles"를 생성합니다.
다음으로, 요청이 /tigerMenu.action에 대한 것인지 사용자를 호랑이 타일 페이지로 이동하고 /lionMenu.action에 대한 요청 인 경우 사용자를 사자 타일 페이지로 이동한다고 말하고 싶습니다.
우리는 약간의 정규 표현식을 사용하여 이것을 달성합니다. 액션 정의에서 "* Menu"패턴과 일치하는 모든 것이이 액션에 의해 처리된다고 말합니다. 일치하는 메서드는 MenuAction 클래스에서 호출됩니다. 즉, tigerMenu.action은 tiger ()를 호출하고 lionMenu.action은 lion ()을 호출합니다. 그런 다음 결과 결과를 적절한 타일 페이지에 매핑해야합니다.
이제 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 Export > WAR FileWar 파일을 만듭니다. 그런 다음 Tomcat의 webapps 디렉토리에이 WAR을 배포합니다. 마지막으로 Tomcat 서버를 시작하고 URL에 액세스하십시오.http://localhost:8080/HelloWorldStruts2/tigerMenu.jsp. 다음 화면이 생성됩니다.
마찬가지로 lionMenu.action 페이지로 이동하면 동일한 타일 레이아웃을 사용하는 라이온 페이지가 표시됩니다.