鍍金池/ 教程/ Java/ Struts2快速入門(mén)
設(shè)置復(fù)選框的默認(rèn)值
<s:if>, <s:elseIf>, <s:else> 標(biāo)簽示例
下拉框示例
Struts2 &lt;s:bean&gt;標(biāo)簽示例
Struts2 &lt;s:date&gt;標(biāo)簽示例
<s:text>標(biāo)簽示例
Struts2的ActionError&ActionMessage示例
Struts2 MySQL數(shù)據(jù)庫(kù)訪問(wèn)
Struts2上傳多個(gè)文件例子
Struts2+Log4j集成
Struts 2 hello world (XML版本)
Struts2和Spring集成
Struts2 控件標(biāo)簽
Struts2 和 JSON 實(shí)例
Struts2 環(huán)境配置
Struts2 &lt;s:checkboxlist&gt;多個(gè)復(fù)選框例子
Struts2 注釋類型
在Struts2中配置靜態(tài)參數(shù)
Struts2 驗(yàn)證框架
Struts2 param 標(biāo)簽
Struts2 &lt;s:hidden&gt;隱藏值例子
Struts2下載文件實(shí)例
Struts2 &lt;sx:autocompleter&gt;自動(dòng)提示例子
Struts2 action標(biāo)簽
autocompleter自動(dòng)完成示例
Struts2 merge標(biāo)簽
Struts2 &lt;s:action&gt;標(biāo)簽示例
<s:property>標(biāo)簽示例
Struts2 &lt;s:sort&gt;標(biāo)簽示例
Struts2和Hibernate集成
自動(dòng)選擇下拉框示例
Struts2 結(jié)果和結(jié)果類型
Struts2 是什么?
如何刪除Struts2動(dòng)作的后綴擴(kuò)展名
Struts2 Hello World 實(shí)例
<s:action>標(biāo)簽示例
<s:bean>標(biāo)簽示例
Struts2 + Quartz調(diào)度集成實(shí)例
如何獲取ServletContext對(duì)象
Struts2 &lt;s:i18n&gt;標(biāo)簽示例
Struts2 append標(biāo)簽
i18n 或本地化示例
autocompleter + JSON 示例
Struts2獲取HttpServletRequest實(shí)例
updownselect 示例
Struts2 &lt;s:debug&gt;標(biāo)簽示例
Struts2重寫(xiě)攔截器參數(shù)
多個(gè)Struts配置文件示例
<s:i18n>標(biāo)簽示例
Struts2中文本地化問(wèn)題
文件上傳示例
Struts2 &lt;s:property&gt;標(biāo)簽實(shí)例
Struts2攔截器棧的例子
<s:merge>標(biāo)簽示例
Struts2 數(shù)據(jù)標(biāo)簽
Struts2 &lt;s:merge&gt;標(biāo)簽示例
復(fù)選框checkboxes 示例
Struts2 generator標(biāo)簽
如何配置Struts2全局資源包
key 屬性示例
Struts2 注釋
FilterDispatcher 和 StrutsPrepareAndExecuteFilter區(qū)別?
Struts 2 Hello World (注解版本)
Struts 2 + Log4j 集成實(shí)例
Struts2 值棧/OGNL
Struts2配置Action類的靜態(tài)參數(shù)
Struts2 本地化/國(guó)際化(i18n)
Chinese 本地化問(wèn)題
Struts2單選預(yù)選按鈕值
Struts2 include標(biāo)簽
Struts2 + Hibernate 集成實(shí)例
配置全局資源包
Struts2 異常處理
Struts2 &lt;s:set&gt;標(biāo)簽示例
Struts2 &lt;s:doubleselect&gt;示例
Struts2 iterator標(biāo)簽
optiontransferselect 示例
Struts2映射攔截動(dòng)作
head 示例
Struts2+Hibernate使用Full Hibernate Plugin集成
Struts2命名空間配置和解釋
<s:param>標(biāo)簽示例
Struts2+Hibernate集成實(shí)例
Struts2 &lt;s:head&gt;示例
Struts2 &lt;s:push&gt;標(biāo)簽示例
Struts2文件上傳例子
Struts2 &lt;s:param&gt;標(biāo)簽示例
@ResultPath 注釋示例
Struts2 體系結(jié)構(gòu)
Struts2 execAndWait攔截器例子
Struts2 攔截器
Textarea - 文本域
Struts2教程
<s:push>標(biāo)簽示例
Struts2 文件上傳
Struts2 date 標(biāo)簽
Struts2 &lt;s:texttag&gt;標(biāo)簽示例
Struts2+Quartz2調(diào)度集成實(shí)例
Struts2開(kāi)發(fā)模式
Struts2 autocompleter+JSON例子
Struts2 類型轉(zhuǎn)換
<s:url>標(biāo)簽示例
Struts2 Ajax 標(biāo)簽
Struts2 bean 標(biāo)簽
<s:iterator>標(biāo)簽迭代示例
Hidden隱藏值示例
在Struts2獲取HttpServletResponse對(duì)象
Struts2 主題和模板
Struts2自動(dòng)選擇下拉框的值
Struts2下載文件實(shí)例
在Struts2中獲取 HttpServletRequest
級(jí)聯(lián)選擇示例
Struts2 &lt;sx:datetimepicker&gt;示例
Struts2 include(包含)多個(gè)配置文件
Struts2 &lt;s:select&gt;下拉框例子
Struts2 Action/動(dòng)作
Struts2 &lt;s:textarea&gt;文本域?qū)嵗?/span>
Struts2+Spring集成實(shí)例
Struts2 &lt;s:updownselect&gt;示例
Struts2 property 標(biāo)簽
Struts2 &lt;s:url&gt;標(biāo)簽示例
Struts2 表單標(biāo)簽
Struts2資源包使用示例
subset tag example
Struts 2 ActionError &amp; ActionMessage Example
Struts2 MVC架構(gòu)
Struts2 if/else標(biāo)簽
Struts2 &lt;s:generator&gt;標(biāo)簽示例
<s:include>標(biāo)簽示例
Struts2開(kāi)發(fā)者模式
<s:generator> 標(biāo)簽示例
復(fù)選框heckbox 示例
Struts2 text 標(biāo)簽
Radio 單選按鍵示例
Struts2 &lt;s:a&gt;標(biāo)簽示例
Struts2 key鍵屬性示例
Struts2設(shè)置多個(gè)復(fù)選框缺省值
Struts2 基于XML校驗(yàn)
Struts2 配置文件
Struts2 &lt;s:radio&gt;單選按鈕例子
Struts2 發(fā)送郵件Email
Struts2獲取HttpServletResponse實(shí)例
<s:sort>標(biāo)簽示例
Struts2 &lt;s:optiontransferselect&gt;示例
Struts2和Tiles集成
Struts2模型驅(qū)動(dòng)實(shí)例
Struts2的FilterDispatcher和StrutsPrepareAndExecuteFilter有什么不同?
<s:append>標(biāo)簽示例
組合框示例
Struts2 &lt;s:password&gt;密碼示例
datetimepicker 日期選擇
Struts2 &lt;s:iterator&gt;迭代器標(biāo)簽示例
TextBox文檔示例
Struts2 url標(biāo)簽
資源包使用示例
Struts2本地化和國(guó)際化
Struts2 &lt;s:subset&gt;標(biāo)簽示例
Struts2 + Hibernate使用“Full Hibernate Plugin"插件集成
Struts2和JSON實(shí)例
Struts2注解示例
Struts2 &lt;s:checkbox&gt;復(fù)選框例子
Struts2快速入門(mén)
<s:date>標(biāo)簽示例
Struts2 set 標(biāo)簽
<s:set>標(biāo)簽示例
Struts2 命名空間配置和解釋
Struts 2 hello world (XML版本)
&nbsp;預(yù)選單選按鈕
<s:a>標(biāo)簽示例
Struts2+Spring+Hibernate集成實(shí)例
Struts2 &lt;s:combobox&gt;組合框的例子
Struts2 if,elseif,else標(biāo)簽示例
Struts2 @ResultPath注釋示例
struts2 &lt;s:append&gt;標(biāo)簽示例
Struts2 &lt;s:textfield&gt;文本示例
多文件上傳示例
使用Struts2動(dòng)作
<s:debug>標(biāo)簽示例
在Struts2中如何獲取ServletContext對(duì)象
Struts2 &lt;s:include&gt;標(biāo)簽示例
Password 示例

