对freemark理解与例子
首先将 struts-tags.tld 放在WEB-INF 目录下
1.login.ftl
<#assign s = JspTaglibs["/WEB-INF/struts-tags.tld"]/>
<html>
<head>
<title>Login Form</title>
</head>
<body>
pelease input username and password login<br>
<@s.form action="Login">
<@s.textfield name="username" label="username"/>
<@s.password name="password" label="password"/>
<@s.submit value="提交"/>
</@s.form>
</body>
</html>
2.success.ftl
<#assign s = JspTaglibs["/WEB-INF/struts-tags.tld"]/>
<html>
<head>
<title>SUCCESS</title>
</head>
<body>
欢迎${username}登陆!
</body>
</html>
3.error.ftl
<#assign s = JspTaglibs["/WEB-INF/struts-tags.tld"]/>
<html>
<head>
<title>ERROR</title>
</head>
<body>
${error}
</body>
</html>
4.web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>JspSupportServlet</servlet-name>
<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<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>
</web-app>
5.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.devMode" value="true"></constant>
<include file="struts-default.xml"></include>
<package name="struts" extends="struts-default" namespace="/">
<action name="Login" class="com.yihaodian.action.LoginAction">
<result name="error" type="freemarker">/WEB-INF/ftl/error.ftl</result>
<result name="success" type="freemarker">/WEB-INF/ftl/success.ftl </result>
</action>
<!-- *是通配符的意思 在url中输入的login.action 即可访问到login.ftl 登陆页面 -->
<action name="*">
<result type="freemarker">/WEB-INF/ftl/{1}.ftl</result>
</action>
</package>
</struts>
6.action
package com.yihaodian.action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String username;
private String password;
private String error;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getError() {
return error;
}
public void setError(String error) {
this.error = error;
}
public String execute(){
if(getUsername().equals("zhaoyun")&&getPassword().equals("123")){
return "success";
}else{
setError("登陆失败!");
return "error";
}
}
}
7.访问
http://localhost:8080/FreeMarkDemo/Login
分享到:
相关推荐
相比Velocity,Freemarker提供了更多高级特性,如过程调用、递归和闭包回调,使其能处理复杂的逻辑和数据操作。这篇文章将引导你从基础开始了解并深入探索Freemarker。 1. **基本语法** Freemarker使用特定的语法...
标题中的“springboot集成mybatis分页,freemark,spring,logback完整小例子”表明这是一个关于Spring Boot项目,其中整合了MyBatis用于数据库操作,FreeMarker作为模板引擎处理视图,以及Spring框架和Logback日志系统...
随后,分别介绍了数据模型和模板的基本结构,并通过实例展示了如何操作。 在程序开发指南部分,介绍了如何创建配置实例,如何创建数据模型,如何获得模板,以及如何合并模板和数据模型。还提到了共享变量和配置信息...
下面是一个FreeMarker模板的例子,包含了以上所说的4个部分 <html><br> <head><br> <title>Welcome!</title><br> </head><br> <body><br> 注释部分 --> 下面使用插值 --> <h1>Welcome ${user} !</h1><br> <p>We ...
在这个例子中,`${title}`和`${user}`是变量,它们将在运行时由Java代码提供值。 在Struts2的Action类中,你需要定义这些变量并返回对应的Freemarker模板名。例如: ```java public class HelloWorldAction ...
总结一下,这个"spring+hibernate+freemarker+jQuery"登录注册例子展示了如何利用这些技术栈创建一个完整的用户认证系统。Spring提供了业务逻辑和安全框架,Hibernate负责数据持久化,Freemarker生成动态视图,而...
这个实例提供了一个基础的FreeMarker和Servlet结合生成Excel文件的例子,你可以根据实际需求扩展其功能,比如增加数据过滤、排序、分页等。同时,也可以考虑使用更高级的库,如Apache POI,来更直接地操作Excel文件...
5. **执行插值操作并输出**: 在`process`方法中,我们同样创建一个Map并填充变量,然后调用`Template`对象的`process`方法,传入Map和一个输出流,将处理后的HTML输出到控制台或写入文件。 6. **运行和结果**: ...
在这个例子中,文件名为"FreeMarkerIDE-1.0.2.GA-R200901280154"。确保文件是完整的,并且适用于MyEclipse 8.5版本。 2. **启动MyEclipse**: 打开MyEclipse IDE,进入主界面。 3. **打开插件管理器**: 在菜单...
在这个例子中,`user`、`latestProduct.url` 和 `latestProduct.name` 是数据模型中的键,它们的值在程序运行时动态提供。 总的来说,FreeMarker作为一个强大的模板引擎,为企业和开发者提供了一种灵活、高效的手段...
在这个例子中,`users`是Java端传递到Freemarker模板的一个list,`user`是循环中的变量,每次迭代时代表`users`列表中的一个元素。`as`关键字用于定义迭代变量。在循环体内,我们可以通过`user`访问当前元素的属性,...
Freemarker分页是Web开发中的一个重要概念,它主要用于在大量数据展示时,将结果集分割成多个小块,每次只加载一部分数据,提高页面加载...记得在实际操作中,还要注意数据库查询优化,避免因分页查询导致的性能问题。
在这个例子中,`${title}` 和 `${content}` 将分别被 Java 中对应的数据模型对象的属性值替换。 在实际开发中,你可能还需要处理更复杂的情况,比如嵌套的循环和条件语句,以及对 Word 特有的格式化和样式的支持。...
对于生成Word(.doc或.docx)和Excel(.xls或.xlsx)文档,FreeMarker不能直接操作,因为它们不是纯文本格式。通常,我们需要借助第三方库,如Apache POI,先将FreeMarker模板转换为HTML,然后再转换为Word或Excel...
在这个例子中,`configuration`是Freemarker的`Configuration`对象,它管理着模板的加载和解析。`template.process()`方法将模板和数据模型结合,生成最终的RTF文档。 在实际项目中,你可能需要处理更复杂的数据...
3. **动态性有限**:FreeMarker模板主要关注数据展示,对于复杂的逻辑操作可能需要配合后端代码来完成。 4. **模板污染**:如果模板编写不当,可能会出现模板逻辑过于复杂,违背了模板引擎原本的设计初衷。 **...
虽然这个例子只展示了处理一行数据,但实际应用中通常需要遍历整个结果集,对每一行数据执行相同的操作,填充到Word文档的相应位置。 总结来说,这段代码展示了如何使用Java POI库创建一个动态Word文档生成器,它...
在这个例子中,如果`name`是`null`,FreeMarker将输出空字符串,而不是抛出错误。 对于更复杂的情况,比如当你要检查一个对象的属性,如`user.name`,可以这样做: ```freemarker (user.name)??> User's name is:...
例子如下: (age>60)>老年人 (age>40)>中年人 (age>20)>青年人 <#else> 少年人 输出结果是:青年人 上面的代码中的逻辑表达式用括号括起来主要是因为里面有>符号,由于FreeMarker会将>符号当成标签的结束...