SSH框架之struts2專題1:Struts2入門

1 Struts2入門

1.1 Struts2簡介

  • Struts2以WebWork優秀的設計思想爲核心,吸取了Struts框架的部分優勢,提供了一個更加整潔的MVC設計模式實現的Web應用程序框架。

    1.2 Struts2下載與版本

  • Struts2官網:http://struts2.apache.org
  • 版本號的意義:
  • Alpha:內測版,通常不向外部公佈,會有不少bug。
  • Beta:除錯 + 增新,也屬於內測版,可是相對於Alpha版已有很大的改進,消除了嚴重錯誤,可是仍是存在缺陷,須要更多測試來消除。這個階段會加入新的功能。
  • RC:除錯,Release Candidate,發行候選版,外測版。與Beta版的最大區別在於Beta階段會加入新功能,而RC版通常不會加入新的功能,而主要着重於除錯。(RC版本是最終發放給用戶的最接近正式版的版本,發行後改正bug就是正式版了,是正式版以前的最後一個測試版。)
  • GA:General Availability,普通有效版,穩定版,官方開始推薦普遍使用的版本。
  • Release:發行版,即最終版。在一系列測試版以後的正式發行版本,是最終交付用戶使用的一個版本。該版本也稱之爲標準版。Release會以單詞形式出如今軟件封面上,有時候會使用符號R。

    1.3 Struts2的優勢

    一、Struts2是非侵入式設計:Struts2的Action類爲POJO類,不依賴於Servlet API和Struts API。
    二、Struts2提供了攔截器,利用攔截器能夠進行AOP編程,實現如權限攔截等功能。
    三、Struts2提供了類型轉換器,能夠將特殊的請求參數轉換成須要的類型。
    四、Struts2的輸出驗證能夠對指定方法進行驗證。
    五、提供了全局範圍、包範圍和Action範圍的國際化資源文件管理實現。css

    2 Struts2開發環境的搭建

    2.1 Struts2的jar包

  • struts2最基本的jar包,能夠從Struts2框架解壓目錄下的apps中的struts-blank.war中獲取。(所使用的是struts-2.3.24-all.zip版本)
  • 將struts2-blank.war擴展名修改成zip後,解壓。在其WEB-INF\lib中全部Jar即爲Struts2運行的基本Jar包。從使用的兩日誌Jar包中能夠看出,Struts2使用的是Log4j2日誌技術。
    SSH框架之struts2專題1:Struts2入門

    2.2 Struts2的配置文件

  • Struts2的默認配置文件爲struts.xml,該文件需存放在WEB-INF/classes下。即,在myEclipse中應放在src目錄下。
  • Struts2配置文件的頭部能夠從struts2-core-2.3.24.jar下的struts-2.3.dtd中找到。
    SSH框架之struts2專題1:Struts2入門
    SSH框架之struts2專題1:Struts2入門
    SSH框架之struts2專題1:Struts2入門

  • struts.xml內容以下:html

    <?xml version="1.0" encoding="UTF-8"?>
         <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
    
    </struts>

    2.3 配置Struts2的啓動項

  • 在Struts2中,Struts框架是經過Filter啓動的。Filter在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" id="WebApp_ID" version="3.0">
        <display-name>01-struts2</display-name>
        <!-- 註冊Struts2的啓動項 -->
        <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>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
  • 若忘記子配置細節,能夠從struts2-blank.war解壓目錄中WEB-INF下的web.xml中複製。

    2.4 測試搭建的項目

  • 將該項目部署到服務器後,啓動服務器,在控制檯沒有報錯,則說明Struts2應用平臺搭建成功。
    SSH框架之struts2專題1:Struts2入門

    2.5 解決struts.xml中無自動提示功能的問題

  • 若是在聯網的狀態下,struts.xml文件關聯了相關的dtd文件,在按下「Alt + /」後,就會有自動提示的功能。
  • 若是在沒有聯網的狀態下,須要在MyEclipse環境中進行相關的配置,內容以下:
    一、拷貝struts2-core-2.3.24.jar根目錄中的struts-2.3.dtd文件至指定目錄。
    SSH框架之struts2專題1:Struts2入門
    二、複製struts.xml文件中的url路徑「http://struts.apache.org/dtds/struts-2.3.dtd」 ,在Window -> Preferences中進行以下設置。
    SSH框架之struts2專題1:Struts2入門java

    3 Struts2工做流程

    3.1 開發流程

    一、編寫頁面
    二、定義Action類
    三、註冊Action
    四、編寫結果頁面web

    3.2 簡單示例代碼

    一、編寫靜態頁面index.jsp,代碼以下所示:apache

    <form action="test/login.action" method="post">
                    姓名:<input type="text" name="name" /> <br/>
                  年齡:<input type="text" name="age" /> <br/> 
                     <input type="submit" value="登陸" />
            </form>

    二、定義action類LoginAction,代碼以下所示:編程

    package com.eason.action;
    
    public class LoginAction {
        private String name;
        private int age;
    
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    
        public String execute(){
            System.out.println("name = " + name);
            System.out.println("age = " + age);
            return "success";
        }
    }

    三、註冊action,在struts.xml文件中配置以下內容:設計模式

    <?xml version="1.0" encoding="UTF-8"?>
         <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
        <package name="xxx" namespace="/test" extends="struts-default">
            <action name="login" class="com.eason.action.LoginAction">
                <result name="success">/welcome.jsp</result>
            </action>
        </package>
    </struts>

    四、編寫結果頁面welcome.jsp,代碼以下所示:瀏覽器

    名字:  ${name } <br/>
            年齡:   ${age }<br/>

    五、使用tomcat啓動項目,再打開index.jsp頁面,填寫「姓名」和年齡,點擊「登陸」後,頁面中能夠顯示welcome.jsp中的內容:
    SSH框架之struts2專題1:Struts2入門
    SSH框架之struts2專題1:Struts2入門tomcat

    3.3 struts2執行流程圖

    SSH框架之struts2專題1:Struts2入門

    4 附加說明

    4.1 Tomcat的應用管理配置

  • 使用tomcat圖形用戶界面管理多個項目對於開發有不少裨益,下面介紹如何進行使用。
    一、須要在myEclipse配置的tomcat中的tomcat-users.xml配置中添加以下內容:
    SSH框架之struts2專題1:Struts2入門
    <role rolename="manager-gui" />
    <user username="eason" password="02000059" roles="manager-gui"/>

    二、重啓tomcat後(配置文件被從新加載),使用瀏覽器訪問tomcat首頁,點擊「Manager App」,輸入用戶和密碼以後登陸,便可進入tomcat圖形用戶界面管理(管理員)。
    SSH框架之struts2專題1:Struts2入門
    SSH框架之struts2專題1:Struts2入門
    SSH框架之struts2專題1:Struts2入門服務器

    4.2 絕對路徑和相對路徑問題

