今天看了看Freemarker,想要用它来和struts2做整合,来实现所谓的真正的MVC,呵呵
网上找了些资料,看了个大概。但是,在Freemarker的开发中,一直没有一个很好的IDE,官司方提供的Eclipse插件功能并不强大,只有一个语法高亮的功能,对于像以往的自动提示等一些都没有。
我们只好徒手写了。哈哈
首先新建一个WEB工程,起名为FirstFreemarker,在这个工程中加入struts2常用的那六个JAR包。在src目录下添加struts.xml
代码如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="false" /> <package name="default" extends="struts-default"> <action name="test" class="com.test.TestAction"> <result name="success" type="freemarker">test-success.ftl </result> </action> <action name="login"> <result type="freemarker">/login.ftl </result> </action> </package> </struts>
之后在WebRoot目录下新建自己需要的flt格式的文件,即Freemarker文件。
登录文件如下:
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] /> <html> <head> <title>Hello</title> </head> <body> <@s.form action="/test.action"> <@s.textfield name="name"/> <@s.submit/> </@s.form> </body> </html>
其中
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] />这一句是为了让Freemarker识别struts2的标签,因为在Freemarker文件内,除了它自己的,都会原样显示。
登录成功后的页面如下:<html>
<head>
<title>Hello</title>
</head>
<body>
Hello, ${name}
</body>
</html>
web.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Struts Blank</display-name> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </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> <welcome-file-list> <welcome-file>login.action</welcome-file> </welcome-file-list> </web-app>
java代码如下:package com.test;
import com.opensymphony.xwork2.ActionSupport;
public class TestAction extends ActionSupport {
private String name = "ChainHou";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
好了,到此,一个struts2整合Freemarker的HelloWorld就做完了。
代码我在文后以附件形式上传。