Struts2快速入門(mén)

Struts2是基于MVC設(shè)計(jì)模式的流行和成熟的Web應(yīng)用程序框架。Struts2并不只是Struts 1下一個(gè)版本,但它是一個(gè)完全重寫(xiě)的Struts架構(gòu)。

WebWork框架開(kāi)始了與Struts框架為基礎(chǔ),其目標(biāo)是建立在Struts的Web開(kāi)發(fā)更容易為開(kāi)發(fā)人員提供了加強(qiáng)和改進(jìn)的框架。

一段時(shí)間后,WebWork框架和Struts社區(qū)聯(lián)手打造著名的Struts2框架。

Struts 2 框架特性:

這里有一些偉大的特性,可能會(huì)迫使你考慮使用Struts2:

  1. POJO形式和POJO動(dòng)作 - 已經(jīng)擺脫了Struts2的動(dòng)作表單的Struts框架的一個(gè)組成部分。Struts2可以使用任何的POJO接收的形式輸入。同樣的,你現(xiàn)在可以看到任何POJO的Action類。

  2. Tag支持 - Struts2的形式提高了標(biāo)簽的新標(biāo)簽讓開(kāi)發(fā)人員寫(xiě)更少的代碼。

  3. AJAX支持- Struts2中已經(jīng)認(rèn)識(shí)到了Web2.0技術(shù),并整合到產(chǎn)品中AJAX支持創(chuàng)建AJAX的標(biāo)簽,該功能非常相似的標(biāo)準(zhǔn)Struts2的標(biāo)簽。

  4. 容易整合 - 與其他框架如SpringTilesSiteMesh的整合是現(xiàn)在更容易與各種集成Struts2。

  5. 模板支持 - 支持生成使用模板。

  6. 插件支持 - 核心Struts2行為,可以加強(qiáng)和擴(kuò)大使用插件。大量的插件可供Struts2。

  7. 概要分析- Struts2的提供集成的配置,調(diào)試和分析應(yīng)用程序。此外,Struts還提供了內(nèi)置調(diào)試工具的幫助下,集成調(diào)試。

  8. 標(biāo)簽修改容易 - 在Struts2標(biāo)簽標(biāo)記,可以調(diào)整使用FreeMarker模板。這并不需要JSPJava知識(shí)?;镜?a target="_blank" target="_blank">HTML,XMLCSS知識(shí)是不夠的修改的標(biāo)簽。

  9. 提升更少的配置 - Struts2的促進(jìn)更少的配置與用于各種設(shè)置的幫助下,使用默認(rèn)值。你沒(méi)有的東西,除非它偏離由Struts2的默認(rèn)設(shè)置的配置。

