使用freemarker

由于最近项目里面要求要使用freemarker技术来做展现层,所以在网上搜索了好多资料,基础知识是看了李刚原来写的那本《struts2权威指南》。一直想在网上找一个很基础的例子来入门,但是不知道是我的原因还是怎么的,找到的都不是很理想,而且网上基本上是一篇文章到处贴。所以郁闷之下,就自己慢慢摸索写出了一个入门的例子,可以作为自己的总结,也可以让更多的初学者快速入门。

闲话少述,看例子。

*****例子的整个目录结构如下图:

 

说明:1、struts-tags.tld文件是由struts2的jar中拷贝出来的。

         2、工程全部使用utf-8编码。

 

关键的几个文件:

1、index.ftl:

Java代码 复制代码  收藏代码
  1. <#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"]/>   
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
  3. <html xmlns="http://www.w3.org/1999/xhtml">   
  4. <head>   
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   
  6. <title>freemarkerDemo</title>   
  7. </head>   
  8. <body>   
  9. <@s.form action="users/users_login.action">   
  10.   ${"用户名"}:<@s.textfield name="username"/><br/>   
  11.   ${"密码"}:<@s.password name="password"/><br/>   
  12.   <@s.submit value="sign on"/>   
  13. </@s.form>   
  14. </body>   
  15. </html>  
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"]/>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>freemarkerDemo</title>
</head>
<body>
<@s.form action="users/users_login.action">
  ${"用户名"}:<@s.textfield name="username"/><br/>
  ${"密码"}:<@s.password name="password"/><br/>
  <@s.submit value="sign on"/>
</@s.form>
</body>
</html>

 

 

2、profile.ftl:

Java代码 复制代码  收藏代码
  1. <#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"]/>   
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
  3. <html xmlns="http://www.w3.org/1999/xhtml">   
  4. <head>   
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />   
  6. <title>freemarkerDemo</title>   
  7. </head>   
  8. <body>   
  9. 姓名:${username}   
  10. <br/>   
  11. 密码:${password}   
  12. <br/>   
  13. 年龄:${userInfo.age}   
  14. <br/>   
  15. 登录时间:${userInfo.signinTime?string("yyyy-MM-dd HH:mm:ss")}   
  16. <br/>   
  17. QQ:${userInfo.qq}   
  18. <br/>   
  19. 地址:${userInfo.addr}   
  20. <hr/>   
  21. 我的书籍:   
  22. <#list userInfo.books as book>   
  23.  ${book}&nbsp;   
  24. </#list>   
  25. </body>   
  26. </html>  
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"]/>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>freemarkerDemo</title>
</head>
<body>
姓名:${username}
<br/>
密码:${password}
<br/>
年龄:${userInfo.age}
<br/>
登录时间:${userInfo.signinTime?string("yyyy-MM-dd HH:mm:ss")}
<br/>
QQ:${userInfo.qq}
<br/>
地址:${userInfo.addr}
<hr/>
我的书籍:
<#list userInfo.books as book>
 ${book}&nbsp;
</#list>
</body>
</html>

 

 

 3、web.xml:

