模板式生成 JSP页面步骤

2019-04-14 15:22发布

一。准备工作
1.项目中必须有  spring-webmvc-3.2.2.RELEASE.jar  架包。因为等会会用到 里面的 FreeMarkerConfigurer 类。 2.需要在  spring-mvc.xml 文件中配置如下信息:   class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
  
  
   
    0
    UTF-8
    UTF-8
    zh_CN
    true,false
    yyyy-MM-dd HH:mm:ss
    yyyy-MM-dd
    HH:mm:ss
    0.######
    true
   

  

 

3.创建html模板。


 
    个人信息
 
   
   
   
   
   
 
 
 
    

      姓名:${name}
    

    

      昵称:${nickname}
    

     

      地区:${area}
    

     

      性别:${sex}
    

    

      年龄:${age}
    

 


二。代码编写 1.设置响应的格式 response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");

2.获取PrintWriter流,(用来在客户端输出)
PrintWriter writer = null; writer = response.getWriter();
3.创建一个模板对象 Template tpl2 = null;
4.创建一个 StringWriter 类 ,代表一个字符流,可以用其回收在字符串缓冲区中的输出,来构造字符串。
 StringWriter out = null;

5.运用freemarkerConfig 类 制定模板路径生成模板,并赋值给模板对象 Template tpl2 Configuration config = freemarkerConfig.getConfiguration();  此处需要在上方导入在spring-mvc.xml 中配置好的类。 @Autowired
 protected FreeMarkerConfigurer freemarkerConfig;

tpl2 = config.getTemplate("/tpl/MyHtml.html");
6.创建Map 用来放入模板中需要的值,此处自己按需求灵活处理。 Map map = new HashMap();
   map.put("name", "***");
   map.put("nickname", "Hunter");
   map.put("area", "上海");
   map.put("sex", "男");
   map.put("age", 25);
   Map rootMap = new HashMap();
   rootMap.putAll(map);

7.新建StringWriter类 ,代表一个字符流,可以用其回收再字符串缓冲区中的输出,来构造字符串。 out = new StringWriter();
8.将数据模型和模板合并。 tpl2.process(rootMap, out);
9.往页面返回 构建的模板字符串 writer.write(out.toString());
此致就能在页面灵活输出你想要的页面了。
简易代码如下:
package cn.com.hunter.controller; import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import freemarker.template.Configuration;
import freemarker.template.Template;
@Controller
@RequestMapping(value="/Template")
public class TemplateController {
 
 @Autowired
 protected FreeMarkerConfigurer freemarkerConfig;
 
 @RequestMapping(value="/Template.action")
 public void TemplateWtite(HttpServletRequest request,HttpServletResponse response){
  PrintWriter writer = null;
  try {
   response.setCharacterEncoding("utf-8");
   response.setContentType("text/html; charset=utf-8");
   writer = response.getWriter();
   Template tpl2 = null;
   StringWriter out = null;
   Configuration config = freemarkerConfig.getConfiguration();
   Map map = new HashMap();
   map.put("name", "红涛");
   map.put("nickname", "Hunter");
   map.put("area", "上海");
   map.put("sex", "男");
   map.put("age", 25);
   Map rootMap = new HashMap();
   rootMap.putAll(map);
   out = new StringWriter();
   tpl2 = config.getTemplate("/tpl/MyHtml.html");
   tpl2.process(rootMap, out);
   
   writer.write(out.toString());
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } finally {
   if (writer != null)
    writer.close();
  }
 }
}