Struts 2 環(huán)境配置:

我們的首要任務(wù)是要得到一個(gè)最小的Struts2中運(yùn)行的應(yīng)用程序。本章將指導(dǎo)您如何使用Struts2編寫(xiě)一個(gè)應(yīng)用程序。我假設(shè)你已經(jīng)在你的機(jī)器上安裝JDK(5+),TomcatEclipse。如果你沒(méi)有安裝這些組件,請(qǐng)執(zhí)行以下步驟:

Step 1 - 設(shè)置JAVA開(kāi)發(fā)工具包 (JDK):


從Oracle的Java站點(diǎn):Java SE下載,您可以下載最新版本的SDK。您會(huì)發(fā)現(xiàn)說(shuō)明安裝JDK下載的文件,按照給定的說(shuō)明來(lái)安裝和配置的設(shè)置。最后,設(shè)置PATH和JAVA_HOME環(huán)境變量指向的目錄,其中包含java和javac,通常分別為:java_install_dir/bin和java_install_dir。

如果運(yùn)行的是Windows SDK安裝在c:\jdk1.5.0_20,你就必須把你的C:\autoexec.bat文件中的以下行。

set PATH=C:\jdk1.5.0_20\bin;%PATH%
set JAVA_HOME=C:\jdk1.5.0_20

另外,在Windows NT/2000/XP中,您也可以右鍵單擊“我的電腦”,選擇“屬性”,再先進(jìn),環(huán)境變量。然后,您會(huì)更新PATH的值,然后按“確定”按鈕。
在Unix(Solaris和Linux等),如果SDK安裝在/usr/local/jdk1.5.0_20,你使用的是C shell,把下面的到.cshrc文件寫(xiě)入。

setenv PATH /usr/local/jdk1.5.0_20/bin:$PATH
setenv JAVA_HOME /usr/local/jdk1.5.0_20

另外,如果你使用像Borland的JBuilder,Eclipse的IntelliJ IDEA或Sun ONE Studio集成開(kāi)發(fā)環(huán)境(IDE),編譯并運(yùn)行一個(gè)簡(jiǎn)單的程序,以確認(rèn)該IDE知道在哪里安裝Java,否則不正確的設(shè)置為給定的文檔IDE。

Step 2 - 安裝Apache Tomcat:


您可以下載最新版本Tomcat http://tomcat.apache.org/。一旦下載安裝,解壓縮的二進(jìn)制分發(fā)到一個(gè)方便的位置。例如,Window下在C:\Apache或/usr/local/apache-tomcat-6.0.33 tomcat-6.0.33 Linux/Unix和創(chuàng)建CATALINA_HOME環(huán)境變量指向這些位置上。Tomcat可以開(kāi)始執(zhí)行下面的命令在Windows機(jī)器上,可以簡(jiǎn)單地雙擊的startup.bat

 %CATALINA_HOME%\bin\startup.bat
 or
 C:\apache-tomcat-6.0.33\bin\startup.bat

Tomcat可以開(kāi)始UNIX(Solaris和Linux等)的機(jī)器上執(zhí)行下面的命令:

$CATALINA_HOME/bin/startup.sh
or
/usr/local/apache-tomcat-6.0.33/bin/startup.sh

成功啟動(dòng)后,默認(rèn)包含在Tomcat中的Web應(yīng)用程序?qū)⒖梢酝ㄟ^(guò)訪問(wèn)輸入http://localhost:8080/。如果一切順利,那么它應(yīng)該顯示以下結(jié)果:

