日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Struts2.1.6的環(huán)境搭建與示例

Struts2.1.6的環(huán)境搭建

高縣網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站開(kāi)發(fā)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司于2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。

首先下載Struts2.1.6。

然后下載Eclipse for JavaEE(3.4 or 3.5),點(diǎn)擊下圖選中的鏈接,進(jìn)入下一個(gè)頁(yè)面,找到能夠下載的地方下載就行。

JDK6.0和Tomcat6.0,請(qǐng)大家自行下載。

另外,建議下載JSP標(biāo)準(zhǔn)標(biāo)準(zhǔn)庫(kù)JSTL。

暫時(shí)下載這些,以后,需要用到其他的時(shí),再下載。至于JDK6.0,Tomcat6.0,Eclipse的安裝,請(qǐng)大家自行安裝,在這里就不演示安裝過(guò)程了。

關(guān)于Eclipse的部分用法,如在Eclipse里配置Tomcat服務(wù)器,新建動(dòng)態(tài)Web項(xiàng)目等,請(qǐng)上網(wǎng)找一下其他的資料學(xué)習(xí)一下。

Struts2.1.6:***個(gè)項(xiàng)目

來(lái)開(kāi)始我們的項(xiàng)目吧,先做個(gè)簡(jiǎn)單的測(cè)試,New一個(gè)Dynamic Web Project,起名為“SimpleWeb”,將Struts2.1.6的下載包解壓后得到的lib目錄,在lib目錄下,找到以面的jar包:

xwork-2.1.2.jar
struts2-core-2.1.6.jar
struts2-convention-plugin-2.1.6.jar
ognl-2.6.11.jar
freemarker-2.3.13.jar
commons-loggin-1.0.4.jar
commons-fileupload-1.2.1.jar

把這些包放進(jìn)項(xiàng)目的lib目錄下,同時(shí),建議也把JSTL的核心jar包也放到lib目錄,這些JSTL的包主要有:

jstl.jar
standard.jar

