struts1是阿帕奇公司開發(fā)的耦合性很高
xwork是OpenSystem。
后來阿帕奇買了xwork。成就了struts2(struts2并不是struts1的升級(jí)版)
搭建上struts2框架前期
新建一個(gè)web項(xiàng)目 我們命名為week3
- 獲取發(fā)布包 struts2官網(wǎng) apache github 百度
在這里我用到的是下面這個(gè)發(fā)布包struts2-2.3.24.1
以后有機(jī)會(huì)可以研究:bootstrap
- 導(dǎo)入jar包.切記不能導(dǎo)入lib包下的所有包(后面用maven自動(dòng)導(dǎo)包)殖熟。它包很多里面很多包都是有沖突的徽诲。
我們需要導(dǎo)入的包可以參考一下目錄的所有包導(dǎo)進(jìn)去。struts-2.3.24.1\apps\struts2-blank\WEB-INF\lib*
-
配置web.xml(在這下面truts-2.3.24.1\apps\struts2-blank\WEB-INF有一個(gè)web.xml作為參考) 在這里過濾任何以.action結(jié)尾的都會(huì)被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>*.action</url-pattern> </filter-mapping>
-
配置struts2核心配置文件 struts.xml (這里有參考struts-2.3.24.1\apps\struts2-blank\struts2-blank\WEB-INF\src\java) 放在src目錄下。也可以放在其他位置需要指向一下。(如果這里有警告劫扒,就是dtd問題)
<?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> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> </package> <!-- <include file="example.xml"/> --> </struts>
- struts-2.3.24.1\apps\struts2-blank\struts2-blank\WEB-INF\lib\struts2-core-2.3.24.1.jar\ 這里有dtd,文件。找到對(duì)應(yīng)版本的dtd.這里用到的是struts-2.3.dtd
在進(jìn)行關(guān)聯(lián)狸膏。關(guān)聯(lián)方法和hibernate框架關(guān)聯(lián)dtd文件一樣沟饥,在window的首先項(xiàng)中xml catalog中。
- struts-2.3.24.1\apps\struts2-blank\struts2-blank\WEB-INF\lib\struts2-core-2.3.24.1.jar\ 這里有dtd,文件。找到對(duì)應(yīng)版本的dtd.這里用到的是struts-2.3.dtd
開發(fā)Struts2項(xiàng)目
-
編寫Action(假設(shè)我們現(xiàn)在有一個(gè)bean類為user湾戳。此時(shí)我們可以編寫一個(gè)UserAction)贤旷。并且寫需要的相應(yīng)方法需要一個(gè)返回值。如(注冊(cè)):
public String toRegister() { System.out.println("跳轉(zhuǎn)到注冊(cè)頁面"); return "register"; }
配置struts.xml
在package標(biāo)簽中砾脑,我們?cè)谂渲靡粋€(gè)action幼驶。其中有如下屬性。這里我們給出代碼例子:
<package name="default" namespace="/" extends="struts-default">
<action name="/user_*" class="com.zts.week3.web.action.UserAction"
method="{1}">
<result name="register">/WEB-INF/jsp/register.jsp</result>
</action>
</package>
假設(shè)我們現(xiàn)在訪問http://localhost:8888/week3/user_toRegister.action韧衣。首先它是*.action結(jié)尾所以會(huì)被struts2監(jiān)聽盅藻。namespace這個(gè)是命名空間這里指目錄。根目錄下面user_toRegister(.action過濾了)和action標(biāo)簽的name屬性/user_匹配成功畅铭。找見class這個(gè)類氏淑。調(diào)用toLogin方法。返回一個(gè)register硕噩。跳轉(zhuǎn)到/WEB-INF/jsp/register.jsp
執(zhí)行流程:
http://localhost:8888/week3/user_toRegister.action
request
url:/user_toRegister.action
.action
|
struts2
請(qǐng)求: /user_toRegister
匹配:struts.xml
<package name="" namespace="/">
<action name="user_*" class=""
method="{1}">
<result name="register">/register.jsp</result>
</action>
</package>
class.forName("class")
.newInstance()
.toRegister();
return "register"