对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