freemarker技术入门例子(结合struts2)

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

闲话少述,看例子。

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

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>  

 

 

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>  

 

 

 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. }  

 

 

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

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

运行结果:

freemarker技术入门例子(结合struts2)

你可能感兴趣的:(freemarker)