- Java EE實用教程
- 鄭阿奇編著
- 2425字
- 2018-12-30 08:34:15
2.3 Struts 2項目開發
本節先用Struts 2的基本知識開發一個簡單的登錄系統,運行項目會出現如圖2.4所示的界面,輸入姓名和密碼后,進入如圖2.5所示的歡迎界面。

圖2.4 用戶登錄界面

圖2.5 歡迎界面
下面將開始進行開發,讀者如果對有些問題不是很明白,沒關系,后面會對所有的內容進行詳細講解,這里主要讓讀者能夠明白其基本應用及流程。
1.Struts 2下載
MyEclipse 6沒有對Struts 2的支持,所以需要自己下載Struts 2開發包。登錄“http://struts.apache.org/”,下載Struts 2完整版,筆者編寫本書時Struts 2的最高版本是Struts 2.0.14,故本書使用的Struts 2版本為Struts 2.0.14。將下載的Zip文件解壓縮,它是一個典型的Web結構。打開其文件夾,里面大致包含了以下幾個文件。
● apps:存放基于Struts 2的示例應用,是學習Struts 2非常有用的資料。
● docs:存放Struts 2的相關文檔,如Struts 2的快速入門、Struts 2的文檔、API文檔等內容。
● lib:存放Struts 2框架的核心類庫,以及Struts 2的第三方插件類庫。
● src:存放Struts 2框架的全部源代碼。
2.創建項目,添加Struts 2開發能力
打開MyEclipse,依次選擇“File”→“New”→“Project…”,彈出新建命令對話框,選擇“MyEclipse”→“Java Enterprise Projects”→“Web Project”,單擊“Next”按鈕進入下一步Web應用詳細信息設置,在“Project Name”文本框中輸入Web應用名稱,這里取名為“Struts 2”,在“J2EE Specification Level”一欄中選擇“Java EE 5.0”,其他保留默認值,如圖2.6所示,單擊“Finish”按鈕完成。

圖2.6 建立Web項目
項目建好以后,就可以加載Struts 2的類庫了,在一般的Struts 2的開發中,只需要加載必需的5個類庫,它們分別是:struts2-core-2.0.14.jar、xwork-2.0.7.jar、common-logging-1.0.4.jar、freemarker-2.3.8.jar及ognl-2.6.11.jar。類庫中后面的編號是版本,如果用了不同的版本,版本號也會有所不同。
右擊項目名,依次選擇“Build Path”→“configure Build Path…”,出現“Properties for Struts 2”對話框,選擇“Libraries”欄后,單擊右邊的“Add External JARs…”,就會出現讓用戶選擇類庫的對話框,找到下載的Struts 2文件夾下的lib文件夾,選中上面說的5個類庫后,這5個類庫就會出現在“Properties for Struts 2”對話框中,如圖2.7所示。