有關(guān)配置和運(yùn)行Tomcat的進(jìn)一步信息包含在文檔中,可以找到這里,以及在Tomcat Web站點(diǎn):http://tomcat.apache.org
停止Tomcat既可以通過(guò)Windows機(jī)器上執(zhí)行下面的命令:

%CATALINA_HOME%\bin\shutdown
or

C:\apache-tomcat-5.5.29\bin\shutdown

Tomcat可以停止執(zhí)行下面命令在Unix(Solaris和Linux等)機(jī)器:

$CATALINA_HOME/bin/shutdown.sh
or
/usr/local/apache-tomcat-5.5.29/bin/shutdown.sh

Step 3 - 安裝Eclipse (IDE)

在本教程中所有的例子已經(jīng)寫(xiě)入使用Eclipse IDE。所以,我建議你有你的機(jī)器上安裝最新版本Eclipse。

要安裝Eclipse的dDownload的最新的Eclipse二進(jìn)制文件http://www.eclipse.org/downloads/。一旦你下載安裝,解壓縮的二進(jìn)制分發(fā)到一個(gè)方便的位置。例如,在C:\eclipse上Eclipse,或/usr/local/eclipse在Linux/Unix終于適當(dāng)設(shè)置PATH變量。

Eclipse可以啟動(dòng)Windows機(jī)器上執(zhí)行下面的命令,或者你可以簡(jiǎn)單地雙擊的eclipse.exe

 %C:\eclipse\eclipse.exe

Eclipse可以啟動(dòng)UNIX(Solaris和Linux等)的機(jī)器上執(zhí)行下面的命令:

$/usr/local/eclipse/eclipse

成功啟動(dòng)后,如果一切正常,那么它應(yīng)顯示以下結(jié)果:

Step 4 - 安裝Struts2 類庫(kù)

現(xiàn)在,如果一切正常,那么你可以繼續(xù)設(shè)置您的Struts 2框架。以下是簡(jiǎn)單的步驟,下載并安裝在機(jī)器上Struts2。

  • 請(qǐng)選擇是否要安裝Hibernate在Windows或Unix,然后繼續(xù)進(jìn)行下一個(gè)步驟下載.zip文件窗口.tz文件為Unix。

  • 下載最新版本的Struts2的二進(jìn)制文件: http://struts.apache.org/download.cgi.

  • 在寫(xiě)這篇教程的時(shí)候,我下載的是struts-2.0.14-all.zip,當(dāng)解壓下載的文件時(shí),它有C:\struts-2.2.3如下的目錄結(jié)構(gòu)內(nèi)。

第二個(gè)步驟是解壓zip文件中的任何位置,我下載和提取struts-2.2.3-all.zip在c:\文件夾中,我的Windows 7機(jī)器上的所有jar文件復(fù)制到c:\struts-2.20.3\lib中。確保正確設(shè)置CLASSPATH變量,否則將出現(xiàn)錯(cuò)誤問(wèn)題,同時(shí)運(yùn)行您的應(yīng)用程序。

Struts 2 體系結(jié)構(gòu):

從高層次來(lái)看,Struts2是一個(gè)上拉MVC(MVC2)框架。在Struts2的Model-View-Controller模式實(shí)現(xiàn)以下五個(gè)核心組件:

  1. Actions

  2. Interceptors

  3. Value Stack / OGNL

  4. Results / Result types

  5. View technologies

Struts 2的是從傳統(tǒng)的MVC框架,在該框架中的作用的模式,而不是控制器的作用略有不同,雖然有一些重疊。

上圖描述了Struts2的高層體系結(jié)構(gòu)模型,視圖和控制器。一個(gè)Struts2的調(diào)度Servlet過(guò)濾器和攔截器與控制器實(shí)現(xiàn),該模型實(shí)現(xiàn)的動(dòng)作和視圖的組合的結(jié)果類型和結(jié)果。值棧和OGNL提供了共同點(diǎn),其他部件之間的連接和集成。

除了從上述組分中,將有一個(gè)特定的信息涉及到配置。為Web應(yīng)用程序的配置以及配置動(dòng)作,攔截器,結(jié)果等。
這是Struts的MVC模式的體系結(jié)構(gòu)概述。我們將在隨后的章節(jié)中通過(guò)每個(gè)組件更詳細(xì)地熟悉和理解。

請(qǐng)求生命周期:

基于上述數(shù)據(jù)圖,可以解釋用戶的請(qǐng)求的生命周期在Struts 2如下所示:

  1. 用戶發(fā)送請(qǐng)求到服務(wù)器,用于請(qǐng)求對(duì)某些資源(即頁(yè)).

  2. FilterDispatcher排著眼于該請(qǐng)求,然后確定適當(dāng)?shù)腁ction.

  3. 配置攔截器的功能適用于如驗(yàn)證,文件上傳等。

  4. 選擇的動(dòng)作執(zhí)行,執(zhí)行所請(qǐng)求的操作。

  5. 同樣,配置攔截器做任何后期處理,如果需要的話。

  6. 最后的結(jié)果是由視圖準(zhǔn)備,并且將結(jié)果返回給用戶。

