FreeMarker系列学习笔记(3)——sturts2 result type为 freemarker

详细解说 请参看:FreeMarker系列学习笔记(2)

  为了在FreeMarker模板中使用标签库,可按如下步骤进行
第一步
将系统所需的标签库定义文件(也就是*.tld文件)复制到web应用中,对于struts2系统,则需要将Struts2-core.ja压缩文件中的struts-tags.tld文件释放出来,并复制到了web应用中,具体来说就是复制到WEB-INF目标下。
第二步
在web.xml文件中启动JspSupportServlet,需要在web.xml文件中作如下配置

 <servlet>
  <servlet-name>JspSupportServlet</servlet-name>
  <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
        <!--配置JspSupportServlet自启动-->
  <load-on-startup>1</load-on-startup>
 </servlet> 
 第三步
 在FreeMarker模板中使用assign指令导入标签库。导入标签库的代码如下
 <#--定义web-inf/strust-tags.tld文件对应的标签库前缀为s-->
 <#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] />

 在上面导入的标签库定义文件中,指定了标签库前缀为s,而该前缀对应的标签库定义文件主放置在/WEB-INF/struts-tags.tld路径下

 第四步
 在FreeMarker模板中增加了标签库定义后,就可以在FreeMarker模板中使用Struts2标签了。在FreeMarker使用标签与在jsp中使用标签略有差别.
下面是FreeMarker模板中使用标签的代码示例
<#--在FreeMarker模板中使用Struts2标签-->
<@s.form action="Login.action">
 <@s.textfield name="username" label="用户名"/>
 <@s.textfield name="password" label="密码"/>
 <@s.submit value="提交"/>
</@s.form>

如果是在jsp中,则使用下述代码
<s:form action="Login.action">
 <s:textfield name="username" label="用户名"/>
 <s:textfield name="password" label="密码"/>
 <s:submit value="提交"/>
</s:form>


index.ftl

<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] />
<html>
	<head>
	<title>登录页面</title>
	</head>
	
	<body>
	请输入用户名和密码来登陆<br>
	<@s.form action="login.action">
	 <label>用户名:</label><@s.textfield name="name"/><br>
	 <label>密码:</label><@s.textfield name="password"/><br>
	 <@s.submit value="提交"/>
	</@s.form>
	</body>
</html>


struts2.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>
<!-- ftl demo -->
<package name="ftl" extends="struts-default" namespace="/">
<!-- 显示index.ftl -->
<action name="*">
    <result type="freemarker">/template/{1}.ftl</result>
</action>

    <!-- 欢迎界面 -->
<action name="login" class="com.xueshandugu.struts2.login.action.HelloWorldAction">
    <result name="success" type="freemarker">/template/welcome.ftl</result>       
</action>
</package>

</struts>
HelloWorldAction.java
package com.xueshandugu.struts2.login.action;

import com.opensymphony.xwork2.ActionContext;

public class HelloWorldAction {

	// attribute name
	private String name;
	
	// attribute password
	private String password;

	public String execute() throws Exception {
		System.out.println("name: "+ name +"\tpassword: "+ password);
		System.out.println("success!............");
		ActionContext.getContext().getSession().put("user" , getName());
		return "success";
	}

	/**
	 * @return
	 */
	public String getName() {
		return name;
	}

	/**
	 * @param name
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * @return
	 */
	public String getPassword() {
		return password;
	}

	/**
	 * @param password
	 */
	public void setPassword(String password) {
		this.password = password;
	}
}
welcome.ftl
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] />
<html>
    <head>
        <title>成功页面</title>
    </head>
    <body>
        欢迎,${user},您已经登录!<@s.property value="name"/><br> 
 <a href="getBooks.action">查看作者李刚已出版的图书</a>
    </body>
</html>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值