<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 閱讀(1359) 評論(1)  編輯  收藏 所屬分類: Servlet3

    評論

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

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

    公告

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

    新浪微博,歡迎關注:

    導航

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

    統計

    常用鏈接

    留言簿(58)

    隨筆分類(130)

    隨筆檔案(151)

    個人收藏

    最新隨筆

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲午夜福利717| 国产精品亚洲不卡一区二区三区| 久久精品国产亚洲| 久久久免费观成人影院| 亚洲男人的天堂一区二区| 美女羞羞视频免费网站| 四虎影视永久免费观看网址| 亚洲精品成a人在线观看☆| 男女啪啪永久免费观看网站| 亚洲精品无码专区久久| 女人被弄到高潮的免费视频| 亚洲丁香婷婷综合久久| 国产又长又粗又爽免费视频 | 最近2019中文免费字幕| 最新亚洲精品国偷自产在线| 天天摸夜夜摸成人免费视频| 国产偷国产偷亚洲高清在线| 国产成人亚洲精品91专区手机| 中国在线观看免费的www| 亚洲高清专区日韩精品| jjizz全部免费看片| 亚洲中文字幕无码av永久| 免费人成在线观看视频播放| 成人无码精品1区2区3区免费看| 无码乱人伦一区二区亚洲一| 成年人视频免费在线观看| 亚洲国产精品18久久久久久| 亚洲最大av无码网址| 久操视频免费观看| 亚洲日韩中文字幕一区| 亚洲一区二区精品视频| 最近免费中文字幕大全免费| 亚洲人成网站在线在线观看| 亚洲国产精品成人网址天堂| 免费黄网站在线看| 亚洲乱亚洲乱妇24p| 亚洲人成人一区二区三区| 在线观看无码AV网站永久免费 | 久久精品亚洲综合一品| 免费观看成人毛片a片2008| 一级**爱片免费视频|