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> |
五、效果图
六、乐于分享,共同进步。