В этом руководстве мы покажем, как разрабатывать веб-приложение Struts 2 в среде Google App Engine (GAE).
Используемые инструменты и технологии:
, JDK 1.6
, Eclipse 3.7 Плагин Google для Eclipse
, Google App Engine Java SDK 1.6.3.1
, Struts 2.3.1.2
1. Новый проект веб-приложения
В Eclipse создайте новый проект веб-приложения с именем Struts2GoogleAppEngine.
Плагин Google для Eclipse создаст образец структуры проекта GAE. Позже мы покажем вам, как интегрировать Struts2 с этим сгенерированным проектом GAE.
2. Интегрировать библиотеки Struts 2
Получите следующие библиотеки зависимостей Struts 2, download Struts2 здесь .
-
asm-3.3.jar
-
asm-commons-3.3.jar
-
asm-tree-3.3.jar
-
commons-fileupload-1.2.2.jar
-
commons-io-2.0.1.jar
-
commons-lang-2.5.jar
-
freemarker-2.3.18.jar
-
javassist-3.11.0.GA.jar
-
ognl-3.0.4.jar
-
struts2-core-2.3.1.2.jar
-
xwork-core-2.3.1.2.jar
Поместите все в папку « war/WEB-INF/lib ».
Щелкните правой кнопкой мыши папку проекта, выберите « Свойства » → « Java Build Path » → вкладку « Библиотеки », нажмите кнопку « Добавить банки » и выберите более 11 банок из « war/WEB». -INF/lib ”в путь сборки.
3. Интегрировать код Struts 2
3.1 Удалите сгенерированный файл Struts2GoogleAppEngineServlet.java, он вам не нужен.
3.2 Создать новый класс действий Struts 2.
Файл: src/com/mkyong/user/action/WelcomeUserAction.java
package com.mkyong.user.action; public class WelcomeUserAction { private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String execute() { return "SUCCESS"; } }
3.3 Создайте класс слушателя и установите для ognl security значение null.
-
Примечание ** Struts 2 нужен этот слушатель для запуска в среде GAE. Прочитайте это - Issues при развертывании Struts 2 в GAE и ссылку://google-app-engine/strurts- 2-на-GAE-ошибок на результат нуль-не обретенной/[Error:
результат "null" не найден]
Файл: src/com/mkyong/listener/Struts2 Listener InGAE.java
package com.mkyong.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import ognl.OgnlRuntime; public class Struts2ListenerOnGAE implements ServletContextListener, HttpSessionListener, HttpSessionAttributeListener { public void contextInitialized(ServletContextEvent sce) { OgnlRuntime.setSecurityManager(null); } @Override public void contextDestroyed(ServletContextEvent arg0) { //TODO Auto-generated method stub } @Override public void sessionCreated(HttpSessionEvent arg0) { //TODO Auto-generated method stub } @Override public void sessionDestroyed(HttpSessionEvent arg0) { //TODO Auto-generated method stub } @Override public void attributeAdded(HttpSessionBindingEvent arg0) { //TODO Auto-generated method stub } @Override public void attributeRemoved(HttpSessionBindingEvent arg0) { //TODO Auto-generated method stub } @Override public void attributeReplaced(HttpSessionBindingEvent arg0) { //TODO Auto-generated method stub } }
3.4 Чтобы запустить проект Struts2 в локальной среде GAE, вы должны создать класс
TextBlock
и перегрузить исходный класс` TextBlok`, в противном случае вы получите сообщение об ошибке «javax.swing.tree.TreeNode is is this». Надеюсь, что команда Struts2 может исправить это в будущем выпуске.
-
Исходный код TextBlock ** + Перейдите по этой ссылке по ссылке://google-app-engine/javax-swing-tree-treenode-is-a-limited-class/[загрузить исходный код TextBlock].
3.5. Просмотрите структуру каталогов проекта.
4. Интегрировать Struts 2 страницы
4.1 Создайте страницу
login.jsp
, чтобы принимать пользовательский ввод.
File: war/User/pages/login.jsp
<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head></head> <body> <h1>GAE + Struts 2 Example</h1> <s:form action="Welcome"> <s:textfield name="username" label="Username"/> <s:password name="password" label="Password"/> <s:submit/> </s:form> </body> </html>
4.2 Создать страницу
welcome__user.jsp
.
File: war/User/pages/welcome user.jsp__
<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head></head> <body> <h1>GAE + Struts 2 Example</h1> <h2>Hello <s:property value="username"/></h2> </body> </html>
4.3 Еще раз просмотрите структуру каталогов проекта.
5. Struts XML-конфигурация
Создайте файл
struts.xml
и поместите в«
src/struts.xml
«.
Файл: 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> <package name="user" namespace="/User" extends="struts-default"> <action name="Login"> <result>pages/login.jsp</result> </action> <action name="Welcome" class="com.mkyong.user.action.WelcomeUserAction"> <result name="SUCCESS">pages/welcome__user.jsp</result> </action> </package> </struts>
6. web.xml
Обновите
web.xml
, интегрируйте Struts2 и настройте прослушиватель безопасности ognl.
File: web.xml
<?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" version="2.5"> <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> <listener> <listener-class> com.mkyong.listener.Struts2ListenerOnGAE </listener-class> </listener> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
7. Структура каталогов
Просмотрите окончательную структуру каталогов.
8. Запустить на локальном
Готово, время для тестирования. Щелкните правой кнопкой мыши по проекту, запустите « Веб-приложение ».
URL: http://localhost : 8888/User/Login.action
9. Развертывание на GAE
Обновите appengine-web.xml, введите идентификатор приложения App Engine.
<?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application>mkyong-struts2gae</application> <version>1</version> <!-- Configure java.util.logging --> <system-properties> <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/> </system-properties> </appengine-web-app>
Выберите проект, нажмите на иконку Google, « Deploy to App Engine ». Плагин Google для Eclipse автоматически развернет все необходимые файлы для производства GAE.
Во время развертывания следующие похожие сообщения будут отображаться в представлении консоли Eclipse.
------------ Deploying frontend ------------ Подготовка к развертыванию: Создан промежуточный каталог по адресу: 'C: \ Users \ mkyong \ AppData \ Local \ Temp \ appcfg7432687551.tmp' Поиск файлов jsp. Компиляция файлов JSP. Сканирование файлов на локальном диске. Начальное обновление. Клонирование 2 статических файлов. Клонирование 46 файлов приложений. Развертывание: Загрузка 12 файлов. Загрузил 3 файла. Загрузил 6 файлов. Загрузил 9 файлов. Загрузил 12 файлов. Инициализация прекомпиляции ... Отправка пакета, содержащего 11 файла (ов) общим объемом 44KB. Отправка пакета, содержащего 1 BLOB-объект (ы) общим объемом 1 КБ. Развертывание новой версии. Проверка доступности: Проверим снова через 1 секунду. Проверим снова через 2 секунды. Проверим снова через 4 секунды. Закрытие обновления: новая версия готова начать обслуживание. Обновление хранилища данных: Загрузка определений индекса. Развертывание завершено успешно
Изображение://wp-content/uploads/2012/04/gae-struts2-example10-deploy-gae.png[GAE
Пример использования Struts2
GAE, название = "GAE-struts2-example10-развертывания-GAE", ширина = 583, высота = 357]
Примечание
Наконец-то закончилась эта длинная статья. Общая интеграция не очень
сложно, просто нужно исправить проблемы безопасности Struts2 ognl и TextBlock,
надеюсь, что команда Struts2 сможет это исправить в будущем.
Скачать исходный код
Из-за большого размера файла все банки Struts2 исключены, необходимо скачать его вручную.
Скачать - ссылка://wp-content/uploads/2012/04/Struts2GoogleAppEngine.zip[Struts2GoogleAppEngine.zip](23 КБ)
Рекомендации
, ссылка://struts2/struts-2-hello-world-example/[Struts2 привет мир пример], ссылка://Google-приложение двигатель/Google-приложение-моторно-привет-мир-пример-с использованием затмения/[Google Пример App Engine + Java hello world с использованием Eclipse], Apache Struts , Struts 2 по GAE ссылка://tag/gae/[gae]ссылка://tag/struts2/[struts2]