Apache Struts 2入門指南
本文使用最新的Struts 2.3.24.1版,演示了怎樣用Apache Struts 2構建最基本的Web應用。
項目的基本需求:
1)Maven 3.3.3
2)Eclipse Mars.1 Release (4.5.1)
3)Struts 2.3.24.1
一、項目的主體結構
1、新建一Maven項目
Group Id:com.ch.common
Artifact Id:Struts2Example
Packaging:war
2、解決Maven Web項目的一個錯誤
鼠標右鍵點擊項目,選擇”Java EE Tools”->”enerate Deployment Descriptor Stub”,會自動產生WEB-INF子目錄和web.xml配置文件。
3、導入Struts 2依賴包
項目pom.xml內容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ch.common</groupId> <artifactId>Struts2Example</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.24.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>Struts2Example</finalName> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
4、項目的主體結構如下圖所示
二、JSP頁面
1、編寫JSP登錄頁面
包括輸入用戶名和密碼的輸入框、提交按鈕等。
login.jsp
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head></head> <body> <h1>Struts 2 Hello World Example</h1> <s:form action="Welcome"> <s:textfield name="username" label="Username" /> <s:password name="password" label="Password" /> <s:submit /> </s:form> </body> </html>
2、編寫JSP歡迎頁面
登錄成功后,進入歡迎頁面。
welcome_user.jsp
<%@ page contentType="text/html; charset=UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head></head> <body> <h1>Struts 2 Hello World Example</h1> <h2> Hello <s:property value="username" /> </h2> </body> </html>
3、編寫業務邏輯Action類
Struts 2的Action類,負責所有的業務邏輯。
WelcomeUserAction.java
package com.ch.user.action; public class WelcomeUserAction { private String username; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } // Struts業務邏輯放這里 public String execute(){ return "SUCCESS"; } }
在Struts 2中,Action類無需實現任何借口或繼承任何類,唯一的要求就是它必須創建一個execute()方法來放置所有的業務邏輯,并且此方法必須返回String類型的字符串,告知用戶它要重定向到哪里。
注意:有些開發者實現了com.opensymphony.xwork2.Action類,這取決于你的需求和應用場景,這個類提供了常用的常量值。
4、Struts 2的配置文件
Struts 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="user" namespace="/pages" extends="struts-default"> <action name="Login"> <result>login.jsp</result> </action> <action name="Welcome" class="com.ch.user.action.WelcomeUserAction"> <result name="SUCCESS">welcome_user.jsp</result> </action> </package> </struts>
Struts配置文件聲明了一個包(Package)和封裝的Action類,Action類是自解釋的,下面對配置中的一些內容做一說明:
1)package name=”user”
僅僅定義了一個包名,無需關心它。
2)namespace=”/pages”
這用于匹配URL為“/”的訪問路徑。
3)extends=”struts-default”
意思是此包繼承自struts-default包組件和攔截器,而這些是在struts-default.xml文件中聲明的,這個配置文件位于struts2-core.jar文件中。
5、web.xml配置
Web應用描述符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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Struts 2 Web 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>pages/login.jsp</welcome-file> </welcome-file-list> </web-app>
6、運行項目
對于Struts 2 Web項目,可以通“.action”后綴直接訪問Action。
瀏覽器訪問:http://localhost:8080/Struts2Example/pages/Login.action
或者是訪問:http://localhost:8080/Struts2Example/pages/login.jsp
任意輸入用戶名和密碼,
可以看到,訪問正常!