java-使用 freemarker 替换 jstl EL 开发 springmvc web项目

java-使用 freemarker 替换 jstl EL 开发 springmvc web项目


freemarker 是一款模板引擎,不限于 web 中,但与 springmvc 结合可以替换 jstl 的功能,且更加灵活。
资源:
freemarker 官网:http://freemarker.org/
官网提供了中文的手册可以下载到本地看:
https://sourceforge.net/projects/freemarker/files/chinese-manual/


目标:
借助springmvc 中 controller 向页面传值的模式,利用 freemarker 对页面进行填充
借助 org.springframework.ui.Model 对象或 Map 对象将信息传到 springmvc 的页面中


需要:
1.freemarker 组件
2.springmvc 组件


1.创建项目名称为 “mavers-web” 的maven web项目,添加 maven 添加依赖:
  
	
	UTF-8
	UTF-8
	
	UTF-8
	4.3.7.RELEASE
  
  
	
    
        org.springframework
        spring-web
        ${org.springframework.version}
    
    
        org.springframework
        spring-webmvc
        ${org.springframework.version}
    
    
        org.springframework
        spring-websocket
        ${org.springframework.version}
    
    
        org.springframework
        spring-test
        ${org.springframework.version}
    
	
	    org.springframework
	    spring-context-support
	    ${org.springframework.version}
	    
    
	
	    jstl
	    jstl
	    1.2
	
	
	
		org.freemarker
		freemarker
		2.3.26-incubating
	
  



2.配置 spring 和 freemarker(需要配置三个xml)


2.1 web.xml 配置




	Archetype Created Web Application
	
		
        org.springframework.web.context.ContextLoaderListener
     
	
	 	 
	    contextConfigLocation  
    	/WEB-INF/applicationContext.xml  
	
	
	  
	    demoServlet  
	    org.springframework.web.servlet.DispatcherServlet  
	    1  
	  
	  
	    demoServlet
	    
	    /  
		
	
		/index.html
	




2.2 demoServlet-servlet.xml 配置





	 
	
	
	
	
		




2.3 applicationContext.xml 配置



       
	
	
		
		
		
		
		
		
		
		
	
	
	
	
		  
		
		
		
		
		
		
		
		
		
	
		
	
	
		
		
            
                
                    
                
         
            
            utf-8    
        
		
		
			
				0
				UTF-8
				0.##########
				yyyy-MM-dd HH:mm:ss
				true
				ignore
				
                3600    
			
		
	
	
  




3.创建演示用的 controller , HelloController.java 

package demo.mvc.controllers;


import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


import demo.models.hello.UserInfoModel;


/** 
*
*/
@Controller
@RequestMapping("/hello")
public class HelloController {
	/**
	 * 请求地址:项目名/hello/userinfo
	 * @return
	 */
	@RequestMapping("freemarker")
	public String freemarker(org.springframework.ui.Model model,Map map){
		//传递一个值
		model.addAttribute("val_name","张三");
		model.addAttribute("cur_time",new Date());
		
		//传递单个对象
		UserInfoModel info = new UserInfoModel("张三",99,"男");
		model.addAttribute("info",info);		
		
		List list = new ArrayList();
		list.add(new UserInfoModel("李四",20,"男"));
		list.add(new UserInfoModel("王五",21,"女"));
		list.add(new UserInfoModel("赵六",22,"男"));
		
		//传递多个对象
		map.put("user_list", list);
		
		return "hello/freemarker"; //servlet.xml 中定义的 前缀(prefix)+返回值+后缀(suffix)拼接的物理地址
	}
}





4.创建 freemarker 模板
三个模板:
freemarker.ftl  主模板
freemarker-header.ftl 页头模板
freemarker-footer.ftl 页脚模板


4.1 freemarker.ftl  主模板,内容





Insert title here
	
	


	

freemarker演示

一、传递一个值

姓名:${val_name}
当前时间:${cur_time?string("yyyy-MM-dd HH:mm:ss zzzz")}

二、传递一个对象

name:${info.name}
age:${info.age}
sex:${info.sex}
当前时间:${info.date?string("yyyy-MM-dd HH:mm:ss zzzz")}

三、传递一个 list 对象

<#list user_list as p>
name age sex date
${p.name} ${p.age} ${p.sex} ${info.date?string("yyyy-MM-dd HH:mm:ss zzzz")}

四、引用其它 ftl 文件:引用路径是以配置文件中(xxx.xml) templateLoaderPath 配置为基础目录开始的!

<#include "/hello/freemarker-header.ftl">
这里是内容
<#include "/hello/freemarker-footer.ftl">




4.2 freemarker-header.ftl 页头模板,内容


页头文件




4.3 freemarker-footer.ftl 页脚模板,内容


页脚文件




5.请求测试,部署到 tomcat 后
访问:http://localhost:8080/mavens-web/hello/freemarker 查看效果

你可能感兴趣的:(java)