一、絕對路徑

  • 絕對路徑指的是沒法改變的路徑,根據給出的路徑能夠準肯定位的路徑。
  • 而對於計算機中的絕對路徑,有分爲本地絕對路徑和網絡絕對路徑。可是不管哪一種絕對路徑都是指帶有訪問協議的路徑。
  • 本地絕對路徑:帶有盤符的路徑。例如:d:\images\eason.jsp就是一個絕對路徑。不過,對於本地路徑,其實質是忽略了file協議的。其帶協議的全路徑實際爲:file:///d:\images\eason.jsp 。
  • 網絡絕對路徑:http://127.0.0.1:8080/01-struts2/index.jsp 就是一個絕對路徑,帶有http訪問協議。

    二、相對路徑

  • 相對路徑,是指根據參照路徑的不一樣,給出路徑的實際路徑能夠發生改變的路徑。根據給出的路徑,在保證參照路徑不變的狀況下,纔可以準肯定位。若參照路徑發生改變,則沒法實現定位。
  • 在Web應用中,相對路徑的寫法有兩種:一種是以斜槓開頭的相對路徑,一種是不以斜槓開頭的相對路徑。
  • 以斜槓開頭的相對路徑,根據路徑所在文件的不一樣,又可分爲兩種:前臺路徑和後臺路徑。

  • 前臺相對路徑:是指由瀏覽器解析執行的代碼中所包含的路徑。例如,html、css、js中的路徑,以及jsp中靜態部分的路徑。像html以及jsp中的靜態部分中的<img src=""/>、<a rel="nofollow" href=""></a>、<form/>等;像css中的background:img("")等;像js中的window.location.href=""等,都屬於前臺路徑。
  • 前臺相對路徑的參照路徑是Web服務器的根路徑。即http://127.0.0.1:8080/ 。

  • 後臺相對路徑:由服務器解析執行的代碼以及文件中所包含的路徑。例如,java代碼中的路徑、jsp文件動態部分中的路徑、xml文件中的路徑(xml文件是要被java代碼加載入內存,並由java代碼解析的)等。
  • 後臺相對路徑的參照路徑是Web應用的根路徑。例如本例中的http://127.0.0.1:8080/01-struts2 。

  • 不以斜槓開頭的相對路徑:不管是前臺路徑,仍是後臺路徑,其參照路徑是當前資源的訪問路徑,而不是當前資源的保存路徑。(如 http://127.0.0.1:8080/01-struts2/index.jsp 絕對路徑,其訪問路徑爲: http://127.0.0.1:8080/01-struts2/ ,其資源路徑爲:index.jsp)
相關文章
相關標籤/搜索