官术网_书友最值得收藏!

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所示的登錄界面,進而可以測試項目了。

主站蜘蛛池模板: 银川市| 兴化市| 墨脱县| 红安县| 汽车| 宜昌市| 江津市| 宽甸| 宁德市| 博湖县| 巴塘县| 罗城| 四会市| 都昌县| 原阳县| 隆德县| 轮台县| 乐昌市| 博乐市| 蒙山县| 安西县| 瓮安县| 克什克腾旗| 曲周县| 临泉县| 昭通市| 巴南区| 邹平县| 华坪县| 宁蒗| 延津县| 岑巩县| 富民县| 红桥区| 天门市| 荣昌县| 承德市| 瓦房店市| 昭苏县| 垣曲县| 禄劝|