海浪今天给大家详解 Struts2如何与Freemarker 配置,大家都知道 Freemarker 是模板引擎,也可以说是一种表现层的框架,它有自己的模板指令,开发者如果不熟悉这些语法,很难进行表现层的开发。 Struts2 框架技术对 Freemarker 做了很好的支持,开发人员只要熟悉 Struts2 的标签即可进行开发 Freemarker 模板文件。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

本文所述开发环境为: Eclipse 3.3.2+ MyEclipse 6.0 +JDK 1.5 +Tomcat 6.0

一、     安装开发 Freemarker 模板文件插件

Freemarker 自身提供了一个编辑模板文件的 Eclipse 插件 FreeMarkerIDE-1.0.0.GA.zip ,该插件具有错误提示,与高亮显示等功能,您可以到 freemarker.sourceforge.net 下载,也可通过 Eclipse IDE   自带的功能完成相关插件的安装,插件更新地址为: www.freemarker.org/eclipse/update. ,插件具体安装配置过程请参考其他文献资料。

海浪看到很多网友对改插件的评价是褒贬不一样,海浪个人认为还可以,所以介绍给大家。

你也可以使用其它插件,只要能帮助你开发 Freemarker 模板文件即可。

二、     配置工程开发环境

1.  新建 Web 工程 freemarkerWeb

2.  http://struts.apache.org, 下载 struts-2.0.11.2-all.zip 解压缩并导入开发所需相关 jar 包到 lib 目录下。 Jar 包: struts2-core-2.0.11.2.jar xwork-2.0.5.jar ognl-2.6.11.jar freemarker-2.3.8.jar commons-logging-1.0.4.jar

3.  解压缩 struts2-core-2.0.11.2.jar 复制 META-INF/struts-tags.tld 复制到工程 WEB-INF 目录下

4.  配置 web.xml 文件

<filter>

    <filter-name>struts2</filter-name>

    <filter-class>

org.apacher.sturts2.dispatcher.FilterDispatcher

</filter-class>

</filter>  

<filter-mapping>

    <filter-name>struts2</filter-name>

    <url-parttern>/*</url-parttern>

</filter-mapping>

      <servlet>

        <servlet-name>JspSupportServlet</servlet-name>

        <servlet-class>

            org.apache.struts2.views.JspSupportServlet

        </servlet-class>

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

    </servlet>

    注意:要想在 Freemarker 中使用 Struts2 标签必须配置以上加粗部分代码到 web.xml 文件中。

5.  创建 struts.xml 文件

<struts>

 <package name="struts" extends="struts-default">

<action name="userLogin" class="com.test.action.LoginAction" method="userLogin">

                <result name="success" type="freemarker">

                    /WEB-INF/templates/user.ftl

                </result>

            </action>

    </package>

</struts>

注意:

A :斜体字部分的代码是根据不同的应用而配置的,斜体部分的代码为 freemarkerWeb 应用的代码。

B <reslutl> 元素的 type 属性必须设置为 freemarker ,这是因为 Freemarker 模板文件必须由 Freemarker 模板引擎来解析,而 Struts2 内部实现了 Freemarker 模板引擎,但我们必须声明返回结果类型为 freemarker 才可以

至此 Struts2 Freemarker 的配置 已经完成,可以进行开发了 .

三、     完成 Struts2Freemarker的配置 开发工程

创建 LoginAction.java

  ……

private Log log=LogFactory.getLog(LoginAction.class);

 private String username;

 private String password;

 /**

   * 登录处理

   * @return

   * @throws Exception

   */

 public String userLogin() throws Exception{

     log.info(" 执行了登录方法 userLogin()");

     return SUCCESS;

 }

   省略相应 (getter,setter 方法 )

     …

创建登录页面 index.jsp

    <s:form action="userLogin">

        登录名: <s:textfield name="username"/><br>

       密码: <s:textfield name="password"/>

        <s:submit value=" 登录 " />

 </s:form>

创建结果页面: user.ftl

<#--

<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld "]>

 -->

<html>

    <body>

    欢迎 <@s.property value="username"/> 登录!

    </body>

</html>

注意:

A. 以上注释中的内容可以去掉,因为 Struts2 默认引入该标签库

B. Struts2 标签在 JSP 页面中的写法与在 Freemarker 模板文件中的写法不同。 Freemarker 模板文件是以 <@s.tag> 开始,以 </@s.tag> 结束

JSP 文件中是以 <s:tag> 开始 </s:tag> 结束。应用时 <tag> 替换为 Struts2 的标签名称。

  好了,我们现在将 freemarkerWeb 工程部署到 Tomcat6.0 服务器上,访问 http://loacalhost:8080/freemarkerWeb/index.jsp 后输入用户名,密码,登录即可看到欢迎 XX 登录!

OK ,大功告成! Struts2Freemarker的配置 开发工程就这样完成了。

  最后,需要大家需要注意的是, Freemarker 模板文件的处理,通过 Web 容器是无法直接处理的,因此不要让用户直接访问模板文件。在开发过程中,我们可以将 Freemarker 文件直接放到 Web 工程的 WEB-INF 目录或其子目录下,并在相应的 struts-*.xml 文件中配置 type= freemarker 来输出模板。

《详解Struts2如何与Freemarker 配置》海浪就介绍到这了,如大家在实践运用 Struts2 Freemarker 进行配置的时候,有更多更好的经验,欢迎访问海浪博客 http://www.po-soft.com/hi/hailang 多多交流。