亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JavaPub系列--webwork開發指南-1

2019-11-18 14:23:35
字體:
來源:轉載
供稿:網友

1 如何安裝
1.1 下載后,解包到你選擇的目錄
復制/lib/webwork.jar到你自己的web應用的/WEB-INF/lib目錄下,webwork在某些功能方面需要依靠其他的支持包,這些包是在supporting-jars的文件夾里,你需要做的是把這些包包含到你的classpath中。
1.2 修改web.xml文件
修改web.xml文件以包含webwork的設置,如何設置的內容,請察看$WEBWORK/src/resource/web/WEB-INF/web.xml文件。
1.3 Taglib部分的選擇
假如你不打算使用taglib、Velocity、或者XSLT,僅僅只需要在web.xml中不要包含這些內容就可以了。
1.4 Log的設置
Webwork使用log4j,假如你的app server沒有安裝log4j,你需要增加log4j,復制log4j.jar文件到合適的lib目錄。假如你使用tomcat,那么安裝目錄是$TOMCAT_HOMElib,當然也可以安裝到你的web應用的路徑。但需要注重的是假如appserver也適用log4j,你需要小心版本沖突。
1.5 (可選)javaclient
假如你打算在一個javaclient中使用webwork,那么需要將webworkclient.jar增加到你的client的classpath中,這將答應webwork使用ClientServlet的dispatch方法。另外client還需要引用log4j.jar.
到此,安裝已經完成,你可以開始開發你的webwork的action和view了。來組建你的應用
2 設置webwork
2.1 Framework部分
2.1.1 基本配置文件
webwork和其他的mvc框架一樣,通過設置PRoperty文件就可以配置webwork,通過配置文件,你可以設置webwork的行為。缺省情況下,webwork尋找兩個property文件:webwork.properties和default.properties,來發現webwork.configuration.properties屬性,這個屬性的值是用來裝載你實際配置webwork的配置文件。
webwork.configuration.properties的缺省值是:views,webwork,webwork/default.
這個用逗號分割的列表是告訴webwork去尋找views.properties、webwork.properties和default.properties屬性文件。你可以在webwork.properties文件中定義任何屬性設置來覆蓋default.properties中的設置,也可以為你的應用定義新的屬性值。還需要在views.properites中定義你的views。
下面是webwork識別的屬性列表:
Properties
? webwork.action.packages - When you refer to actions in URLs, you may include the absolute or a relative package name. If you use a relative name, WW will prefix the name with your list of prefixes to see if it can find the action. You will normally override this property.
? webwork.action.factory - The action factory WW will use to retrieve the desired action. DefaultActionFactory is the default. It chains together factories to provide a chain of responsibility. It will ask the first factory in the chain for the action. This factory will either return the appropriate action or pass the request up the chain for the next factory to service the request.
? webwork.configuration - Class WW will use to load configurations. The default is DefaultConfiguration.
? webwork.configuration.properties - The list of property files WW will load. By default, WW will load webwork.properties and default.properties files to look for this property setting. It will then load all indicated property files and XML view config file indicated by webwork.configuration.xml. Only these last configuration files are used. By default this property is set to views,webwork,webwork/default.
? webwork.configuration.xml - The XML view configuration file. The default is actions. You can null it by setting its = to nothing if you do not plan to map your views this way.
? webwork.log4j.configfile - The configuration file to use to configure log4j logger. You can null it by setting its = to nothing if you do not want WW to configure log4j.
? webwork.action.extension - The extension WW will use to identify an action. You will need to modify your web.xml as well if you change it from the default “action.”
? webwork.multipart.parser - The parser WW should use for multi-part content.
? webwork.multipart.saveDir - The Directory WW should save the multi-part content to.
? webwork.multipart.maxSize - The maximum file size WW will allow for multi-part content
作為實例你可以參看缺省配置文件:default.properties.
2.1.2 如何覆蓋一個屬性
覆蓋一個ww的屬性是很輕易的,它在你的classpath路徑中搜索webwork.properties文件。通常你可以將這個文件放在你的WEB-INF/classes目錄下。在這個文件中,你增加你想要覆蓋的屬性。另外,你也可以增加你程序中需要使用的其他屬性,并可以通過webwork.config.Configuration的靜態方法來訪問這些屬性。
例如:我們可以在webwork.properties使用如下行,包含(Acme公司的action)來覆蓋webwork.action.packages屬性。
Webwork.action.packages=com.acme.action
2.2 Views
Views.properties文件定義了對應于Action或者jsp mappings的別名,這樣可以答應你抽象的引用Actions和JSP。例如:你可以為testfoo.action定義一個別名為Test,那么ww將從views.properties中解析testfoo.action為Test.