Struts 2 Hello World 實(shí)例:

從中學(xué)到了Struts 2的架構(gòu),當(dāng)你點(diǎn)擊一個(gè)超鏈接或提交一個(gè)Struts2的Web應(yīng)用程序的HTML表單中,輸入被發(fā)送到一個(gè)Java類操作的控制器,收集。執(zhí)行該操作后,結(jié)果選擇了一個(gè)資源來(lái)呈現(xiàn)的響應(yīng)。資源通常是一個(gè)JSP,但它也可以是一個(gè)PDF文件,Excel電子表格,或Java小應(yīng)用程序窗口。

假設(shè)你已經(jīng)建立您的開(kāi)發(fā)環(huán)境?,F(xiàn)在,讓我們繼續(xù)建立我們的第一個(gè)Hello World struts2的項(xiàng)目。這個(gè)項(xiàng)目的目的是建立一個(gè)Web應(yīng)用程序,收集用戶的username,并顯示“Hello World”,后面的用戶名。我們將創(chuàng)建任何Struts2項(xiàng)目的四個(gè)組成部分:

SN 組件&描述
1 Action
Create an action class which will contain complete business logic and conrol the interaction between the user, the model, and the view.
2 Interceptors
Create interceptors if required, or use existing interceptors. This is part of Controller.
3 View
Create a JSPs to interact with the user to take input and to present the final messages.
4 Configuration Files
Create configuration files to couple the Action, View and Controllers. These files are struts.xml, web.xml, struts.properties.

我要使用Eclipse IDE,所以下創(chuàng)建一個(gè)動(dòng)態(tài)Web項(xiàng)目所需的所有組件。因此,讓我們開(kāi)始創(chuàng)建動(dòng)態(tài)Web項(xiàng)目。

創(chuàng)建一個(gè)動(dòng)態(tài)Web項(xiàng)目:

開(kāi)始你的Eclipse,然后進(jìn)入“文件”>“新建”>“動(dòng)態(tài)Web項(xiàng)目,然后輸入項(xiàng)目名稱為HelloWorldStruts2和設(shè)置其他的選項(xiàng),在下面的屏幕:

選擇在屏幕上的所有默認(rèn)選項(xiàng),最后檢查生成的web.xml部署描述符選項(xiàng)。這將創(chuàng)建一個(gè)動(dòng)態(tài)Web項(xiàng)目在Eclipse中?,F(xiàn)在去窗口>顯示視圖>項(xiàng)目資源管理器,你會(huì)看到你的項(xiàng)目窗口中的東西如下:

現(xiàn)在復(fù)制以下文件從Struts 2的lib文件夾C:\struts-2.2.3\lib添加到我們的工程WEB-INF\lib文件夾中。所以這個(gè)可以簡(jiǎn)單地拖動(dòng)和丟棄所有的WEB-INF\lib文件夾中的下列文件到。

  • commons-fileupload-x.y.z.jar

  • commons-io-x.y.z.jar

  • commons-lang-x.y.jar

  • commons-logging-x.y.z.jar

  • commons-logging-api-x.y.jar

  • freemarker-x.y.z.jar

  • javassist-.xy.z.GA

  • ognl-x.y.z.jar

  • struts2-core-x.y.z.jar

  • xwork-core.x.y.z.jar

創(chuàng)建動(dòng)作action類:

Action類是Struts 2應(yīng)用程序的關(guān)鍵,我們實(shí)現(xiàn)了大部分Action類中的業(yè)務(wù)邏輯。因此,讓我們創(chuàng)建一個(gè)Java文件HelloWorldAction.java的Java資源> SRC下一個(gè)的包名com.yiibai.struts2并有下面的內(nèi)容。

Action類來(lái)響應(yīng)用戶的操作,當(dāng)用戶點(diǎn)擊一個(gè)URL。 Action類中的一個(gè)或多個(gè)方法被執(zhí)行,并返回一個(gè)字符串結(jié)果?;诮Y(jié)果的價(jià)值,一個(gè)特定的JSP頁(yè)面的呈現(xiàn)方式。

package com.yiibai.struts2;

public class HelloWorldAction{
   private String name;

   public String execute() throws Exception {
      return "success";
   }
   
   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}

這是一個(gè)非常簡(jiǎn)單的類,一個(gè)名為“name”屬性。我們有標(biāo)準(zhǔn)“名稱”屬性getter和setter方法,返回字符串“SUCCESS”執(zhí)行方法。
Struts2框架的HelloWorldAction類將創(chuàng)建一個(gè)對(duì)象并調(diào)用execute方法在響應(yīng)用戶的操作。你把業(yè)務(wù)邏輯里面execute方法,并最終返回的字符串常量。簡(jiǎn)單地說(shuō)為每個(gè)URL執(zhí)行一個(gè)動(dòng)作類,或者你可以直接使用這個(gè)類的名稱作為操作名,也可以映射到一些其他的名稱使用struts.xml文件,如下圖所示。

 

