欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
用Stripes做Java Web開(kāi)發(fā)2
用約定、不用配置文件

    我們現在有了Java組件,我們該做配置了,把動(dòng)作映射的一個(gè)URL上,并將其連接到我們的兩個(gè)view上面去。等一下!我們在用Stripes,我們不需要外部配置文件!

    雖然這聽(tīng)來(lái)好像好得不像是真的,但這的確是Stripes的一項最具生產(chǎn)效率的功能。Stripes使用約定而非配置文件來(lái)映射動(dòng)作到URL上。我們也無(wú)須使用一個(gè)外部配置文件來(lái)把view映射到一個(gè)個(gè)標記名字上。這意味著(zhù)程序員不用再為了一個(gè)標記名字——比方說(shuō)SUCCESS——的實(shí)際來(lái)源,而在配置文件中跳來(lái)跳去了。沒(méi)有必要在Java和view組件的外部進(jìn)行配線(xiàn),因而導致更好地維護性和更高的生產(chǎn)率。

    Stripes是如何提供隱式的URL映射而無(wú)需在外部配置每一個(gè)動(dòng)作或者而外的annotation呢?這個(gè)可以從Stripes在web.xml中的配置以及它是如何通過(guò)實(shí)用默認法建立URL映射來(lái)解釋。首先,我們來(lái)看看Servlet過(guò)濾器:StripesFilter。其在web.xml中的默認配置如下:

 

<filter>
  <display-name>Stripes Filter</display-name>
  <filter-name>StripesFilter</filter-name>
  <filter-class>
    net.sourceforge.stripes.controller.StripesFilter
  </filter-class>
    <init-param>
    <param-name>ActionResolver.UrlFilters</param-name>
    <param-value>/WEB-INF/classes</param-value>
  </init-param>
</filter>



    當Servlet容器啟動(dòng)的時(shí)候,StripesFilter對其init-param元素執行初始化。其中最重要的init-param元素就是ActionResolver.UrlFilters參數。這個(gè)參數告訴Stripes到哪里查找跟Stripes有關(guān)的類(lèi)。這個(gè)例子里面,Stripes將查找/WEB-INF/classes目錄下的所有實(shí)現ActionBean接口的類(lèi)。每一個(gè)被找到的類(lèi)和其綁定的URL都將被加入一個(gè)Map中。

    讓我們來(lái)看看Stripes是如何處理我們的HelloWorldAction動(dòng)作為例子吧。因為HelloWorldAction類(lèi)位于/WEB-INF/classes目錄下,所以會(huì )被認為是一個(gè)Stripes servlet。在我們的例子當中,其完整類(lèi)名是com.myco.web.stripes.action.example.HelloWorldAction。隨后,其完整類(lèi)名將按照如下法則被翻譯成一個(gè)URL綁定。

1.        將含有www、web、stripes、和action的部分及其以前的內容刪掉。在我們的例子有三個(gè)上述單詞,所以我們得到了example.HelloWorldAction。
2.        如果類(lèi)名中包涵帶Action或Bean的尾巴,刪掉。因為我們的類(lèi)名以Action結尾,我們得到了example.HelloWorld。
3.        將.替換為/,我們得到了example/HelloWorld。
4.        最后,添加上一個(gè)尾綴(默認是.action)從而完成了URL綁定。最后的結果是example/HelloWorld.action。

    現在Stripes找到了ActionBean類(lèi)并為其創(chuàng )建了一個(gè)URL綁定,然后存放在一個(gè)java.util.Map<String, Class<? extends ActionBean>>之中。其中key參數是URL綁定,value參數是實(shí)現ActionBean的類(lèi)名。下面是我們的例子中的Map:

URL綁定:/example/HelloWorld.action
ActionBean類(lèi):com.myco.web.stripes.action.example.HelloWorldAction

    我們要看的第二個(gè)組件是Stripes如何把URL綁定翻譯成你正在做的這個(gè)ActionBean類(lèi)。這是Stripes調度servlet的職責,在web.xml中的配置如下:

<servlet>
     <servlet-name>StripesDispatcher</servlet-name>
     <servlet-class>
        net.sourceforge.stripes.controller.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>StripesDispatcher</servlet-name>
  <url-pattern>*.action</url-pattern>
</servlet-mapping>



    StripesDispatcher的一個(gè)職責就是將URL解析為Stripes的ActionBean類(lèi)。當用戶(hù)激活URL http://host/uri/example/HelloWorld.action的時(shí)候,Stripes調度servlet將在URL映射表中查詢(xún)并找到com.myco.web.stripes.action.example.HelloWorldAction類(lèi),并實(shí)例化產(chǎn)生該類(lèi)的一個(gè)實(shí)例。最后,index方法被激活,因為在annotation中它被定義為默認局柄而在該URL中并沒(méi)有指定一個(gè)事件。

    如果我們想要直接執行HelloWorldAction中的hello方法怎么辦?應該象下面這個(gè)URL這樣把事件的名字放在request的參數中:

http://host/uri/example/HelloWorld.action?hello=&firstName=Mark&age=13

    請注意我們沒(méi)有給hello這個(gè)request參數名指定任何值。在這個(gè)情況下,StripesDispatcher會(huì )把hello這個(gè)這個(gè)request參數名和HelloWorldAction類(lèi)中個(gè)一個(gè)帶有public Resolution hello()簽名的函數識別并映射。該方法名城在初始化的時(shí)候為了性能而緩存在另一個(gè)Map中。

    我們已經(jīng)看到Stripes的基礎以及如果創(chuàng )建簡(jiǎn)單的動(dòng)作和一些該框架是如何運作的細節。通過(guò)在web.xml中的初始化,我們能夠避免用多個(gè)單獨的XML配置文件來(lái)把我們的顯示層組建寫(xiě)在一起。這很重要,原因如下:首先,如果你需要任何改動(dòng),你可以看到一個(gè)URL就立即知道你該查看哪一個(gè)類(lèi)。其次,我們不需要任何單獨的工具來(lái)在你的配置文件過(guò)大而且不可管理的時(shí)候幫助你。通過(guò)消除掉配置文件,我們不再需要給框架一大堆的metadata。最后,我們不再需要為一個(gè)獨立的用來(lái)描述我們的組件是如果相互關(guān)聯(lián)的文件來(lái)一刻不停維護了。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
2 Struts Hello World Example in Eclipse
Stripes框架
Spring3 MVC 深入研究
web.xml配置文件中的servlet和servlet
web.xml配置文件詳解
J2EE學(xué)習之Spring(2) 配置DispatcherServlet - 我的文章 -...
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久