圖2.7 “Properties for Struts 2”對話框
單擊“OK”后,Struts 2需要的類庫就加載到了項目中,但這種方法是加載了所需類庫在計算機中的位置,即相對路徑。如果把項目換到另一臺計算機,而在另一臺計算機中在該路徑下沒有Struts 2的類庫,項目就會找不到類庫了。所以還有一種方法就是直接把需要的類庫放到項目的lib下,項目的lib文件夾位于項目的WebRoot/WEB-INF下,只需把需要的類庫復制到該文件夾下即可。
下面簡要介紹這5個類庫的作用。
(1)struts2-core-2.0.14.jar:Struts 2的核心類庫。
(2)xwork-2.0.7.jar:xwork項目,Struts 2就是在此基礎上構建的。
(3)common-logging-1.0.4.jar:用于插入其他的日志系統。
(4)freemarker-2.3.8.jar:所有的Struts 2的UI標簽模板(標簽會在后面詳細講解)。
(5)ognl-2.6.11.jar:OGNL表達式語言(會在后面章節中詳細講解)。
3.配置web.xml
web.xml在建立項目時就存在了,位于項目的WebRoot/WEB-INF/下,打開該文件,代碼修改為:
<?xml version="1.0"encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
其中,“<welcome-file-list>…</welcome-file-list>”中設置項目運行時的歡迎界面,<web-app>標簽配置了一些xml文件的屬性及引用。標簽里面配置了過濾器。該內容會在后面講解,這里先了解即可。
4.創建struts.xml
大家在學習JSP的時候已經接觸過Web項目,在Web項目的WebRoot/WEB-INF/下不但有lib文件夾,還有classes文件夾,該文件夾下存放項目編譯后的類文件。一些配置文件也會放在其中,Struts 2要求struts.xml放在classes文件夾下,所以需要在該文件夾下建立struts.xml文件。由于使用MyEclipse工具,只需在項目的src下建立struts.xml文件,該文件就會被自動編譯到項目的classes文件夾下,方便了編程。
右擊src,依次選擇“New”→“file”,在出現的對話框的“File name”的輸入框中輸入“struts.xml”,單擊“finish”完成,打開該文件,輸入下面的代碼:
<?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"extends="struts-default"> ... </package> </struts>
該文件在項目運行時會自動加載,其中省略號部分后面要加入“<action>”配置。該文件的解釋也會在后面的章節中詳細講解。
5.編寫LoginAction.java
該Action類是用戶自定義類,它完成用戶想要完成的功能,比如判斷用戶名和密碼的正確性等,這里其代碼編寫為:
package org.action; public class LoginAction{ private String username; private String password; 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; } public String execute(){ return"success"; //不做任何判斷直接返回“success” } }
可以發現,該類放在“org.action”包中,在程序中把類放到包中是一個好的習慣,這樣可以把同一類型的類放在同一包中,不容易混淆,便于找到程序員要找到的類。該類是一個普通的POJO類,沒有繼承或實現任何的類或接口。該類中有兩個屬性,并生成它們的get和set方法,還有一個普通的方法,直接返回“success”。
既然是用戶自定義實現功能的類,那么怎么和請求映射關聯起來呢?通俗地說,就是系統怎么找到這個類,并且在什么時候應用這個類,這就需要“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="default" extends="struts-default"> <action name="login"class="org.action.LoginAction"> <result name="success">/welcome.jsp</result> </action> </package> </struts>
這表示凡是請求“name”為“login”的都要用“class”對應的類來處理。而“result”中則表示如果類中返回“success”就跳轉到“welcome.jsp”頁面。
6.創建視圖login.jsp
從圖2.4 中可以看出,登錄界面非常簡單,右擊WebRoot文件夾,依次選擇“New”→“JSP”,在出現的對話框的“File name”輸入框中輸入“login.jsp”,單擊“finish”完成。其代碼實現為:
<%@page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>登錄頁面</title> </head> <body> <form action="login.action" method="post"> <table align="center"border=1 width="300"bgcolor=#F5FFE1> <tr><td colspan="2"align="center" width="250"bgcolor="#CCCCFF">用戶登錄界面</td></tr> <tr><td width="50">姓名:</td><td><input type="text" name="username"/></td></tr> <tr><td width="50">密碼:</td><td><input type="password"name="password"size=22/></td></tr> <tr><td align="center"colspan=2><input type="submit"value="登錄"/> <input type="reset"value="重置"/></td></tr> </table> </form> </body> </html>
登錄界面的表單中“action”的值為“login.action”,這就會與“struts.xml”中“action”配置對應上,表示該請求將由自定義的“LoginAction.java”這個類來處理。
7.創建成功視圖welcome.jsp
成功界面很簡單,里面用了一個EL表達式來取用戶登錄的姓名。其中原理會在OGNL章節中講述。該JSP文件的建立與“login.jsp”類似,名稱改變而已。代碼為:
<%@page language="java"pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>歡迎界面</title> </head> <body bgcolor=#F5FFE1> 歡迎您!${username} </body> </html>
8.部署運行
要運行一個項目,必須把項目部署到服務器中(本書應用Tomcat為服務器),部署項目的步驟為:單擊MyEclipse菜單欄的圖標,出現如圖2.8所示的對話框。

圖2.8 部署項目的對話框
在“Project”欄的下拉列表中選擇要部署的項目,然后單擊右邊的“Add”按鈕,出現如圖2.9所示的對話框,讓用戶選擇服務器。該對話框的“Web Project”的值是要部署的項目,“Server”欄即是讓用戶選擇服務器。選擇“Tomcat 6.x”服務器,單擊“Finish”完成。
這時圖2.8所示的界面就會出現部署的項目,并且前面有個藍色的“”圖標,表示部署成功了,如圖2.10所示,單擊“OK”完成。大家可以打開Tomcat安裝目錄下的webapps,就會找到剛剛部署的項目。

圖2.9 選擇服務器

圖2.10 項目部署成功
項目部署完成后,就可以啟動服務器了。單擊MyEclipse菜單欄的圖標的下拉箭頭,依次選擇“Tomcat 6.x”→“Start”,就會啟動Tomcat服務器,服務器啟動完成后就可以運行項目了。在瀏覽器的地址欄輸入“http://localhost:8080/Struts2/login.jsp”,會出現如圖2.4所示的登錄界面,進而可以測試項目了。
- Go Web編程
- 軟件安全技術
- JavaScript百煉成仙
- Game Programming Using Qt Beginner's Guide
- 少年輕松趣編程:用Scratch創作自己的小游戲
- Wireshark Network Security
- 營銷數據科學:用R和Python進行預測分析的建模技術
- ADI DSP應用技術集錦
- QTP自動化測試進階
- Scientific Computing with Scala
- Oracle Exadata專家手冊
- PHP 7+MySQL 8動態網站開發從入門到精通(視頻教學版)
- 常用工具軟件立體化教程(微課版)
- Python Data Science Cookbook
- HTML+CSS+JavaScript網頁設計從入門到精通 (清華社"視頻大講堂"大系·網絡開發視頻大講堂)