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

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

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

    聶永的博客

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

    很輕的,Servlet + Freemarker 組合體,沒有那么硬~

    老調重彈。對SSH經典組合有些膩,不再那么輕,重返到若干年前的原始。

    Servlet的輕巧高效,Freemarker的強大簡便,兩者結合將是超輕的組合,即可避免丑陋的Java代碼和HTML代碼雜揉,又可高效基于模板的站點開發。

    閑話少說,項目需要:

    freemarker-2.3.13.jar

    servlet.jar

    定義兩個Servlet:

    HelloAction.java 對應 /hello,借助Freemarker硬編碼輸出

    public class HelloAction extends HttpServlet {
        private static final long serialVersionUID = -6082007726831320176L;

        private Configuration configuration;
        public void init() throws ServletException {
            configuration = new Configuration();
            configuration.setServletContextForTemplateLoading(getServletContext(), "WEB-INF/pages");
            configuration.setEncoding(Locale.CHINA, "UTF-8");
        }

        @SuppressWarnings("unchecked")
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 填充數據類型
            Map map = new HashMap();
            map.put("userName", "小敏");   
            Template template = configuration.getTemplate("hello.html");
            response.setContentType("text/html; charset=" + template.getEncoding());
            Writer out = response.getWriter();
            try{
                template.process(map, out);
            }catch (TemplateException e) {
                e.printStackTrace();
            }
        }

        public void destroy() {
            super.destroy();
            if(configuration != null){
                configuration = null;
            }
        }
    }

    對應模板:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>使用Freemarker渲染2</title>
    </head>
    <body>
    你好, ${userName!} !
    </body>
    </html>

     

    HiAction.java 對應 /hi ,借助Freemrker Servlet的攔截功能,如以往寫代碼方式,感覺不到Freemarker的存在。

    public class HiAction extends HttpServlet {
        private static final long serialVersionUID = 518767483952153077L;

        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {

            request.setAttribute("thename", "小敏");
            request.getRequestDispatcher("/WEB-INF/pages/hi.html").forward(request, response);
        }
    }

    對應的模板:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>使用Freemarker渲染</title>
    </head>
    <body>
    hi ${thename!}~<br />
    </body>
    </html>

    但需要在web.xml 配置文件中定義如下:

    <servlet>
        <servlet-name>freemarker</servlet-name>
        <servlet-class>
            freemarker.ext.servlet.FreemarkerServlet
        </servlet-class>

        <!-- FreemarkerServlet settings: -->
        <init-param>
            <param-name>TemplatePath</param-name>
            <param-value>/</param-value>
        </init-param>
        <init-param>
            <param-name>NoCache</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>ContentType</param-name>
            <param-value>text/html; charset=UTF-8</param-value>
            <!-- Forces UTF-8 output encoding! -->
        </init-param>

        <!-- FreeMarker settings: -->
        <init-param>
            <param-name>template_update_delay</param-name>
            <param-value>0</param-value><!-- 0 is for development only! Use higher value otherwise. -->
        </init-param>
        <init-param>
            <param-name>default_encoding</param-name>
            <param-value>UTF-8</param-value><!-- The encoding of the template files. -->
        </init-param>
        <init-param>
            <param-name>number_format</param-name>
            <param-value>0.##########</param-value>
        </init-param>

        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>freemarker</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

    使用哪一種組合方式,看您喜好了。

    借助于Freemarker自身的Servlet工具,只是用于攔截Servlet中forward轉向使用到的HTML資源文件。

    很簡陋,但湊合著能看。

    項目源代碼已經打包如下:

    下載源文件

    posted on 2009-11-10 16:52 nieyong 閱讀(1353) 評論(1)  編輯  收藏 所屬分類: Servlet3

    評論

    # re: 很輕的,Servlet + Freemarker 組合體,沒有那么硬~[未登錄] 2009-11-11 15:58 咖啡妝

    效率是提高了 但是沒有jsp那樣好的設計頁面 除非提取出業務部分  回復  更多評論   

    公告

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

    新浪微博,歡迎關注:

    導航

    <2009年11月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    統計

    常用鏈接

    留言簿(58)

    隨筆分類(130)

    隨筆檔案(151)

    個人收藏

    最新隨筆

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 老汉精品免费AV在线播放| 亚洲va久久久久| WWW免费视频在线观看播放| 日本成人免费在线| 亚洲欧洲日产国码久在线| 精品国产sm捆绑最大网免费站| 亚洲а∨天堂久久精品9966| 久久免费观看国产精品| 亚洲va在线va天堂va不卡下载| 亚洲综合久久综合激情久久| a级毛片在线免费观看| 国产亚洲av人片在线观看| 中国内地毛片免费高清| 亚洲va国产va天堂va久久| 亚洲免费人成在线视频观看| 久久亚洲国产成人亚| 女人隐私秘视频黄www免费| 亚洲精品乱码久久久久久久久久久久| 亚洲视频一区调教| 叮咚影视在线观看免费完整版| 日韩免费a级毛片无码a∨| 亚洲中文字幕无码中文| 日本不卡免费新一二三区| 瑟瑟网站免费网站入口| 亚洲午夜久久久影院伊人| 日本高清高色视频免费| 亚洲伦理一区二区| 24小时免费直播在线观看| 亚洲AV无码专区在线厂| 亚洲自偷自偷图片| 亚洲免费在线观看视频| 亚洲AV色无码乱码在线观看| 国产精品亚洲玖玖玖在线观看| 亚洲高清中文字幕免费| 国产成人无码免费视频97| 四虎影视久久久免费| 婷婷精品国产亚洲AV麻豆不片 | 久久精品国产亚洲77777| 国产精品久久久久久久久免费| 亚洲国产一成久久精品国产成人综合 | 无码色偷偷亚洲国内自拍|