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

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

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

    聶永的博客

    記錄工作/學習的點點滴滴。

    介紹一個為Servlet增加REST URL支持的超小框架,一點都不侵入!

    這個框架(ServletRest)最近剛剛被提交上谷歌代碼托管,目標是為servlet增加rest風格URL支持,僅僅如此而已,目標非常明確:不做那么多,只做一點點。

    說這個很輕、很微小的框架,一點都不過分,只有10個java文件,只是用注解的話,那就可以減少為7個java文件。

    說這個小東西目標明確,一點不摻假,就是為現有的servlet增加rest風格的URL支持,僅此而已。

    我們表示一個具有結構形式的URL為:

    /book/head first java/chapter/12 看圖說故事

    傳統的servlet在URL處怎么映射呢 ?

    /book/*

    那么chapter怎么辦 ?

    /chapter/*(這里假設/book/*排在較上位置)

    顯然上面的鏈接地址則很難到達 /chapter/*。當然會有兄弟跳出來說,這一切可以交給 /book/*進行處理,嗯,book也一并處理了chapter部分,當然是可以的,帶來了責任不單一的問題了,混雜在一起,造成代碼管理的混亂。

    那么怎么在ServletRest里面怎么做呢 ?

    @RestSupport("/book/*/chapter/*")
    其風格完全是以往的servlet映射的風格,只不過支持的參數多了些。
    更重要的是以往的Servlet編程經驗一點都沒有舍棄,都還保留著。在ServletRest里沒有強迫人們按照新的繼承格式創造一個處理類,還是和以往一樣,創建一個需要繼承 HttpServlet 的servlet,重寫GET、POST、DELETE、PUT等方法,在類的合適位置添加上注解即可:
    @RestSupport("/book/*/chapter/*") 即可。當然這部分可以在xml文件中完成配置,下一篇文章會講到。
    這里有一個示范:
    @RestSupport("/book/*/chapter/*")
    public class ChapterServlet extends HttpServlet {
            private static final long serialVersionUID = -1534235656L;
    
            protected void doGet(HttpServletRequest request,
                            HttpServletResponse response) throws ServletException, IOException {
                    // code here ...
            }
    
            protected void doPost(HttpServletRequest request,
                            HttpServletResponse response) throws ServletException, IOException {
                    // code here ...
            }
    
            protected void doPut(HttpServletRequest request,
                            HttpServletResponse response) throws ServletException, IOException {
                    // code here ...
            }
    
            protected void doDelete(HttpServletRequest request,
                            HttpServletResponse response) throws ServletException, IOException {
                    // code here ...
            }
    }
    RestSupport同時支持多個url @RestSupport({"url1","url2"}),除此之外,沒有多余功能。

     

    那么怎么在項目中使用呢 ?

    在web.xml 中配置filter:

    <filter>
      <filter-name>RestFilter</filter-name> 
      <filter-class>com.servlet.rest.RestFilter</filter-class> 
      <init-param>
        <param-name>scanPackage</param-name> 
        <param-value>com.yong.test.servlet</param-value> 
      </init-param>
    </filter>
    <filter-mapping>
      <filter-name>RestFilter</filter-name> 
      <url-pattern>/*</url-pattern> 
    </filter-mapping>

    scanPackage需要接收一個需要掃描的包的參數,若有多個包,可以包路徑之間有一個分隔符逗號“,”,eg:

    com.yong.test.servlet,com.xiaomin.bookstore

    ServletRest 注解需要JDK 1.5支持,Servlet 2.*, 3.* 版本,僅僅把ServletRest-0.8.jar (下載地址)放到項目classpath中,并且不依賴于第三方JAR包,除了servlet.jar之外。

    在運行期間可以對Servlet的進行動態裝載和卸載等操作,ServletRest已經封裝了相應的接口(必須從全局Context中獲取,下面代碼是從示范JSP代碼中摘取):

    		ServletFactory servletFactory = (ServletFactory)application.getAttribute("servletFactory");
    		
    		// 注冊新的Servlet
    		String mappingUrl = "新的Servlet映射URL";
    		Class servletClass = Class.forName("要映射的Servlet Class路徑");
    		
    		servletFactory.register(mappingUrl, servletClass);
    		
    		// 注銷Servlet
    		//servletFactory.destory(servletClass);

     

    假如不在JSP中操作,那就需要:

    getServletContext().getAttribute("servletFactory");

    ServletRest遵循的原則和原有的servlet容器處理方式一致,一個URL對應一個Servlet實例原則。

    更多信息請閱讀ServletRest源代碼。

    posted on 2010-10-01 16:06 nieyong 閱讀(4533) 評論(1)  編輯  收藏 所屬分類: Servlet3

    評論

    # re: 介紹一個為Servlet增加REST URL支持的超小框架,一點都不侵入![未登錄] 2013-12-24 01:42 Jerry

    入侵的很嚴重!  回復  更多評論   

    公告

    所有文章皆為原創,若轉載請標明出處,謝謝~

    新浪微博,歡迎關注:

    導航

    <2010年10月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    統計

    常用鏈接

    留言簿(58)

    隨筆分類(130)

    隨筆檔案(151)

    個人收藏

    最新隨筆

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 成人A毛片免费观看网站| 亚洲尤码不卡AV麻豆| 国产极品粉嫩泬免费观看 | A毛片毛片看免费| 国产成人免费高清激情明星| 午夜影视在线免费观看| 亚洲AV永久无码精品| 亚洲乱妇老熟女爽到高潮的片| 色老头综合免费视频| 嫖丰满老熟妇AAAA片免费看| 亚洲一级特黄大片无码毛片| 亚洲国产美女精品久久久久| 国产乱妇高清无乱码免费| 午夜网站免费版在线观看| 亚洲午夜视频在线观看| 成人a毛片视频免费看| 丁香花在线观看免费观看| 亚洲男人的天堂在线播放| 一级大黄美女免费播放| 青苹果乐园免费高清在线| 亚洲国产精品久久久久婷婷软件| 亚洲AV无码成人精品区狼人影院| 少妇太爽了在线观看免费视频| 在线亚洲精品自拍| 中文字幕视频免费在线观看| 国产一级做a爱免费视频| 国产午夜亚洲精品| 免费视频淫片aa毛片| 亚洲大码熟女在线观看| 四虎在线免费播放| 亚洲欧美日韩中文无线码| 日美韩电影免费看| 深夜福利在线免费观看| 男人的天堂亚洲一区二区三区 | 亚洲国产精品一区二区第一页| 日本免费v片一二三区| 亚洲高清有码中文字| 又黄又爽又成人免费视频| 国产v亚洲v天堂a无| 国产成人啪精品视频免费网| 免费在线观看一区|