Struts2的 兩個(gè)蝴蝶飛 你好 (一)

勿以惡小而為之,勿以善小而不為--------------------------劉備

勸諸君,多行善事積福報(bào),莫作惡,

下面,老蝴蝶將帶大家學(xué)習(xí) Struts2 框架

一. Struts2的下載和解壓目錄

Struts2的官網(wǎng)是:去官網(wǎng) 。

點(diǎn)擊downloads下載所需要的版本即可,建議選 2.3 版本以上的。

下載后的目錄(兩個(gè)蝴蝶飛下載的是struts-2.3.24),如下所示

在這里插入圖片描述

其中apps為官網(wǎng)所給的示例,docs為API文檔,lib為開發(fā)中所用jar包,src為源代碼。

二. 導(dǎo)入開發(fā)所需的常用jar包

lib文件夾下所給的Jar包過多,其中也有一些與其他框架整合的jar包,不能直接導(dǎo)入 lib 文件夾下的 jar包。

導(dǎo)入apps文件夾下所給的示例項(xiàng)目中的。如struts2-blank.war下面的。

可以用解壓工具將其解壓,也可以將其放在Tomcat下的webapps下進(jìn)行運(yùn)行解壓。

在WEB-INFO下的lib文件夾下,復(fù)制所需要的jar包即可。

在這里插入圖片描述

這就是Struts2基本開發(fā)所需要的jar包。

各個(gè)jar包的基本了解:

在這里插入圖片描述

三. Struts2版的"兩個(gè)蝴蝶飛,你好" 控制臺(tái)開發(fā)

打開Eclipse,新建web動(dòng)態(tài)項(xiàng)目,項(xiàng)目名稱為Struts_Hello,選擇2.5模式。 將所需的jar包放入到Struts_Hello的WEB-INFO下的lib文件夾下,然后build path-->add即可。

改變?cè)械腟ystem.out.println()的輸出提示,用log4j日志的形式打印輸出。 添加log4j的jar包

在這里插入圖片描述

在src目錄下添加log4j.properties屬性文件,修改級(jí)別為info。

由于用的是eclipse,而不是myeclipse,沒有jstl和standard.jar包,將這兩個(gè)jar包也復(fù)制進(jìn)來。

所需要的基本jar包已經(jīng)完成,開始寫具體的代碼了。

開發(fā)Struts2有三個(gè)步驟,1. 寫具體的Action .2在src下的struts.xml中進(jìn)行配置 3. 在web.xml中配置struts過濾器

為了避免忘記配置struts2過濾器,建議先配置struts2過濾器。

三.一 配置struts2的過濾器

在本項(xiàng)目的web.xml中進(jìn)行相應(yīng)的配置,配置代碼如下,所用的過濾器為StrutsPrepareAndExecuteFilter類。

     <!-- 配置struts2的過濾器 -->
  <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
  </filter-mapping>

三.二 編寫具體的Action

在com.yjl.web.action包下新建一個(gè)HelloAction的普通Java類。用到Log4j日志打印

    package com.yjl.web.action;
    import org.apache.log4j.Logger;
    /**
    * @author 兩個(gè)蝴蝶飛
    * @version 創(chuàng)建時(shí)間:2018年8月23日 上午9:41:32
    * @description 用日志記錄的控制臺(tái)輸出
    */
    public class HelloAction {
        private static Logger logger=Logger.getLogger(HelloAction.class);
        public String execute() {
            logger.info("兩個(gè)蝴蝶飛,你好");
            return null;
        }
    }

注意exceute()方法的返回值為null,表示沒有返回值,且類 HelloAction.java 中的方法名稱只能是 execute() 方法。

三.三 根據(jù)Action配置struts.xml文件

在src下新建或者從struts2所給的示例項(xiàng)目中復(fù)制一個(gè)struts.xml,添加相應(yīng)的約束,去除多余的配置后,進(jìn)行相應(yīng)的配置Action。

配置后的 struts.xml 文件內(nèi)容如下:

    <?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="hello" extends="struts-default" namespace="/">
        <action name="hello" class="com.yjl.web.action.HelloAction"></action>
    </package>
</struts>

注意<action>中name的值,為hello,那么訪問路徑就是hello. class為全限定名稱,包括包名。
可以在HelloAction.java文件中,選中HelloAction,右鍵,選中copy Qualified Name來快速?gòu)?fù)制全限定名稱,避免自己寫出錯(cuò)。

將項(xiàng)目添加部署到Tomcat中,運(yùn)行Tomcat,在地址欄輸入http://localhost:8080/Struts_Hello/hello.action,
兩個(gè)蝴蝶飛的端口號(hào)為默認(rèn)的8080,根據(jù)自己的tomcat端口號(hào)進(jìn)行修改。

發(fā)送請(qǐng)求后,在控制臺(tái)查看日志輸出:

在這里插入圖片描述

日志正常打印,可以輸出,struts2的簡(jiǎn)單配置開發(fā)完成。

上面配置的只是控制臺(tái)的方式,很清楚,客戶端瀏覽器傳入了相應(yīng)的 url: /hello.action,

就自動(dòng)找到了 HelloAction 類中的 execute() 方法執(zhí)行。

四. Struts2版的"兩個(gè)蝴蝶飛,你好" WEB版開發(fā)

過濾器的配置是不變的,只需要改變第二步和第三步即可。

四.一 配置 前端過濾器

在本項(xiàng)目的web.xml中進(jìn)行相應(yīng)的配置,配置代碼如下,所用的過濾器為StrutsPrepareAndExecuteFilter類。

     <!-- 配置struts2的過濾器 -->
  <filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
  </filter-mapping>

四.二 編寫具體的Action

新創(chuàng)建 com.yjl.web.action 包下的 HelloAction2 類

    package com.yjl.web.action;
    import org.apache.log4j.Logger;
    /**
    * @author 兩個(gè)蝴蝶飛
    * @version 創(chuàng)建時(shí)間:2018年8月23日 上午9:41:32
    * @description 用日志記錄的web層輸出
    */
    public class HelloAction2 {
        private static Logger logger=Logger.getLogger(HelloAction2.class);
        public String execute() {
            logger.info("兩個(gè)蝴蝶飛,web層你好");
            return "success";
        }
    }

注意execute()方法有返回值,并且返回值為success。

四.三 根據(jù)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="hello" extends="struts-default" namespace="/">
    
        <action name="hello" class="com.yjl.web.action.HelloAction"></action>

        <action name="hello2" class="com.yjl.web.action.HelloAction2">
            <result name="success">/index.jsp</result>
        </action>
    </package>
</struts>

注意,在action中添加了一個(gè)result的節(jié)點(diǎn),name="success",與Action類中execute()方法的返回值一樣,返回到的地址為/index.jsp, /表示根目錄。 所以在根目錄下新建一個(gè)index.jsp,body體里面的內(nèi)容為:

    <body>
        兩個(gè)蝴蝶飛,你好
    </body>

重啟服務(wù)器,tomcat的訪問路徑為:http://localhost:8080/Struts_Hello/hello2.action, 查看請(qǐng)求后的結(jié)果

控制臺(tái):

在這里插入圖片描述

web頁面顯示:

在這里插入圖片描述

本章節(jié)代碼鏈接為:

鏈接:https://pan.baidu.com/s/1DrUeeSC9mwGAnfYiZp5T2w 
提取碼:k9p9

下一章簡(jiǎn)單介紹了Action的實(shí)現(xiàn)方式和struts.xml配置的詳細(xì)解釋,Struts2的簡(jiǎn)單執(zhí)行過程(二)

謝謝您的觀看?。。?/p>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容