創(chuàng)建一個(gè)視圖

我們需要一個(gè)JSP提交最后的消息,這個(gè)頁(yè)面會(huì)被稱為Struts 2框架中預(yù)定義的動(dòng)作時(shí),會(huì)發(fā)生此映射將在struts.xml文件中定義的。所以,讓我們創(chuàng)建下面的JSP文件的helloWorld.jsp,在WebContent文件夾在您的Eclipse項(xiàng)目。要做到這一點(diǎn),右鍵單擊WebContent文件夾中的項(xiàng)目資源管理器,然后選擇“新建”>“JSP文件。

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
   Hello World, <s:property value="name"/>
</body>
</html>

taglib指令告訴Servlet容器中,這個(gè)頁(yè)面將使用Struts2標(biāo)簽,這些標(biāo)簽之前,將通過(guò)s:property標(biāo)簽中顯示的動(dòng)作類的屬性名稱>HelloWorldAction類的getName()方法返回的值。

創(chuàng)建主頁(yè)面:

我們還需要在WebContent文件夾中創(chuàng)建的index.jsp。該文件將作為初始動(dòng)作URL,用戶可以直接點(diǎn)擊告訴Struts 2框架調(diào)用的HelloWorldAction類定義的方法,使HelloWorld.jsp視圖。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
   pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello World</title>
</head>
<body>
   <h1>Hello World From Struts2</h1>
   <form action="hello">
      <label for="name">Please enter your name</label><br/>
      <input type="text" name="name"/>
      <input type="submit" value="Say Hello"/>
   </form>
</body>
</html>

hello操作定義在上面的視圖文件將被映射到的HelloWorldAction類和它的執(zhí)行方法使用struts.xml文件。當(dāng)用戶點(diǎn)擊“提交”按鈕,它會(huì)導(dǎo)致Struts2框架運(yùn)行執(zhí)行方法定義在其中,HelloWorldAction類和方法的返回值的基礎(chǔ)上,將相應(yīng)的視圖選擇和呈現(xiàn)的一種反應(yīng)。

配置文件

我們需要一個(gè)映射,以配合URL,HelloWorldAction類(模型),HelloWorld.jsp(圖)。映射告訴Struts 2框架的類將響應(yīng)用戶的操作(URL),這一類的方法將被執(zhí)行,什么視圖來(lái)顯示字符串結(jié)果的基礎(chǔ)上,該方法返回。

因此,讓我們創(chuàng)建一個(gè)名為struts.xml中。由于Struts2要求struts.xml中存在的類文件夾中。因此,創(chuàng)建的WebContent/WEB-INF/classes文件夾下struts.xml文件。Eclipse不會(huì)創(chuàng)建“類”文件夾下,所以你需要自己做。要做到這一點(diǎn),在項(xiàng)目瀏覽器和WEB-INF文件夾上點(diǎn)擊右鍵,選擇“新建”>“文件夾”。你的struts.xml中應(yīng)該是這樣的:

<?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>
<constant name="struts.devMode" value="true" />
   <package name="helloworld" extends="struts-default">
     
      <action name="hello" 
            class="com.yiibai.struts2.HelloWorldAction" 
            method="execute">
            <result name="success">/HelloWorld.jsp</result>
      </action>
   </package>
</struts>

上面的配置文件的幾句話。在這里,我們?cè)O(shè)置常數(shù)struts.devModeto為true,因?yàn)槲覀冃枰吹揭恍┯杏玫娜罩鞠?。我們?cè)俣x一個(gè)名為HelloWorld包。創(chuàng)建一個(gè)包是有用的,當(dāng)你想要?jiǎng)?chuàng)建新的動(dòng)作。在我們的例子中,我們的行動(dòng)命名為“hello”相應(yīng)的URL/hello.action和備份HelloWorldAction.class。執(zhí)行方法HelloWorldAction.class方法被調(diào)用時(shí)運(yùn)行URL/hello.action。如果結(jié)果execute方法返回“success”,那么我們就用戶HelloWorld.jsp。

下一步是創(chuàng)建一個(gè)web.xml文件,該文件的任何請(qǐng)求的入口點(diǎn)到Struts2。Struts2的應(yīng)用程序的入口點(diǎn),將是一個(gè)部署描述符(web.xml)中定義的過(guò)濾器。因此,我們將定義在web.xml中一個(gè)條目oforg.apache.struts2.dispatcher.FilterDispatcher類。WebContent下WEB-INF文件夾下需要?jiǎng)?chuàng)建web.xml文件。 Eclipse已經(jīng)在創(chuàng)建項(xiàng)目時(shí)創(chuàng)建了一個(gè)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" 
   xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   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>Struts 2</display-name>
   <welcome-file-list>
      <welcome-file>index.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>

