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

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

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

    聶永的博客

    記錄工作/學(xué)習(xí)的點(diǎn)點(diǎn)滴滴。

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

    老調(diào)重彈。對SSH經(jīng)典組合有些膩,不再那么輕,重返到若干年前的原始。

    Servlet的輕巧高效,F(xiàn)reemarker的強(qiáng)大簡便,兩者結(jié)合將是超輕的組合,即可避免丑陋的Java代碼和HTML代碼雜揉,又可高效基于模板的站點(diǎn)開發(fā)。

    閑話少說,項(xiàng)目需要:

    freemarker-2.3.13.jar

    servlet.jar

    定義兩個(gè)Servlet:

    HelloAction.java 對應(yīng) /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 {
            // 填充數(shù)據(jù)類型
            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;
            }
        }
    }

    對應(yīng)模板:

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

     

    HiAction.java 對應(yīng) /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);
        }
    }

    對應(yīng)的模板:

    <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轉(zhuǎn)向使用到的HTML資源文件。

    很簡陋,但湊合著能看。

    項(xiàng)目源代碼已經(jīng)打包如下:

    下載源文件

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

    評論

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

    效率是提高了 但是沒有jsp那樣好的設(shè)計(jì)頁面 除非提取出業(yè)務(wù)部分  回復(fù)  更多評論   

    公告

    所有文章皆為原創(chuàng),若轉(zhuǎn)載請標(biāo)明出處,謝謝~

    新浪微博,歡迎關(guān)注:

    導(dǎo)航

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

    統(tǒng)計(jì)

    常用鏈接

    留言簿(58)

    隨筆分類(130)

    隨筆檔案(151)

    個(gè)人收藏

    最新隨筆

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产精品成人免费一区二区| 日本高清免费观看| 女人18特级一级毛片免费视频| 亚洲2022国产成人精品无码区| 岛国岛国免费V片在线观看| 四虎国产精品免费视| 午夜亚洲国产精品福利| 国产又黄又爽又猛的免费视频播放| 7777久久亚洲中文字幕| 三年片在线观看免费大全| 久久亚洲国产成人影院| 巨胸喷奶水视频www网免费| 亚洲AV日韩AV一区二区三曲| 国产精品麻豆免费版| 一本久久免费视频| 亚洲精品无码久久久久sm| 国产在线精品免费aaa片| 国产成人精品免费久久久久| 亚洲毛片免费视频| 最近免费中文字幕大全视频 | 亚洲一区二区三区偷拍女厕| 国产伦精品一区二区免费| 亚洲av激情无码专区在线播放| 久久久精品2019免费观看| 亚洲人成www在线播放| 国产免费直播在线观看视频| www成人免费观看网站| 亚洲av日韩av无码| 成年女人看片免费视频播放器| 亚洲AV噜噜一区二区三区| 亚洲综合久久夜AV | 18女人腿打开无遮掩免费| 亚洲色一区二区三区四区| 亚洲国产成人a精品不卡在线| 久久久久久国产精品免费免费男同 | 91老湿机福利免费体验| 亚洲伊人久久大香线蕉AV| 国产亚洲精品线观看动态图| 最近中文字幕mv免费高清视频8| 久久久久久久久无码精品亚洲日韩| 久久久亚洲精品蜜桃臀|