Freemarker learning records

Source: Internet
Author: User

It mainly involves three files

1. testservlet. Java is as follows:

Package example; import freemarker. template. configuration; import freemarker. template. template; import freemarker. template. templateexception; import Java. io. bufferedwriter; import Java. io. file; import Java. io. filewriter; import Java. io. ioexception; import Java. io. printwriter; import Java. text. simpledateformat; import Java. util. arraylist; import Java. util. calendar; import Java. util. date; import Java. util. hashmap; Import Java. util. list; import Java. util. map; import Java. util. logging. level; import Java. util. logging. logger; import javax. servlet. servletexception; import javax. servlet. HTTP. httpservlet; import javax. servlet. HTTP. httpservletrequest; import javax. servlet. HTTP. httpservletresponse;/*** test * @ author Wesley */public class testservlet extends httpservlet {private configuration CFG; protected void processreque ST (httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {// initialize freemarker configuration, create configuration instance CFG = new configuration (); cfg. setdefaultencoding ("UTF-8"); // set the position of the freemarker template file cfg. setservletcontextfortemplateloading (getservletcontext (), "templates"); // create the data model map root = new hashmap (); // put the corresponding data root. put ("title", "Use freemarker to generate static page instances! "); Root. put ("content", "freemarker is a template engine and a common tool for generating text output based on templates. It is designed to generate HTML web pages by writing freemarker in pure Java, especially for MVC-based applications, although freemarker has some programming capabilities, the Java program usually prepares the data to be displayed, the freemarker generates a page, and the prepared data (such as) is displayed through the template) "); root. put ("author", "Xiao Qiu"); root. put ("Answer", 43); map latestmap = new hashmap (); latestmap. put ("url", "www.baidu.com"); latestmap. put ("name", "Green mouse"); root. put ("latestmap", latestmap); root. put ("indexof", n EW indexofmethod (); List <Map <string, Object> List = new arraylist <Map <string, Object> (); Map <string, object> map11 = new hashmap <string, Object> (); map11.put ("name", "qiuyujiao1"); map11.put ("Age", 21); list. add (map11); Map <string, Object> map22 = new hashmap <string, Object> (); map22.put ("name", "qiuyujiao2"); map22.put ("Age ", 22); list. add (map22); Map <string, Object> map33 = new hashmap <string, Object> (); map33.put ("name", "qiuyujiao3"); map33.put ("Age", 23); list. add (map33); Map <string, Object> map44 = new hashmap <string, Object> (); map44.put ("name", "qiuyujiao4"); map44.put ("Age ", 24); list. add (map44); root. put ("listtest", list); // end model creation --- // obtain the template file template = cfg. gettemplate ("test. FTL "); // start preparing to generate the output, and use the charset of the template file as the charset response of this page. setcontenttype ("text/html; charset =" + T Emplate. getencoding (); printwriter = response. getwriter (); try {// merge the data model and template, and output the result to printwriter (put the data in printwriter to generate a dynamic page) template. process (root, printwriter); file newhtml = gethtmlfile (); dowrite (template, newhtml. getpath (), root); // generate the static page printwriter. print ("<a href = '" + "2013-01-23" + "/" + newhtml. getname () + "'>" + newhtml. getname () + "</a>"); // string Path = dirname + "/" + newhtml. getna Me (); // httpsession session = request. getsession (true); // session. setattribute ("path", PATH);} catch (exception ex) {// logger. getlogger (testservlet. class. getname ()). log (level. severe, null, ex); throw new servletexception ("error occurred in template processing", ex) ;}/ *** to get the generated file, to obtain the file name and path * @ return generated file */private file gethtmlfile () {long htmlname = calendar. getinstance (). gettimeinmillis (); D Ate date = new date (htmlname); simpledateformat F = new simpledateformat ("yyyy-mm-dd"); string dirname = f. format (date); // The directory that stores the generated static page. For example: 2008-9-9 string savedirectory = getservletcontext (). getrealpath ("/") + dirname + "//"; file dir = new file (savedirectory); // If the directory does not exist, create the directory if (! Dir. exists () {dir. mkdir () ;}// generate static file newhtml = new file (DIR + "/" + htmlname + ". html "); Return newhtml;}/*** generate static file * @ Param template: Template * @ Param path: Static Page path * @ Param root: data Model */private void dowrite (template, string path, Map <string, Object> root) {bufferedwriter BW = NULL; try {BW = new bufferedwriter (New filewriter (PATH); template. setencoding (CFG. getdefaultencoding (); template. process (root, BW); BW. flush ();} catch (templateexception ex) {logger. getlogger (testservlet. class. getname ()). log (level. severe, null, ex);} catch (ioexception ex) {logger. getlogger (testservlet. class. getname ()). log (level. severe, null, ex);} finally {try {BW. close ();} catch (ioexception ex) {logger. getlogger (testservlet. class. getname ()). log (level. severe, null, ex) ;}}@ override protected void doget (httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {processrequest (request, response );} @ override protected void dopost (httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {processrequest (request, response );}}

2. The template file rest. example is as follows:

<HTML> 

3. The attached method variable class indexofmethod. Java is as follows:

package example;import java.util.List;import freemarker.template.SimpleNumber;import freemarker.template.TemplateMethodModel;import freemarker.template.TemplateModelException;public class IndexOfMethod implements TemplateMethodModel {public Object exec(List args) throws TemplateModelException {// TODO Auto-generated method stubif (args.size() != 2) {throw new TemplateModelException("Wrong arguments");}return new SimpleNumber(((String) args.get(1)).indexOf((String) args.get(0)));}}

The simple project structure is as follows:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.