我們先要在項(xiàng)目WEB-INF下的web.xml文件中配置Struts2應(yīng)用,配置后,web.xml全部代碼如下:

 
 
 
 
  1. < ?xml version="1.0" encoding="UTF-8"?>
  2. < 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_2_5.xsd" id="WebApp_ID" version="2.5">
  3.   < display-name>SimpleWeb< /display-name>
  4.   < filter>
  5.     < filter-name>Struts2< /filter-name>
  6.     < filter-class>org.apache.struts2.dispatcher.FilterDispatcher< /filter-class>
  7.   < /filter>
  8.   < filter-mapping>
  9.     < filter-name>Struts2< /filter-name>
  10.     < url-pattern>/*< /url-pattern>
  11.   < /filter-mapping>
  12. < /web-app>

我們?cè)陧?xiàng)目的WEB-INF目錄下新建一個(gè)文件夾命名為“content”,這個(gè)文件夾名一定要這樣,如果寫(xiě)成別的,要另外配置一下,但初學(xué)的話(huà),就按它默認(rèn)的吧。我們新建的這個(gè)content目錄,就是專(zhuān)門(mén)用來(lái)放JSP文件的。

我們?cè)赾ontent目錄下建一個(gè)JSP文件,命名為“hello.jsp”,內(nèi)容可以很簡(jiǎn)單,就在里面寫(xiě)一個(gè)簡(jiǎn)單的話(huà):Hello SImple,代碼略。

這時(shí),整個(gè)項(xiàng)目的文件夾視圖如下:

我運(yùn)行Tomcat服務(wù)器,測(cè)試一下Struts2配置能不能用。首先我們?cè)诘刂窓谳斎耄篽ttp://localhost:8060/SimpleWeb/hello.jsp ,很遺憾,不管用了,報(bào)錯(cuò)了:HTTP Status 404 - The requested resource (/SimpleWeb/hello.jsp) is not available.

正確的做法是,輸入地址: http://localhost:8060/SimpleWeb/hello.action 或者h(yuǎn)ttp://localhost:8060/SimpleWeb/hello 如果出現(xiàn)如下結(jié)果,就說(shuō)明Struts2配置成功了。

注意一點(diǎn),這只是在WEB-INF/content目錄下的文件是通過(guò)這種方式訪(fǎng)問(wèn)的;如果不是在這目錄下,而在項(xiàng)目目錄下,即Eclipse對(duì)應(yīng)項(xiàng)目的WebContent下,就不能這樣訪(fǎng)問(wèn)了。舉例說(shuō),在項(xiàng)目根目錄下建個(gè)hello.jsp的文件,則我們只能通過(guò)http://localhost:8060/SimpleWeb/hello.jsp來(lái)訪(fǎng)問(wèn)。

能通過(guò)hello.action或者h(yuǎn)ello訪(fǎng)問(wèn)WEB-INF/content下的hello.jsp,這種做法,是Struts2.1.6跟Struts2.0不同之處之一。使用時(shí)請(qǐng)確保你使用的Struts版本是2.1.6+。相關(guān)的命名規(guī)范與默認(rèn)的action匹配規(guī)則,請(qǐng)參考官方的文檔:http://struts.apache.org/2.1.6/docs/convention-plugin.html

我們?cè)傩陆ㄒ粋€(gè)Java類(lèi),命名為HelloAction,此類(lèi)須繼承com.opensymphony.xwork2.ActionSupport,代碼如下:

 
 
 
 
  1. package cn.simple.action;
  2. import org.apache.struts2.convention.annotation.Result;
  3. import org.apache.struts2.convention.annotation.Results;
  4. import com.opensymphony.xwork2.ActionSupport;
  5. public class HelloAction extends ActionSupport {
  6.     @Override
  7.     public String execute() throws Exception {
  8.         System.out.println("HelloAction execute ... ");
  9.         return SUCCESS;
  10.     }
  11. }

讓我們?cè)俅卧L(fǎng)問(wèn):http://localhost:8060/SimpleWeb/hello.action 或者h(yuǎn)ttp://localhost:8060/SimpleWeb/hello

可以看出,在Eclipse的控制臺(tái)確定打印出了以下信息,這說(shuō)明,訪(fǎng)問(wèn)請(qǐng)求確定經(jīng)過(guò)了HelloAction類(lèi)。

同時(shí)頁(yè)面是跳到了WEB-INF/content/hello.jsp文件(如下圖),這說(shuō)明請(qǐng)求的確是從HelloAction類(lèi)轉(zhuǎn)發(fā)到了hello.jsp。

看來(lái),好像在不做什么配置,Struts2.1.6也會(huì)找到名為HelloAction的類(lèi)來(lái)處理…/hello.action或者…/hello的請(qǐng)求,而好像也沒(méi)有做什么配置,HelloAction會(huì)自動(dòng)將請(qǐng)求轉(zhuǎn)發(fā)給名為hello.jsp的頁(yè)面,這正是Struts2.1.6的妙用之處,全賴(lài)struts2-convention-plugin-2.1.6.jar這個(gè)插件,具體了解,可看我上面提供的官方鏈接,或者看這位帥哥的翻譯之作:struts2采用convention-plugin實(shí)現(xiàn)零配置。

看了上面的HelloAction的代碼若感到莫名其妙的話(huà),我這里把那些默認(rèn)的、約定俗成的代碼也寫(xiě)出來(lái),這樣,修改后的HelloAction類(lèi)如下:

 
 
 
 
  1. package cn.simple.action;
  2. import org.apache.struts2.convention.annotation.Result;
  3. import org.apache.struts2.convention.annotation.Results;
  4. import com.opensymphony.xwork2.ActionSupport;
  5. @Results({
  6.     @Result(name="success",location="hello.jsp",type="dispatcher")
  7. })
  8. public class HelloAction extends ActionSupport {
  9.     @Override
  10.     public String execute() throws Exception {
  11.         System.out.println("HelloAction execute ... ");
  12.         return SUCCESS;
  13.     }
  14. }

這樣就容易明白許多了。解釋如下:

name = “success” 跟 Action里的execute()方法的返回值SUCCESS(也可寫(xiě)成“success”)對(duì)應(yīng),即若此Action類(lèi)一旦返回SUCCESS,就會(huì)跳到對(duì)應(yīng)的這個(gè)Result去處理。
location = “hello.jsp”,表示請(qǐng)求由這個(gè)Action跳轉(zhuǎn)到hello.jsp這個(gè)頁(yè)面。
type = “dispathcer”,表示轉(zhuǎn)發(fā)方式,具體解釋見(jiàn)下面。

其中type=”dispatcher”表示請(qǐng)求轉(zhuǎn)發(fā),還有另一種常用的叫做type=”redirect”重定向,在下文會(huì)出現(xiàn)。Struts2.1.6的請(qǐng)求轉(zhuǎn)發(fā)和重定向的區(qū)別其實(shí)跟Java Servlet里的是差不多的。Servlet里與其功能等價(jià)的的代碼片斷如下:

 
 
 
 
  1. request.getRequestDispatcher("hello.jsp").forward(request, response);    //請(qǐng)求轉(zhuǎn)發(fā)
  2. response.sendRedirect("hello.jsp");    //重定向

兩者的區(qū)別可以這樣理解:請(qǐng)求轉(zhuǎn)發(fā)(Dispatcher)在轉(zhuǎn)發(fā)到的另一頁(yè)面(如hello.jsp)還能保留Request域里的東西,而重定向(Redirect)的話(huà),就跟它的名字“重定向”一樣,跳到了另一個(gè)頁(yè)面(如hello.jsp),不再跟原來(lái)頁(yè)面(或者一個(gè)action、或者一個(gè)Servlet,或者JSP頁(yè)面)有任何瓜葛,不會(huì)保存原來(lái)頁(yè)面Request域的東西。還有一個(gè)表面上的區(qū)別就是:請(qǐng)求轉(zhuǎn)發(fā)(Dispatcher)到另一個(gè)頁(yè)面(如hello.jsp)后,地址欄里顯示的仍然是上一個(gè)頁(yè)面(這里稱(chēng)頁(yè)面不太合適)的路徑(如hello.action),而重定向則顯示的是新跳到的那個(gè)頁(yè)面的路徑。大家自己測(cè)試一下,觀(guān)察一下,其實(shí)也挺容易理解的。


當(dāng)前名稱(chēng):Struts2.1.6的環(huán)境搭建與示例
URL鏈接:http://www.5511xx.com/article/djsgcjh.html