Xml代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    
  5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  6.   
  7.     <filter>  
  8.         <filter-name>struts2</filter-name>  
  9.         <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
  10.     </filter>  
  11.     <filter-mapping>  
  12.         <filter-name>struts2</filter-name>  
  13.         <url-pattern>/*</url-pattern>  
  14.     </filter-mapping>  
  15.   
  16.     <servlet>  
  17.         <servlet-name>JspSupportServlet</servlet-name>  
  18.         <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>  
  19.         <load-on-startup>1</load-on-startup>  
  20.     </servlet>  
  21.   
  22.     <welcome-file-list>  
  23.         <welcome-file>index.jsp</welcome-file>  
  24.     </welcome-file-list>  
  25. </web-app>  

 

 

 4、sturts.xml:

Xml代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC   
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"   
  4.     "http://struts.apache.org/dtds/struts-2.1.dtd">  
  5. <struts>  
  6.     <constant name="struts.ui.theme" value="simple" />  
  7.     <package name="users" extends="struts-default" namespace="/users">  
  8.         <action name="users_*" class="com.pop.project.myftl.test.action.UserAction" method="{1}">  
  9.             <result name="index" type="freemarker">/WEB-INF/ftl/index.ftl</result>  
  10.             <result name="profile" type="freemarker">/WEB-INF/ftl/profile.ftl</result>  
  11.         </action>  
  12.     </package>  
  13. </struts>  

 

 

 5、UserAction:

Java代码 复制代码  收藏代码
  1. package com.pop.project.myftl.test.action;   
  2.   
  3. import java.util.ArrayList;   
  4. import java.util.Date;   
  5. import java.util.List;   
  6.   
  7. import com.opensymphony.xwork2.ActionSupport;   
  8. import com.pop.project.myftl.test.bean.UserInfo;   
  9.   
  10. public class UserAction extends ActionSupport {   
  11.   
  12.     private static final long serialVersionUID = 1L;   
  13.     private String username;   
  14.     private String password;   
  15.     private UserInfo userInfo;   
  16.     /**  
  17.      * 首页  
  18.      * @return  
  19.      */  
  20.     public String index() {   
  21.         return "index";   
  22.     }   
  23.     /**  
  24.      * 登录  
  25.      * @return  
  26.      */  
  27.     public String login()   
  28.     {   
  29.         userInfo = new UserInfo() ;   
  30.         userInfo.setAddr("shaanxi baoji") ;   
  31.         userInfo.setAge(25) ;   
  32.         userInfo.setSigninTime(new Date()) ;   
  33.         userInfo.setQq("77276575") ;   
  34.         List<String> books = new ArrayList<String>() ;   
  35.         books.add("Thinking in Java") ;   
  36.         books.add("禅意花园") ;   
  37.         books.add("敏捷编程") ;   
  38.         books.add("代码大全") ;   
  39.         userInfo.setBooks(books) ;   
  40.         return "profile" ;   
  41.     }   
  42.     // setters and getters   
  43.     public String getUsername() {   
  44.         return username;   
  45.     }   
  46.     public void setUsername(String username) {   
  47.         this.username = username;   
  48.     }   
  49.     public String getPassword() {   
  50.         return password;   
  51.     }   
  52.     public void setPassword(String password) {   
  53.         this.password = password;   
  54.     }   
  55.     public UserInfo getUserInfo() {   
  56.         return userInfo;   
  57.     }   
  58.     public void setUserInfo(UserInfo userInfo) {   
  59.         this.userInfo = userInfo;   
  60.     }   
  61. }  
package com.pop.project.myftl.test.action;

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

import com.opensymphony.xwork2.ActionSupport;
import com.pop.project.myftl.test.bean.UserInfo;

public class UserAction extends ActionSupport {

	private static final long serialVersionUID = 1L;
	private String username;
	private String password;
	private UserInfo userInfo;
	/**
	 * 首页
	 * @return
	 */
	public String index() {
		return "index";
	}
	/**
	 * 登录
	 * @return
	 */
	public String login()
	{
		userInfo = new UserInfo() ;
		userInfo.setAddr("shaanxi baoji") ;
		userInfo.setAge(25) ;
		userInfo.setSigninTime(new Date()) ;
		userInfo.setQq("77276575") ;
		List<String> books = new ArrayList<String>() ;
		books.add("Thinking in Java") ;
		books.add("禅意花园") ;
		books.add("敏捷编程") ;
		books.add("代码大全") ;
		userInfo.setBooks(books) ;
		return "profile" ;
	}
	// setters and getters
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public UserInfo getUserInfo() {
		return userInfo;
	}
	public void setUserInfo(UserInfo userInfo) {
		this.userInfo = userInfo;
	}
}

 

 

 UserInfo类是一个有几个属性的javabean,这里就不用列了。

自己跑一下例子慢慢来吧。

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值