<form action="<webwork:url page="testfoo.action"/>" method="POST">
下面列示的是一個views.properties文件的范例。注重:Test!foo定義了驅動action的命令,這意味著testfoo.action別名將導致ww獲取Test action并調用doFoo方法。返回值是sUCcess,那么ww將解析別名testfoo.success并將test.jsp顯示出來。
Testfoo.action=Test!foo
testfoo.success=test.jsp
假如你喜歡在xml文件中定義你的view。,而不是在一個properties文件中,那么你可以提供一個actions.xml文件來解決這個問題。缺省情況下,ww將讀取該文件中定義的任何views,這里有一個actions.xml文件的實例。
這個xml文件的DTD文件是webwork的發布包的/etc/actions.dtd文件。
是使用如下得的算法來從配置文件中找到一個view的:
查詢一個配置文件的actionName.viewName入口,若找到,就使用這個屬性值,假如找不到,那么action的名稱中就被移去部分,直到找到匹配項。例如:我們有如下的一個view mapping,并有一個foo.bar的action被執行,它的返回為success。Ww將要搜索foo.bar.success,然而,并不能找到匹配項。所以按照該算法。bar被移去,然后搜索foo.success,結果是找到。這答應你定義象login,error,success或任何你需要的得全局mapping。
foo.success=foo.jsp
2.3 Logger
Ww使用log4j來記錄日志的,這是一個強大的彈性的日志器,為你的應用提供服務。Ww通過一個property文件log4j.properties來配置logger,如下:
# A log4j properties file
### The WebWork console appender
log4j.category.webwork=DEBUG,WebWorkConsole
log4j.additivity.webwork=false
log4j.appender.WebWorkConsole=org.apache.log4j.ConsoleAppender
log4j.appender.WebWorkConsole.Threshold=DEBUG
log4j.appender.WebWorkConsole.layout=org.apache.log4j.PatternLayout
log4j.appender.WebWorkConsole.layout.ConversionPattern=[%x (%c{1})] %m%n
log4j.category.webwork.action.test=INFO
2.3.1 如何在actions中使用log
大部分應用的actions是從基礎action ActionSupport繼續來的,這個基礎action提供了一個protected的log屬性給你,用來在你的actions中輸出logs
2.3.2 如何將log記錄到一個文件
用一個符合你需要的log4j配置來覆蓋ww的webwork.log4j.configfile屬性,你可以指定一個屬性或者一個XML文件。
3 Model-1與Model-2
一個web應用的framework最重要的任務就是支持邏輯、內容、和表現層的分離,假如沒有實現這些,維護起來是很麻煩的。假如這樣進入小組開發,那么開發過程是很困難的。而實現這些分離的流行辦法是采用MVC的設計模式,MVC的模式將這些代碼分離成幾部分來處理model(商業邏輯)、controller(應用邏輯)、view。隨著這種分離,下一個問題就是controller如何和view之間進行交互。現在有兩種流行的模型:Model-1和Model-2
3.1 Model-1
Model-1的基本思路是從界面層調用controller的代碼。如:JSP或模版,假如你使用JSP,那就意味著webwork的action是通過“webwork:action”tag來執行的或通過使用“webwork:bean”來調用javabean來執行的。
3.2 Model-2
Model-2的方法:對于那些代碼被調用,使用哪個view來顯示,通常由第三方(通常是一個servlet dispatcher),這個分發器(dispatcher)將對HTTP的請求的URL進行解碼,然后決定應該執行什么代碼。代表控制代碼的java對象被找到并執行,然后進行一些自定義的應用邏輯和商業邏輯的處理,執行完成后,分發器(dispatcher)將forward訪問請求到一個view處理器(如:JSP),然后前面處理的數據就被這個view顯示出來。
3.3 如何使用MVC
因為controller邏輯和顯示的產生是完全分離的,那么根據執行的結果而顯示不同的view給用戶是完全可能的,如:假如處理過程出錯,那么一個錯誤頁面將被顯示出來。
Model-1的優點如下:
l 不需要在代碼和顯示間建立一個映射。
l 很輕易就能從JSP或模版中知道是什么代碼被執行。
Model-2的優點:
l 清楚的代碼和顯示層的劃分,同一個顯示頁可以被許多不同的action復用,每個action可以相異地訪問數據,但使用相同的方式來顯示。
l 假如Action的處理結果有許多不同的狀態,如:“success”、“need more input”、“error occurred”等,那么使用Model-2就很輕松的針對不同的狀態使用不同的葉面。
關于什么時候使用什么模式,一個簡明扼要的規則是:在為顯示而查詢數據的read-type的代碼,就使用Model-1,而對于數據被action更新或一個流程需要處理就使用Model-2。
4 Action API
Actions 是webwork的中心,是你應用的controller,例如:讓我們來看一個表單發布的普通流程。用戶輸入信息并發布它,使用ww你應該將這個表單post給一個action(*.action)的URI。Servlet容器看到所有action URI被映射到分發器(dispatcher)servlet。所以這個post也被送到分發器來處理。分發器在URI的基礎上找到合適的action并建立它的context,context建立好之后,分發器將調用action的執行方法,action將執行它的工作并返回一個字符串給分發器,讓分發器用來決定什么視圖應該顯示給用戶。大多數情況,你將返回SUCCESS, ERROR, INPUT, 或者 LOGIN。為完成這些你需要提供一個view mapping entry來將這些映射到view。
Ww需要所有的action有相應的view,但這個規則有2處例外,第一個是:假如你的action是一個chain中的一部分,那么你不需要相應的view,只有chain中的最后一個action需要一個view。第二個例外是:假如你的action返回NONE,這是一個非凡的標示。Ww用來指示分發器不要forward這個請求到一個view。這個假設是你提供任何請求的必須的處理,如:respond.sendRedirect()。
Action的強大功能來自于它的context,當得到一個action,那么它的context由DefaultActionFactory來構建,這個類將其他設置action的context的factories鏈接在一起。例如:假設你的action是一個java action,缺省action factory將委派查找action給ParametersActionFactory,這個類將又委派給下一個factory,依次往下委派。直到JavaActionFactory 來處理這個調用并返回 Java action. ParametersActionFactory 然后在request的參數的基礎上設置這個action的所有 setters .。而各層次的factories可能也可能不參與設置這個action的context。某個factories 是通過檢查一個marker接口來決定是否參與設置action的context。. WW 提供了幾個 marker 接口,action可以有選擇的來實現 that an action may choose to implement. 另外,這些層次的 factories 答應你從Java, JSP, Javascript, 和 XML 文件來創建action. 但是,大多數情況下你的action是繼續自ActionSupport 的Java文件。
(未完待續)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
动漫精品一区二区| 高清视频欧美一级| 亚洲欧美日韩一区二区三区在线| 91免费看片在线| 日韩精品免费观看| 岛国精品视频在线播放| 欧美中文字幕精品| 欧美日韩免费区域视频在线观看| 久久精品国产亚洲一区二区| 国产精品免费一区二区三区都可以| 浅井舞香一区二区| 国产精品吴梦梦| 中文国产成人精品久久一| 欧美乱大交xxxxx另类电影| 亚洲最新在线视频| 久久亚洲精品视频| 日本久久中文字幕| 国产精品啪视频| 色综合视频一区中文字幕| 成人精品视频99在线观看免费| 欧美亚洲视频在线观看| 日韩av网站大全| 日韩成人在线视频| www.亚洲男人天堂| 日韩欧中文字幕| 亚洲欧美日本精品| 欧美电影免费观看大全| 最近2019免费中文字幕视频三| 亚洲美女在线观看| 97激碰免费视频| 国产一区私人高清影院| 欧美天天综合色影久久精品| 久久久久免费视频| 成人免费观看49www在线观看| 久久影院免费观看| 国产香蕉一区二区三区在线视频| 日韩欧美中文免费| 欧美成人一区在线| 日韩精品中文字幕在线观看| 91在线国产电影| 一本色道久久综合狠狠躁篇的优点| 欧美老少做受xxxx高潮| 亚洲精品国产精品乱码不99按摩| 日韩视频欧美视频| 国产欧美久久一区二区| 日本一区二区三区在线播放| 2019中文字幕全在线观看| 国产成人鲁鲁免费视频a| 8x拔播拔播x8国产精品| 亚洲另类xxxx| 色婷婷综合成人av| 国产伦精品一区二区三区精品视频| 国产欧美日韩亚洲精品| 欧美激情精品久久久久久免费印度| 欧美国产日韩精品| 国产一区二区三区久久精品| 日韩成人在线网站| 中文亚洲视频在线| 国产成人啪精品视频免费网| 中文字幕在线国产精品| 国产日韩av在线播放| 38少妇精品导航| 91在线视频九色| 亚洲国产又黄又爽女人高潮的| 亚洲在线免费视频| 欧美性猛交丰臀xxxxx网站| 亚洲网在线观看| 久久久亚洲欧洲日产国码aⅴ| 国产欧美日韩专区发布| 视频在线观看一区二区| 国产原创欧美精品| 色先锋久久影院av| 欧美激情国产高清| 亚洲视频在线观看视频| 视频一区视频二区国产精品| 国产欧美最新羞羞视频在线观看| 欧美日韩成人黄色| 色av吧综合网| 国产91精品在线播放| 九九热99久久久国产盗摄| 欧美国产视频一区二区| 91精品国产色综合久久不卡98口| 国产精品美女免费看| 亚洲欧美日韩图片| 久久久亚洲影院你懂的| 日韩免费中文字幕| 最近2019免费中文字幕视频三| 夜夜嗨av一区二区三区四区| 日韩一中文字幕| 欧美国产精品人人做人人爱| 欧美成人四级hd版| 国产成人精品综合| 日本亚洲欧洲色α| 日韩av日韩在线观看| 久久精品99国产精品酒店日本| 亚洲精品456在线播放狼人| 久久久亚洲天堂| 欧美日韩国产黄| 国产精品69精品一区二区三区| 精品日韩美女的视频高清| 日本韩国欧美精品大片卡二| 精品视频在线观看日韩| 伦伦影院午夜日韩欧美限制| 亚洲综合视频1区| 91豆花精品一区| 亚洲视频在线观看视频| 国内精品400部情侣激情| 亚洲社区在线观看| 欧美激情xxxx性bbbb| 亚洲激情视频网站| 色午夜这里只有精品| 97视频网站入口| 久久精品99久久香蕉国产色戒| 欧美性猛xxx| 国产成人在线亚洲欧美| 亚洲精品成人av| 亚洲永久免费观看| 国产成人jvid在线播放| 性亚洲最疯狂xxxx高清| 日韩性生活视频| 国产精品久久久精品| 中文字幕日本欧美| 韩国v欧美v日本v亚洲| 国产精品欧美一区二区| 欧美精品电影免费在线观看| 久久久久国产精品www| 欧美日韩国产123| 国产69精品久久久久9| 久久精品电影网| 成人夜晚看av| 国产精品日韩欧美| 久久69精品久久久久久国产越南| 国产精品精品久久久久久| 亚洲欧美国产va在线影院| 欧美黑人国产人伦爽爽爽| 亚洲综合精品伊人久久| 国产午夜精品一区理论片飘花| 日韩a**中文字幕| 日韩高清欧美高清| 欧美一级片一区| 自拍偷拍亚洲欧美| 91久久久亚洲精品| 国产精品视频自拍| 亚洲亚裔videos黑人hd| 97激碰免费视频| 欧美日韩999| 精品国产一区二区三区四区在线观看| 亚洲另类图片色| 国产亚洲一级高清| 亚洲欧美中文日韩v在线观看| 久久久久久久久久国产精品| 久久久久久有精品国产| 成人一区二区电影| 精品国产鲁一鲁一区二区张丽| 精品美女永久免费视频| 国产精品欧美激情| 国产精品美女www| 欧美高清在线播放| 国产精品一区二区三区免费视频| 国产欧美一区二区三区四区| 精品高清一区二区三区| 91精品视频观看| 92国产精品久久久久首页| 欧美视频精品一区|