poniedziałek, 21 kwietnia 2014

Podstawy Apache Struts 2

W tym artykule postaram się przedstawić użycie technologii Apache Struts 2.

Pierwszym krokiem będzie stworzenie serwera Apache tomcat. W tym celu z menu widoku Servers wybieramy New-Server.


Jeśli w liście rozwijanej Server runtime environment nie mamy do wyboru serwera, musimy go dodać klikając Add, a następnie wskazać lokalizację serwera.

Następnym krokiem będzie stworzenie projektu aplikacji. Wchodzimy w File-New-Dynamic Web Project


Ustawiamy konfigurację jak wyżej. Następnie w WebContent-WEB-INF-lib dodajemy pliki jar:


Kolejnym krokiem jest stworzenie klasy, która będzie naszą akcją.  

package com.blogspot.justdiscoverit;

public class LoginAction {
	private String username;
	private String password;

	public String execute() {

		if (this.username.equals("Admin") && this.password.equals("admin1")) {
			return "success";
		} else {
			return "error";
		}
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
}
W powyższej klasie mamy dwa pola, oraz metody get i set do każdego z nich. Ponadto mamy także metodę execute() w której sprawdzamy, czy pola mają odpowiednie wartości i w zależności od wyniku zwracamy wartość String "success" albo "error". Teraz potrzebujemy dwa pliki: Login.jsp oraz Welcome.jsp:

Login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<body>
<s:form action="login" method="post">
<s:textfield name="username" key="label.username" />
<s:password name="password" key="label.password" />
<s:submit method="execute" key="label.login" />
</s:form>
</body>
</html>

Welcome.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<body>
<h2>
Hello <s:property value="username" /> !
</h2>
</body>
</html>

Ważne jest, aby w każdym pliku znajdował się kod:

<%@ taglib prefix="s" uri="/struts-tags"%>

Plik Welcome.jsp jest bardzo prosty, pobiera on tylko wartość pola username poprzed wywałanie metody getUsername() z klasy LoginAction.

W pliku Login.jsp w znaczniku form znajduje się wpis action="login" dzięki któremu zostanie dopasowana odpowienia klasa zdefiniowana w pliku struts.xml

Następnie dodajemy do projektu New-Source Folder i nadajemy mu nazwę resources. W dodajemy tam plik o nazwie ApplicationResources.properties a w jego zawartości umieszczamy:

label.username= User

label.password= Password

label.login= Login
Wartości te będą wykorzystywane w plikach JSP.

W tym samym katalogu tworzymy plik struts.xml i umieszczamy w nim następujący kod:

<?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.devMode" value="false" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources" />

<package name="default" extends="struts-default">
<action name="login" class="com.blogspot.justdiscoverit.LoginAction">
<result name="success">Welcome.jsp</result>
<result name="error">Login.jsp</result>
</action>
</package>
</struts>

Wszystkie definiowane wpisy trzeba umieszczać w <struts> .. </struts>. Możemy tam definiować pakiety, a w nich definiować nowe akcje. Mamy tutaj zdefiniowaną akcję o nazwie login oraz zdefiniowane odwołanie do klasy, która jest przypisana do tej nazwy, czyli w tym przypadku klasa LoginAction. Mamy zdefiniowane także możliwe rezultatu działania tej akcji - success oraz error - i w zależności od wyniku działania zostaniemy przekierowani do pliku Welcome.jsp lub Login.jsp.

Ostatnim krokiem jest edycja pliku web.xml znajdującego się w WebContent-WEB-INF. Jeśli go tam nie ma, należy go stworzyć i umieścić następujący kod:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>Struts2 Application</display-name>
    <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>
    <welcome-file-list>
        <welcome-file>Login.jsp</welcome-file>
    </welcome-file-list>

</web-app>

Po uruchomieniu naszej aplikacji na serwerze i wpisaniu http://localhost:8080/Struts2/Login.jsp otrzymamy formularz do logowania:


Jeśli wpiszemy wartości, które będą zgadzały się z tymi zdefiniowanymi w klasie LoginAction, zostaniemy przekierowaniu do Welcome.jsp i w wyniku otrzymamy:


To wszystko :) Mam nadzieję, że udało mi się choć trochę przybliżyć działanie technologii Apache Struts2.

Brak komentarzy:

Prześlij komentarz