zoukankan      html  css  js  c++  java
  • 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,这里就不用列了。

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

    运行结果:

  • 相关阅读:
    基金定投是什么?定投的特点?
    Linux环境下MySQL 5.6安装与配置----亲测有效----纯离线安装
    OI生涯回忆录
    NOI2020游记
    Redis操作
    Redis概述
    Memcached
    动态规划——最长回文字符串
    两数之和&无重复字符最长字符串
    黑盒测试常见方法
  • 原文地址:https://www.cnblogs.com/u0mo5/p/4164331.html
Copyright © 2011-2022 走看看