在struts中使用freemarker也很简单,只需要在struts.xml配置result 的type为freemarker就可以了,但要注意下,汉字的在ftl显示中会有乱码问题,技术你在struts.xml配置<constant name="struts.i18n.encoding" value="UTF-8"></constant>你还会发现乱码问题,要解决这个问题,需要修改下tomcat的配置文件,找到tomcat安装目录conf文件夹,然后打开server.xml文件,修改这一行
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
在8443后面加上URIEncoding="UTF-8"这句,就可以解决乱码问题了,
简单的用个小例子演示下,
1、新建一个struts项目,
2、打开index.jsp文件定义一个form
<form action="freemarkerAction.action">
姓名:<input type="text" name="name"/><br/>
年龄:<input type="text" name="age"/><br/>
<input type="submit" value="提交"/>
</form>
3、新建一个freemarkerAction
package com.test.freemarker;
import com.opensymphony.xwork2.ActionSupport;
public class FreemarkerAction extends ActionSupport{
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String execute() throws Exception {
return ActionSupport.SUCCESS;
}
}
4、配置下struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<package name="default" extends="struts-default">
<action name="freemarkerAction" class="com.test.freemarker.FreemarkerAction">
<result name="success" type="freemarker">/WEB-INF/test.ftl</result>
</action>
</package>
</struts>
5、在WEB-INF目录下建一个test.ftl文件,简单的输入点内容
名字 :${name?default("名字为空")} <br/>
年龄 : ${age?default("年龄为空")}
6、部署到tomcat中,在浏览器中访问就可以看到效果了。
有点遗憾,本来想集成下struts的标签,以前我也没这么用过,试了几次,都没成功,其实freemarker自带的标签功能也很强大,不用struts也没什么,以前我就一直没用,改天有时间,总结下freemarker中常用的标签!