В этом руководстве мы покажем, как разрабатывать веб-приложение 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]