我們已經(jīng)指定index.jsp是我們歡迎(welcome)文件。我們已經(jīng)配置Struts2過(guò)濾器上運(yùn)行的所有URL(即,任何URL匹配模式/*)

啟用詳細(xì)的日志:

可以啟用日志記錄功能齊全,工作時(shí)用Struts 2的WEB-INF/classes文件夾下創(chuàng)建logging.properties文件。請(qǐng)?jiān)趯傩晕募械囊韵聝尚校?

 
org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = \
                              java.util.logging.ConsoleHandler

默認(rèn)logging.properties指定ConsoleHandler的路由記錄到stdout或FileHandler。一個(gè)處理程序的日志級(jí)別閾值可以設(shè)置使用ERROR,WARNING,INFO,CONFIG,F(xiàn)INE,F(xiàn)INER,F(xiàn)INEST或全部。
就是這樣。我們已經(jīng)準(zhǔn)備好來(lái)運(yùn)行我們的Hello World應(yīng)用程序使用Struts 2框架。

 

執(zhí)行應(yīng)用程序

右鍵點(diǎn)擊項(xiàng)目名稱,并單擊“導(dǎo)出”> WAR文件創(chuàng)建一個(gè)WAR文件。然后,這WAR部署在Tomcat的webapps目錄下。最后,啟動(dòng)Tomcat服務(wù)器,并嘗試訪問(wèn)URL http://localhost:8080/HelloWorldStruts2/index.jsp。這會(huì)給你以下畫(huà)面:

輸入值為"Struts2",并提交頁(yè)面。您應(yīng)該看到下一頁(yè)

請(qǐng)注意,您可以定義索引動(dòng)作在struts.xml文件,在這種情況下,你可以調(diào)用索引頁(yè)http://localhost:8080/HelloWorldStruts2/index.action。檢查下面你可以定義索引的行動(dòng):

<?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>
<constant name="struts.devMode" value="true" />
   <package name="helloworld" extends="struts-default">

      <action name="index">
            <result >/index.jsp</result>
      </action>

      <action name="hello" 
            class="com.yiibai.struts2.HelloWorldAction" 
            method="execute">
            <result name="success">/HelloWorld.jsp</result>
      </action>

   </package>
</struts>

Struts 2 配置文件

本章將帶你通過(guò)一個(gè)Struts2應(yīng)用程序所需的基本配置。在這里,我們將看到在一些重要的配置文件,將配置文件:web.xml,struts.xml中,struts-config.xml和struts.properties
老實(shí)說(shuō)你能活下來(lái)使用web.xml和struts.xml中的配置文件,并在前面的章節(jié)中,你已經(jīng)看到我們的例子中使用這兩個(gè)文件的工作,但讓我解釋一下其他文件,以及你的知識(shí)。

 

web.xml文件:

在web.xml配置文件是一個(gè)的J2EE配置文件,決定如何處理HTTP請(qǐng)求servlet容器的元素。它不是嚴(yán)格意義上的Struts2的配置文件,但它是一個(gè)文件,需要配置Struts2的工作。

正如前面所討論的,此文件提供任何Web應(yīng)用程序的入口點(diǎn)。Struts2的應(yīng)用程序的入口點(diǎn),將是一個(gè)部署描述符(web.xml)中定義的過(guò)濾器。因此,我們將FilterDispatcher排類在web.xml中定義一個(gè)條目。需要?jiǎng)?chuàng)建文件夾的WebContent/ WEB-INF下的web.xml文件。

這是第一個(gè)配置文件,您將需要配置,如果你開(kāi)始沒(méi)有產(chǎn)生它(例如Eclipse或者M(jìn)aven2的)模板或工具的幫助下。以下是web.xml文件中的內(nèi)容,我們?cè)谖覀兊淖詈笠粋€(gè)例子。

<?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" 
   xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   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>Struts 2</display-name>
   <welcome-file-list>
      <welcome-file>index.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>

需要注意的是,我們的Struts 2的過(guò)濾器映射到/*/*。行動(dòng),而不是這意味著所有的URL將被解析的支柱過(guò)濾器。我們將介紹時(shí),我們會(huì)通過(guò)的“注解”一章。

struts.xml文件:

struts.xml文件中包含的配置信息,你將修改所采取的措施的開(kāi)發(fā)。這個(gè)文件可以被用來(lái)覆蓋默認(rèn)設(shè)置的應(yīng)用程序,例如struts.devMode=false和其他設(shè)置中定義的屬性文件。這個(gè)文件可以創(chuàng)建文件夾下的WEB-INF/classes。

讓我們一起來(lái)看看我們?cè)趕truts.xml文件中創(chuàng)建Hello World的例子在前面的章節(jié)中解釋。

<?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>
   <constant name="struts.devMode" value="true" />
   <package name="helloworld" extends="struts-default">
     
      <action name="hello" 
            class="com.yiibai.struts2.HelloWorldAction" 
            method="execute">
            <result name="success">/HelloWorld.jsp</result>
      </action>
      <-- more actions can be listed here -->

   </package>
   <-- more packages can be listed here -->

