410013796724260
• Webmoney
R335386147728
Z369087728698
Пример Struts2 wellcomeВ статье рассматривается разработка простого примера с использованием фреймворка Struts2. При разработке примера были определены :
В примере использован фильтр SetCharacterEncodingFilter, который позволяет на уровне настройки приложения в файле web.xml решить вопрос с кириллицей. Структура проекта в IDE Eclipse представлена на следующем скриншоте.
1. Дескриптор приложения web.xmlВ десрипторе приложения подключен фильтр StrutsPrepareAndExecuteFilter для обработки запросов фреймворком Struts2. Кроме этого используется фильтр SetCharacterEncodingFilter для определения кодировки запросов и ответов браузеров в UTF-8.
<?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/j2ee"
xmlns:web="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd
http://xmlns.jcp.org/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_9" version="2.4">
<display-name>Struts 2 Example</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
В предыдущих версиях Struts2 использовался FilterDispatcher. В примере используется версия struts2-core-2.5-BETA3.jar, которая считает FilterDispatcher deprecated, и просит перейти к StrutsPrepareAndExecuteFilter. StrutsPrepareAndExecuteFilter перехватывает все обращения браузера клиента к серверу, подобно сервлетному фильтру для их обработки во фреймворке Struts2. 2. Определение действия в файле конфигурации 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="default" namespace="" extends="struts-default">
<action name="HelloWorld" class="example.HelloWorldAction">
<result name="SUCCESS">/success.jsp</result>
</action>
</package>
</struts>
Внутри тега <struts> располагаются пакеты (<package>) действий, которые имеют общие свойства в рамках одной области (namespace). namespace занимает особое место в описании пакета и может использоваться в обращении к действиям пакета. В данном файле конфигурации описано действие HelloWorld класса HelloWorldAction.java . Если действие вернет значение SUCCESS, то фреймворк перенаправит запрос на страницу success.jsp. Атрибуты для тега <package>
3. Действие HelloWorldAction.javaДействия (action) - это основной строительный элемент фреймворка. Struts2 это действие-ориентированный фреймворк, и действия выполняют основную работу при обработке HTTP запроса пользователя к приложению. Листинг класса HelloWorldAction.java
package example;
public class HelloWorldAction
{
private String userName = null;
private String message;
public HelloWorldAction() {}
public String execute()
{
setMessage ("Добро пожаловать, " + getUserName());
return "SUCCESS";
}
public String getMessage ()
{
return message;
}
public void setMessage ( String message )
{
this.message = message;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
4. Страница index.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>Добро пожаловать!</title>
</head>
<body>
<s:form action="HelloWorld" >
<s:textfield name="userName" label="Ваше имя" />
<s:submit />
</s:form>
</body>
</html>
Следующий код <%@ taglib prefix="s" uri="/struts-tags" %> подключает библиотеку тегов Struts2. при нажатии на кнопку Submit серверу будет передано Ваше имя в текстовом поле userName и выполнено действие HelloWorld. На следующем скриншоте представлен интерфейс страницы.
На странице необходимо ввести свое имя и нажать кнопку Submit. 5. Страница success.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>Struts приветствует Вас</title>
</head>
<body>
<h1><s:property value="message" /></h1>
<i>Приветствие от Struts2</i>
</body>
</html>
Тег <s:property value="message"/> отображает свойство message действия HelloWorldAction. На следующем скриншоте представлен интерфейс страницы success.jsp.
После выполнения всех шагов можно тестировать пример. Для этого необходимо открыть страницу Скачать примерИсходный код примера, рассмотренного в тексте страницы, можно скачать здесь (5.2 Мб). |
