Добро пожаловать в Часть 4 серии из 7 частей, где мы рассмотрим различные аспекты Struts2 Framework с некоторыми полезными примерами. В предыдущей части мы рассмотрели Struts2 Validation Framework . Мы увидели, как легко интегрировать валидацию в ваше приложение struts2.
В этой части мы обсудим Tiles Framework и его интеграцию со Struts2. Мы добавим поддержку Tiles в наше приложение HelloWorld Struts, которое мы создали в предыдущих частях. Я настоятельно рекомендую вам просмотреть предыдущие статьи и загрузить исходный код нашего примера приложения.
Struts 2 Tutorial List
- Часть 1. Введение в Struts 2 Framework
- Часть 2. Создание приложения Hello World в Struts 2
- Часть 3: Руководство по проверке структуры Struts 2 с примером
- Часть 4: Руководство по плагину Struts 2 Tiles с примером
- Часть 5: Руководство по перехватчикам в Struts 2 с примером
- Часть 6: Пример загрузки файла Struts 2 и сохранения
- Часть 7: руководство по Struts 2 Ajax с примером
Введение в Tiles 2
В настоящее время веб-сайт, как правило, делится на части многоразового шаблона, которые отображаются на разных веб-страницах. Например, сайт, содержащий верхний колонтитул, нижний колонтитул, меню и т. Д. Эти элементы остаются неизменными на всем сайте и придают ему общий вид. Очень трудно жестко закодировать это на каждой веб-странице, и если позднее необходимо внести изменения, то все страницы необходимо изменить. Поэтому мы используем механизм шаблонизации. Мы создаем общий колонтитул, нижний колонтитул, страницу меню и включаем его в каждую страницу.
Плагин Tiles позволяет создавать шаблоны и создавать компоненты. На самом деле оба механизма похожи: вы
определяете части страницы («плитки»), которые вы собираете, чтобы создать другую часть или полную страницу. Часть может
принимать параметры, разрешающие динамическое содержимое, и может рассматриваться как метод на языке JAVA. Tiles — это система шаблонов, используемая для поддержания единообразного внешнего вида всех веб-страниц веб-приложения. Это увеличивает возможность повторного использования шаблона и уменьшает дублирование кода.
Общий макет веб-сайта определен в центральном файле конфигурации, и этот макет можно распространить на все веб-страницы веб-приложения.
Наш макет приложения
Наша цель — добавить заголовок, нижний колонтитул и меню в наше приложение StrutsHelloWorld. Ниже будет макет же.
Требуемые файлы JAR
Чтобы добавить поддержку Tiles в наше приложение Struts2, нам потребуется несколько jar-файлов. Ниже приведен список JAR в нашем примере. Добавьте эти файлы JAR в папку WEB-INF / lib.
Настройка плиток в web.xml
Чтобы настроить Tiles, запись для слушателя должна быть сделана в web.xml. Откройте файл web.xml из папки WEB-INF и добавьте в него следующий код.
<listener>
<listener-class>
org.apache.struts2.tiles.StrutsTilesListener
</listener-class>
</listener>
<context-param>
<param-name>tilesDefinitions</param-name>
<param-value>/WEB-INF/tiles.xml</param-value>
</context-param>
Приведенный выше код настраивает прослушиватель Tiles в web.xml. Входной файл конфигурации /WEB-INF/tiles.xml передается в качестве аргумента. Этот файл содержит определение Tiles для нашего веб-приложения.
Создайте файл tile.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="" />
<put-attribute name="header" value="/Header.jsp" />
<put-attribute name="menu" value="/Menu.jsp" />
<put-attribute name="body" value="" />
<put-attribute name="footer" value="/Footer.jsp" />
</definition>
<definition name="/welcome.tiles" extends="baseLayout">
<put-attribute name="title" value="Welcome" />
<put-attribute name="body" value="/Welcome.jsp" />
</definition>
<definition name="/customer.tiles" extends="baseLayout">
<put-attribute name="title" value="Customer Form" />
<put-attribute name="body" value="/Customer.jsp" />
</definition>
<definition name="/customer.success.tiles" extends="baseLayout">
<put-attribute name="title" value="Customer Added" />
<put-attribute name="body" value="/SuccessCustomer.jsp" />
</definition>
</tiles-definitions>
Здесь, в tile.xml, мы определяем шаблон baseLayout . Этот макет содержит такие атрибуты, как заголовок, заголовок, текст, меню и нижний колонтитул. Затем макет расширяется и определяются новые определения для страницы приветствия и страницы клиента. Мы переопределили макет по умолчанию и изменили содержимое для Тела и Заголовка.
Создание JSP
Мы определим шаблон для нашего веб-приложения в файле JSP с именем BaseLayout.jsp. Этот шаблон будет содержать различные сегменты веб-страницы (верхний колонтитул, нижний колонтитул, меню и т. Д.). Создайте 4 новых файла JSP BaseLayout.jsp, Header.jsp, Menu.jsp и Footer.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>
<table border="1" cellpadding="2" cellspacing="2" align="center">
<tr>
<td height="30" colspan="2"><tiles:insertAttribute name="header" />
</td>
</tr>
<tr>
<td height="250"><tiles:insertAttribute name="menu" /></td>
<td width="350"><tiles:insertAttribute name="body" /></td>
</tr>
<tr>
<td height="30" colspan="2"><tiles:insertAttribute name="footer" />
</td>
</tr>
</table>
</body>
</html>
Header.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<h2>Struts2 Example - ViralPatel.net</h2>
Menu.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<s:a href="customer-form">Customer</s:a>
Footer.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
Copyright © ViralPatel.net
Изменения в Struts.xml
В struts.xml мы определили тег результата, который сопоставляет конкретное действие со страницей JSP. Теперь мы изменим его и сопоставим результат с Tiles. Ниже будет содержание файла 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.enable.DynamicMethodInvocation"
value="false" />
<constant name="struts.devMode" value="false" />
<constant name="struts.custom.i18n.resources"
value="ApplicationResources" />
<package name="default" extends="struts-default" namespace="/">
<result-types>
<result-type name="tiles"
class="org.apache.struts2.views.tiles.TilesResult" />
</result-types>
<action name="login"
class="net.viralpatel.struts2.LoginAction">
<result name="success" type="tiles">/welcome.tiles</result>
<result name="error">Login.jsp</result>
</action>
<action name="customer"
class="net.viralpatel.struts2.CustomerAction">
<result name="success" type="tiles">/customer.success.tiles</result>
<result name="input" type="tiles">/customer.tiles</result>
</action>
<action name="customer-form">
<result name="success" type="tiles">/customer.tiles</result>
</action>
</package>
</struts>
Struts.xml теперь определяет новый тип результата для плиток. Этот тип результата используется в теге <result> для различных действий. Также обратите внимание, что мы определили новую форму клиента. Это просто пустое объявление для перенаправления пользователя на страницу формы «Клиент», когда она щелкает ссылку «Клиент» в меню.
Это все люди
Скомпилируйте и выполните приложение в Eclipse и убедитесь, что верхний и нижний колонтитулы меню правильно применены.
Страница приветствия с
клиентской страницей Tiles и
клиентской страницей успеха Tiles
Скачать исходный код
Нажмите здесь, чтобы загрузить исходный код без файлов JAR (11 КБ)
Двигаться дальше
Сегодня мы увидели, как мы можем настроить Tiles Framework с помощью приложения Struts2. В следующей части мы поговорим о перехватчиках Struts2 и увидим пример этого. Надеюсь, вам понравилась эта статья. Не стесняйтесь оставлять свои запросы и комментарии в разделе комментариев.
От: http://viralpatel.net/blogs/