Struts2 freemarker 配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2 freemarker 配置相关的知识,希望对你有一定的参考价值。

    Struts2 freemarker 配置

Struts2使用FreeMarker作为其黙认的模板技术,因此Strus2对FreeMarker的支持非常良好。在Struts2应用中使用FreeMarker模板技术,只需要在web.xml和Struts.xml文件中进行简单配置就可以使用了。


     一、   须知:  1.下载freemarker.jar的架包 官网下载地址:http://freemarker.org/

              2.把freemarker.jar放进\WEB-INF\lib文件下面

                            3.配置web.xml  在web.xml文件中配置如下即可:                                                 

<!-- 配置freemarker启动 -->

<servlet>

<servlet-name>freemarker</servlet-name>

<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>

<!-- 配置FreeMarker的ftl文件位置 --> 

<init-param>

<param-name>TemplatePath</param-name>

<param-value>/WEB_INF/ftl</param-value>

</init-param>

<!-- 设置是否缓存 -->

<init-param>

<param-name>NoCache</param-name>

<param-value>true</param-value>

</init-param>

<!-- 设置输出格式为UTF-8 -->

<init-param>

<param-name>ContentType</param-name>

<param-value>text/html; charset=UTF-8</param-value>

</init-param>

<!-- 是否和服务器(tomcat)一起启动,0为不,1为是 -->

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>freemarker</servlet-name>

<url-pattern>*.ftl</url-pattern>

</servlet-mapping>

             
 二、创建一个ftl格式的文件。例如  login.ftl

          2.1演示使用指令标签

<form action="ftl_login" method="post">

    

    用户名:<input type="text" name="userName"><br>

   

    <button type="submit">登陆</button>

    

    </form>

    <p> userName?? 判断用户名是否为空  空执行else 有值执行if   </P>

    

  <#if userName??>

  ${userName}

  <#else>

  ${userName!"如果userName是空,就输出!以后的字符"} 

 

  </#if>

  <br>

    <br>

    <p>判断arraylist有值时才执行</p>

    <#if arraylist??>

    <#list arraylist as l>

    值:${l!}-------list大小:${l?size}-----------list下标:${l_index}<br>

   

   

   

    </#list>

    </#if>

    <p><井if l_index = 1><井break></井if>循环展示下标等于1的时候,跳出循环</p>

   

    <p><井if l = "bbbbbb"><井break></井if>循环值等于bbbbbb的时候,跳出循环</p>

    <#if map??>

    

    

    <#list map?keys as mymap>

   

    ${mymap} -------- ${map[mymap].zcname}--------${map[mymap].zcpwd}<br>

    

    </#list>

    </#if >

  三、写Action类处理业务(java代码

      

package com.cn.ftl;


import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;


import com.cn.entity.UserBean;

import com.opensymphony.xwork2.ActionSupport;


public class LoginFtlAction extends ActionSupport {


private static final long serialVersionUID = 1L;

private String userName;

private List<String> arraylist;

private Map<String, UserBean> map;


public Map<String, UserBean> getMap() {

return map;

}


public void setMap(Map<String, UserBean> map) {

this.map = map;

}


public List<String> getArraylist() {

return arraylist;

}


public void setArraylist(List<String> arraylist) {

this.arraylist = arraylist;

}


public String getUserName() {

return userName;

}


public void setUserName(String userName) {

this.userName = userName;

}

        //返回我的视图界面

public String loginUI() {


return "loginUI";

}

        //处理业务的方法

public String login() {


// 给list集合赋值

arraylist = new ArrayList<String>();

arraylist.add("aaaaaa");

arraylist.add("bbbbbb");

arraylist.add("cccccc");

// 给map集合赋值

UserBean ub = new UserBean();

map = new HashMap<String, UserBean>();

ub.setZcname("tom");

ub.setZcpwd("123");

map.put("tom", ub);

// 给map集合赋值

UserBean ub2 = new UserBean();

ub2.setZcname("jreey");

ub2.setZcpwd("456");

map.put("jreey", ub2);

// 给map集合赋值

UserBean ub3 = new UserBean();

ub3.setZcname("peter");

ub3.setZcpwd("789");

map.put("peter", ub3);


return "login";

}

}

  四、在Struts2.xml相应的action中配置<result>

       <reslutl>元素的type 属性必须设置为freemarker

  

<action name="ftl_*" class="com.cn.ftl.LoginFtlAction" method="{1}">

<result name="{1}" type="freemarker">/WEB-INF/ftl/login.ftl</result>

<result name="{1}" type="freemarker">/WEB-INF/ftl/login.ftl</result>

<result name="input" type="freemarker">/WEB-INF/ftl/login.ftl</result>

</action>

  五、效果图

技术分享

六、乐于分享,共同进步。

本文出自 “12276706” 博客,请务必保留此出处http://12286706.blog.51cto.com/12276706/1872352

以上是关于Struts2 freemarker 配置的主要内容,如果未能解决你的问题,请参考以下文章

我没有将 freemarker 用于 struts2,但我看到 freemarker 生成了很多日志记录

无法正确解析FreeMarker视图

Struts2 + Freemarker + DisplayTag:如何使其工作

Struts2 + Sitemesh + Freemarker 不起作用

FreeMarker 模板错误!在struts2中

Free 基础概念