</struts>

首先要注意的是DOCTYPE。所有的Struts配置文件中需要有正確的DOCTYPE,在我們的小例子所示。<struts>是根標(biāo)記的元素,我們聲明使用不同的包<package>標(biāo)簽。其中,<package>允許分離和模塊化的配置。這是非常有用的,當(dāng)你有一個(gè)大的項(xiàng)目,項(xiàng)目被劃分成不同的模塊。

再說(shuō)了,如果項(xiàng)目有三個(gè)域名 - business_applicaiton,customer_application和staff_application,可以創(chuàng)建三個(gè)包,在適當(dāng)?shù)陌b和存儲(chǔ)相關(guān)的行動(dòng)。包裝標(biāo)簽具有以下屬性:

屬性 描述
name (required) The unique identifier for the package
extends Which package does this package extend from? By default, we use struts-default as the base package.
abstract If marked true, the package is not available for end user consumption.
namesapce Unique namespace for the actions

常量標(biāo)簽name和value屬性將被用來(lái)覆蓋default.properties中定義的屬性,就像我們剛剛成立struts.devModeproperty。設(shè)置struts.devMode屬性,讓我們看到了更多的調(diào)試信息,日志文件中。

我們定義動(dòng)作標(biāo)記對(duì)應(yīng)的每一個(gè)URL,我們想訪問(wèn)我們定義了一個(gè)類的execute()方法,將訪問(wèn)時(shí),我們將訪問(wèn)相應(yīng)的URL。
結(jié)果確定什么被返回到瀏覽器的一個(gè)動(dòng)作后執(zhí)行。從操作返回的字符串應(yīng)該是一個(gè)結(jié)果的名稱。結(jié)果如上配置的每次動(dòng)作,或作為一個(gè)“全局”的結(jié)果,在包中的每一個(gè)動(dòng)作可。結(jié)果有可選的名稱和類型的屬性。默認(rèn)名稱值是“成功”。

 

隨著時(shí)間的推移,struts.xml文件可以做大,打破它包的模塊化是一種方式,但Struts提供了另一種模塊化的struts.xml文件。你可以將檔案分割成多個(gè)XML文件,并將其導(dǎo)入以下方式。

<?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>
     <include file="my-struts1.xml"/>
     <include file="my-struts2.xml"/>
</struts>

我們還沒(méi)有涉及到的其他配置文件是struts-default.xml中。這個(gè)文件包含了Struts標(biāo)準(zhǔn)配置設(shè)置,在你的項(xiàng)目的99.99%就不會(huì)碰這些設(shè)置。出于這個(gè)原因,我們不打算在這個(gè)文件太多的細(xì)節(jié)。如果有興趣,不妨看看在default.properties文件中struts2的核心-2.2.3.jar文件。

struts-config.xml 文件:

struts-config.xml配置文件是一個(gè)在Web客戶端組件的視圖和模型之間的聯(lián)系,但你的項(xiàng)目的99.99就不會(huì)碰這些設(shè)置%。基本的配置文件包含以下主要內(nèi)容:

SN Interceptor & 描述
1 struts-config
This is the root node of the configuration file.
2 form-beans
This is where you map your ActionForm subclass to a name. You use this name as an alias for your ActionForm throughout the rest of the struts-config.xml file, and even on your JSP pages.
3 global forwards
This section maps a page on your webapp to a name. You can use this name to refer to the actual page. This avoids hardcoding URLs on your web pages.
4 action-mappings
This is where you declare form handlers and they are also known as action mappings.
5 controller
This section configures Struts internals and rarely used in practical situations.
6 plug-in
This section tells Struts where to find your properties files, which contain prompts and error messages

下面是示例struts-config.xml文件:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">

<struts-config>

   <!-- ========== Form Bean Definitions ============ -->
   <form-beans>
      <form-bean name="login" type="test.struts.LoginForm" />
   </form-beans>

   <!-- ========== Global Forward Definitions ========= -->
   <global-forwards>
   </global-forwards>

   <!-- ========== Action Mapping Definitions ======== -->
   <action-mappings>
      <action
         path="/login"
         type="test.struts.LoginAction" >

         <forward name="valid" path="/jsp/MainMenu.jsp" />
         <forward name="invalid" path="/jsp/LoginView.jsp" />
      </action>
   </action-mappings>

   <!-- ========== Controller Definitions ======== -->
   <controller 
      contentType="text/html;charset=UTF-8"
      debug="3"
      maxFileSize="1.618M"
      locale="true"
      nocache="true"/>

</struts-config>

struts-config.xml文件的更多詳細(xì)信息,請(qǐng)檢查你的Struts文檔。

struts.properties文件

上一篇:Struts2獲取HttpServletRequest實(shí)例下一篇:下拉框示例