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 Мб). |