<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 81  文章 - 1033  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    在浮躁的年代里,我們進(jìn)取心太切,患得患失;虛榮心太強(qiáng),戰(zhàn)戰(zhàn)兢兢。一心爭(zhēng)強(qiáng)好勝,惟恐榜上無(wú)名。
    I think I can fly , and flying like a bird !
    程序員一名,已售出,缺貨中!

    我的郵件聯(lián)系方式

    用且僅用于MSN

    博客點(diǎn)擊率
    free web counter
    free web counter

    常用鏈接

    留言簿(36)

    隨筆檔案

    搜索

    •  

    積分與排名

    • 積分 - 186925
    • 排名 - 309

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    ??? 在本篇將會(huì)通過(guò)一個(gè)簡(jiǎn)單卻經(jīng)典的HelloWorld程序手把手的教你如何編寫(xiě)(其實(shí)我更愿意稱(chēng)之為創(chuàng)建,因?yàn)橛辛诉@么強(qiáng)大的框架需要編寫(xiě)的代碼已經(jīng)很少很少)一個(gè)WebWork應(yīng)用程序。即使你從沒(méi)接觸過(guò)WebWork甚至你從沒(méi)用過(guò)任何其他框架,在本篇結(jié)束的時(shí)候你都能夠輕松的通過(guò)WebWork建立簡(jiǎn)單的Web應(yīng)用程序了。不過(guò)我們約定你必須懂一定的HTML和JAVA知識(shí):)。Let's Go!

    ??? 首先自然是下載WebWork的開(kāi)發(fā)包,這個(gè)我就不專(zhuān)門(mén)做一節(jié)了。google一下,到WebWork官方站點(diǎn)下載最新的二進(jìn)制版本,解壓后你會(huì)找到范例、文檔、一些jar、甚至是框架的源代碼。現(xiàn)在先不要被這么多的東西嚇倒,先不要管它們(雖然以后你會(huì)非常的需要它們),我們現(xiàn)在只要找出構(gòu)建基本W(wǎng)eb應(yīng)用程序所需的內(nèi)容,一些jar和配置文件。

    一、搭建骨架

    ??? 在WebWork的開(kāi)發(fā)包中找到下面一些應(yīng)用程序必須的文件,相信這個(gè)難不倒你:)

    ??? ?? xwork.jar? WebWork構(gòu)建所依賴的XWork類(lèi)庫(kù)
    ??? ?? common-logging.jar? 通用的日志類(lèi)庫(kù),WebWork用它為L(zhǎng)og4J或者JDK提供透明的日志記錄
    ??? ?? oscore.jar? OSCore,一個(gè)來(lái)自O(shè)penSymphony公司的通用功能類(lèi)庫(kù)
    ??? ?? velocity-dep.jar? 依賴Velocity類(lèi)庫(kù)
    ??? ?? ognl.jar? 對(duì)象圖導(dǎo)航語(yǔ)言(OGNL),WebWork中使用的表達(dá)式語(yǔ)言
    ??? ?? xwork.xml? WebWork配置文件,為你的Web應(yīng)用程序定義action、result和interceptor
    ??? ?? web.xml? J2EE Web應(yīng)用程序配置文件,為你的Web應(yīng)用程序定義servlet、JSP標(biāo)簽庫(kù)等內(nèi)容


    ??? 現(xiàn)在創(chuàng)建一個(gè)名為HelloWorld項(xiàng)目(用你喜歡和習(xí)慣的IDE),在項(xiàng)目下創(chuàng)建一個(gè)源代碼文件夾如src,一個(gè)web文件夾如webApp,把web.xml放在WEB-INF目錄下,而xwork.xml應(yīng)該被放在WEB-INF\classes下,如果是在IDE環(huán)境下就放在源代碼文件夾下編譯后就會(huì)出現(xiàn)在WEB-INF\classes了。相關(guān)的*.jar自然是放在WEB-INF\lib下了。下面我們對(duì)幾個(gè)配置文件進(jìn)行基本的修改。

    ??? 為了讓W(xué)ebWork正常工作,我們必須配置一個(gè)在上一篇筆記中提到的前端控制器(Front Controller),使特定URL模式的請(qǐng)求都被提交給WebWork處理。這和Struts是相似的。來(lái)看代碼吧(web.xml):

    ?1?<web-app>
    ?2????
    ?3????<servlet>
    ?4???????<servlet-name>webwork</servlet-name>
    ?5???????<servlet-class>
    ?6??????????com.opensymphony.webwork.dispatcher.ServletDispatcher
    ?7???????</servlet-class>
    ?8????</servlet>
    ?9?
    10????<servlet-mapping>
    11???????<servlet-name>webwork</servlet-name>
    12???????<url-pattern>*.action</url-pattern>
    13????</servlet-mapping>
    14????
    15?</web-app>

    ??? 為了使用WebWork的標(biāo)簽庫(kù),還需要給出一個(gè)告訴程序在哪里可以找到標(biāo)簽苦的配置,還是看代碼吧(web.xml):

    ?1?<web-app>
    ?2?????
    ?3???<taglib>
    ?4??????<taglib-uri>webwork</taglib-uri>
    ?5??????<taglib-location>
    ?6?????????/WEB-INF/lib/webwork-2.1.7.jar
    ?7??????</taglib-location>
    ?8???</taglib>
    ?9???
    10?</web-app>

    ??? 你是不是有點(diǎn)奇怪為什么taglib配置的是一個(gè).jar而不是一個(gè)TLD文件,其實(shí)根據(jù)規(guī)范程序會(huì)自動(dòng)到.jar中去找指定位置的TLD,我們暫且不管這個(gè)問(wèn)題吧,先去看看WebWork自己的核心配置文件-xwork.xml吧。

    ??? 說(shuō)明一下,因?yàn)閃ebWork是基于XWork這個(gè)這個(gè)子項(xiàng)目的,所以這個(gè)文件叫做xwork,不要被它弄迷糊了。我們先來(lái)對(duì)xwork.xml做一個(gè)最基本的配置,以后熟悉了再往里面加入自己的東西就很輕松了。(xwork.xml)

    1?<xwork>
    2?????<include?file="webwork-default.xml">
    3?????
    4?????<package?name="default"?extends="webwork-default">
    5?????????<default-interceptor-ref?name="completeStack"/>
    6?????</package>
    7?</xwork>

    ??? 我們暫時(shí)只用關(guān)注一個(gè)問(wèn)題:xwork.xml中包含了一個(gè)名教webwork-default.xml的文件,這個(gè)文件已經(jīng)包含在了webwork的.jar中了,它提供了讓W(xué)ebWork正常運(yùn)行的標(biāo)準(zhǔn)配置,也提供了一些默認(rèn)的處理方式。了解到這里已經(jīng)足夠了,我們繼續(xù)往下走。

    ??? 下面在xwork.xml同一個(gè)目錄下創(chuàng)建一個(gè)webwork.properties配置文件,它定義了一些告訴webwork如何工作的信息,暫時(shí)不用關(guān)注它,在里面加入一行內(nèi)容:(webwork.properties)

    1?webwork.tag.altSyntax?=?true

    ??? 到此,基本的骨架就搭成了,其實(shí)并不復(fù)雜。下面我們就開(kāi)始進(jìn)入真正與業(yè)務(wù)相關(guān)的內(nèi)容吧。

    二、你的第一個(gè)action

    ??? 我們現(xiàn)在假設(shè)HelloWorld的需求是這樣的:當(dāng)用戶訪問(wèn)一個(gè)URL的時(shí)候(如http://localhost/helloworld.action? webwork默認(rèn)的后綴是action,后面的筆記中你會(huì)了解到這個(gè)是可以修改的,比如換成現(xiàn)在比較流行的jspa),都會(huì)有一條HelloWorld問(wèn)候語(yǔ)顯示。從上面提到的webwork前端控制器的知識(shí)可以知道,URL請(qǐng)求會(huì)被映射到webwork中,所以我們要實(shí)現(xiàn)這個(gè)需求要做下面3件事情:
    ??? (1) 創(chuàng)建一個(gè)action類(lèi)(用來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯,并準(zhǔn)備返回)
    ??? (2) 創(chuàng)建一個(gè)result,這里是用JSP的形式,熟練后你可以靈活運(yùn)用velocity、FreeMarker等
    ??? (3) 配置action與result

    ???
    ??? 第一部創(chuàng)建action類(lèi):HelloWorld.java ,還是先看代碼吧:

    ?1?package?example
    ?2?
    ?3?import?com.opensymphony.xwork.Action;
    ?4?
    ?5?public?class?HelloWorld?implements?Action{
    ?6?????private?String?message;
    ?7?????
    ?8?????public?String?execute(){
    ?9?????????message?=?"Hello,?World!\n";
    10?????????message?+=?"The?time?is:\n";
    11?????????message?+=?System.currentTimeMillis();
    12?????????return?SUCCESS;
    13?????}
    14?????
    15?????public?String?getMessage(){
    16?????????return?message;
    17?????}
    18?}

    ??? 注意你所編寫(xiě)的action類(lèi)都必須實(shí)現(xiàn)定義了execute()方法的Action接口,而execute()就是在執(zhí)行這個(gè)action的時(shí)候被WebWork調(diào)用的。

    ??? 在action中定義了message的getter方法,以便JSP標(biāo)簽取得message的值顯示給客戶端。

    ??? 最后execute()方法返回了SUCCESS(其實(shí)就是一個(gè)值為“success”的字符串常量),并且所有的WebWork的action都必須返回一個(gè)result code(一個(gè)說(shuō)明執(zhí)行結(jié)果的字符串)。它告訴WebWork現(xiàn)在的執(zhí)行結(jié)果和下一步應(yīng)該對(duì)應(yīng)到哪個(gè)result,雖然result code不一定必須對(duì)應(yīng)一個(gè)result但是通常都是。既然業(yè)務(wù)已經(jīng)處理完了,下面就來(lái)創(chuàng)建一個(gè)JSP頁(yè)面顯示HelloWorld問(wèn)候語(yǔ)。

    ?1?<%@?taglib?prefix="ww"?uri="webwork"?%>
    ?2?????<html>
    ?3?????????<head>
    ?4?????????????<title>Hello?Page</title>
    ?5?????????</head>
    ?6?????????<body>
    ?7?????????The?message?generated?by?my?first?action?is:
    ?8?????????<ww:property?value="message"/>
    ?9?????????</body>
    10?????</html>
    11?

    ??? 用過(guò)頁(yè)面標(biāo)簽的朋友肯定對(duì)這種代碼很熟悉了,即使你沒(méi)用過(guò)也沒(méi)關(guān)系,下面簡(jiǎn)單介紹一下。第一行標(biāo)簽庫(kù)定義將前綴ww和URI webwork(這個(gè)webwork就是前面在web.xml中定義的URI)之間建立了映射關(guān)系。前綴ww指明了所有WebWork標(biāo)簽在使用的時(shí)候以“ww:”開(kāi)頭。property標(biāo)簽包含了一個(gè)value屬性值,通過(guò)設(shè)置value值,標(biāo)簽可以從action中獲得對(duì)應(yīng)表達(dá)式的內(nèi)容。因?yàn)樵赼ction中創(chuàng)建一個(gè)名為getMessage()的方法,value值為message的property標(biāo)簽就會(huì)得到getMessage()方法調(diào)用后的值。把上面的代碼保存為hello.jsp,放在webApp目錄下。

    ??? 配置你的action與result,已經(jīng)創(chuàng)建了action類(lèi)和視圖,最后還需要將它們聯(lián)系起來(lái)。你可以通過(guò)為action配置一個(gè)特別的URL,以及將SUCCESS這個(gè)result code映射到你剛才創(chuàng)建的JSP來(lái)完成這一步。當(dāng)你配置一個(gè)WebWork action的時(shí)候,必須清楚下面3個(gè)方面:
    ??? (1) action類(lèi)的全名,包含完整的包名
    ??? (2) 你打算將action存放于Web應(yīng)用程序什么位置,即應(yīng)用什么URL
    ??? (3) action可能返回所有結(jié)果碼


    ?1?<xwork>
    ?2?????<include?file="webwork-default.xml">
    ?3?????
    ?4?????<package?name="default"?extends="webwork-default">
    ?5?????????<default-interceptor-ref?name="completeStack"/>
    ?6?????????
    ?7?????????<action?name="helloWorld"?class="example.HelloWorld">
    ?8?????????????<result?name="success">hello.jsp</result>
    ?9?????????</action>
    10?????</package>
    11?</xwork>

    ??? 到這個(gè)時(shí)候就已經(jīng)差不多了,編譯程序并發(fā)布在你喜歡的web容器中。啟動(dòng)服務(wù)器你就可以在瀏覽器中輸入U(xiǎn)RL看看效果了,如http://localhost/helloWorld.action(如果端口為8080,還需要加上端口),這個(gè)時(shí)候你就會(huì)看到瀏覽器中顯示了HelloWorld的信息。這并不是一個(gè)令人興奮的網(wǎng)頁(yè),但是你至少開(kāi)始使用WebWork了,這難道不令人激動(dòng)嗎?

    ??? 當(dāng)然畢竟上這是一個(gè)很簡(jiǎn)單的應(yīng)用,實(shí)際的應(yīng)用會(huì)比這復(fù)雜千倍萬(wàn)倍,你將會(huì)在后面的筆記中慢慢深入WebWork的殿堂,下一篇將會(huì)詳細(xì)講述WebWork中三最為重要的概念-action、result、interceptor并告訴你如何最好的使用它們。讓我們一起期待吧!
    posted on 2007-02-09 12:39 cresposhi 閱讀(3270) 評(píng)論(17)  編輯  收藏

    FeedBack:
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld[未登錄](méi) 2007-02-09 12:58 小祝
    先搶沙發(fā),再看。。。  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-02-09 13:10 ⒍‰羽化絆徑
    板凳我拿走了
    哈哈  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-02-09 13:11 賣(mài)女孩的小火柴
    我也搶個(gè),忽忽~~再別讓魚(yú)哥搶前幾名了  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-02-09 13:14 賣(mài)女孩的小火柴
    雖然看不懂,還是支持一下~~
    嘿咻~嘿咻~
    給abc增加人氣啊  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-02-09 13:29 小祝
    一會(huì)有時(shí)間配的試哈,呵呵。  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-02-09 13:31 施偉
    這個(gè)例子應(yīng)該是差一個(gè)包的,呵呵。自己去研究吧,留點(diǎn)思考的余地給大家!  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-02-09 13:32 施偉
    多謝大家的支持!HOHO~  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-02-09 13:42 睿不可當(dāng)
    不錯(cuò),照著做一個(gè)先,等待三  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-02-09 14:40 梅穎
    來(lái)晚了,罪過(guò)罪過(guò)  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-02-09 16:28 施偉
    不晚不晚,呵呵  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-02-09 19:46 睿不可當(dāng)
    呵呵 ,跟著你學(xué)webwork
    helloworld成功了.
    期待三啊。。。。。。!!!  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-02-09 21:38 小祝
    我配的試了下,成功了,結(jié)果如下:
    The message generated by my first action is:
    Hello, World! The time is: 1171027825781

    其中遇到了幾個(gè)問(wèn)題。
    1.差包webwork-2.1.7.jar(我先就放進(jìn)來(lái)了)。
    2.我用自動(dòng)生成web項(xiàng)目的時(shí)候web.xml帶有頭信息
    <web-app version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    時(shí)會(huì)報(bào)錯(cuò)找不到<taglib>,去掉后面的信息后即可。
    3.<include file="webwork-default.xml">這個(gè)地方后面差一個(gè)結(jié)束符應(yīng)為
    <include file="webwork-default.xml"/>  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-02-09 21:43 小祝
    推薦:http://webwork.javascud.org/
    有很多中文資料。  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-02-10 21:59 施偉
    看來(lái)大家都很用功啊!勤奮的人總會(huì)成功!!!  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-02-11 03:09 sinoly
    踏著56k的電話貓,我來(lái)了。。。
    @賣(mài)女孩的小火柴
    你說(shuō)的話ms對(duì)我意見(jiàn)很大滴說(shuō)?郁悶ing  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-03-02 11:58 施偉
    好久沒(méi)出第三輯,慚愧啊,忙不過(guò)來(lái)。。。
    一定要加把勁,gogogo  回復(fù)  更多評(píng)論
      
    # re: WebWork In Action學(xué)習(xí)筆記(二) WebWork方式的HelloWorld 2007-03-02 17:43 穎穎
    那就再抽時(shí)間,抽抽抽,呵呵,抽光你的血  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲国产精品张柏芝在线观看 | 国产亚洲成AV人片在线观黄桃| 国产免费拔擦拔擦8X高清在线人| 亚洲人成影院在线| 美女黄网站人色视频免费国产| 一个人看的www在线免费视频 | 一级毛片大全免费播放| 久久精品亚洲中文字幕无码麻豆| 色片在线免费观看| 男人和女人高潮免费网站| 自怕偷自怕亚洲精品| 亚洲А∨精品天堂在线| 免费观看激色视频网站bd| a级毛片免费观看在线| 国产精品亚洲自在线播放页码| 亚洲一区无码精品色| 久久久www成人免费毛片| 中文字幕乱理片免费完整的| 亚洲一区AV无码少妇电影| 亚洲AV无码乱码国产麻豆| 国产在线不卡免费播放| 97性无码区免费| 亚洲免费人成在线视频观看| 国产精品亚洲专一区二区三区| 亚洲日韩在线视频| 亚洲国产无套无码av电影| 国产男女猛烈无遮挡免费网站 | 男女交性永久免费视频播放| 色欲国产麻豆一精品一AV一免费| 免费视频精品一区二区| 最新亚洲春色Av无码专区| 亚洲嫩草影院久久精品| 久久久久一级精品亚洲国产成人综合AV区 | 777成影片免费观看| 九九99热免费最新版| 校园亚洲春色另类小说合集| 国产成人精品日本亚洲18图| 亚洲人成在线播放网站岛国| 国产亚洲美女精品久久久2020| 日本免费无遮挡吸乳视频电影| 五月婷婷综合免费|