freemarker tutorials
diff --git a/freemarker-tutorial/pom.xml b/freemarker-tutorial/pom.xml
new file mode 100644
index 0000000..6e968d6
--- /dev/null
+++ b/freemarker-tutorial/pom.xml
@@ -0,0 +1,56 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.ekingstar</groupId>
+ <artifactId>freemarker-quickstart</artifactId>
+ <packaging>war</packaging>
+ <version>0.0.1-SNAPSHOT</version>
+ <name>Freemarker Quickstart Webapp</name>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <groupId>com.jfinal</groupId>
+ <artifactId>jfinal</artifactId>
+ <version>1.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.freemarker</groupId>
+ <artifactId>freemarker</artifactId>
+ <version>2.3.20</version>
+ </dependency>
+ <dependency>
+ <groupId>com.jfinal</groupId>
+ <artifactId>jetty-server</artifactId>
+ <version>8.1.8</version>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.16</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <finalName>freemarker_demo</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty-maven-plugin</artifactId>
+ <version>8.1.8.v20121106</version>
+ <configuration>
+ <stopKey>stop</stopKey>
+ <stopPort>5599</stopPort>
+ <webAppConfig>
+ <contextPath>/</contextPath>
+ </webAppConfig>
+ <scanIntervalSeconds>5</scanIntervalSeconds>
+ <connectors>
+ <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
+ <port>8080</port>
+ <maxIdleTime>60000</maxIdleTime>
+ </connector>
+ </connectors>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/freemarker-tutorial/src/main/java/com/ekingstar/common/DefaultConfig.java b/freemarker-tutorial/src/main/java/com/ekingstar/common/DefaultConfig.java
new file mode 100644
index 0000000..fb43d17
--- /dev/null
+++ b/freemarker-tutorial/src/main/java/com/ekingstar/common/DefaultConfig.java
@@ -0,0 +1,56 @@
+package com.ekingstar.common;
+
+import com.jfinal.config.Constants;
+import com.jfinal.config.Handlers;
+import com.jfinal.config.Interceptors;
+import com.jfinal.config.JFinalConfig;
+import com.jfinal.config.Plugins;
+import com.jfinal.config.Routes;
+import com.jfinal.core.JFinal;
+
+/**
+ * API引导式配置
+ */
+public class DefaultConfig extends JFinalConfig {
+
+ /**
+ * 配置路由
+ */
+ public void configRoute(Routes me) {
+ me.add("/", DefaultController.class);
+ }
+
+ /**
+ * 配置插件
+ */
+ public void configPlugin(Plugins me) {
+ }
+
+ /**
+ * 配置全局拦截器
+ */
+ public void configInterceptor(Interceptors me) {
+
+ }
+
+ /**
+ * 配置处理器
+ */
+ public void configHandler(Handlers me) {
+
+ }
+
+ /**
+ * 建议使用 JFinal 手册推荐的方式启动项目 运行此 main
+ * 方法可以启动项目,此main方法可以放置在任意的Class类定义中,不一定要放于此
+ *
+ * @throws Exception
+ */
+ public static void main(String[] args) throws Exception {
+ JFinal.start("src/main/webapp", 8080, "/", 5);
+ }
+
+ @Override
+ public void configConstant(Constants me) {
+ }
+}
diff --git a/freemarker-tutorial/src/main/java/com/ekingstar/common/DefaultController.java b/freemarker-tutorial/src/main/java/com/ekingstar/common/DefaultController.java
new file mode 100644
index 0000000..d63ad07
--- /dev/null
+++ b/freemarker-tutorial/src/main/java/com/ekingstar/common/DefaultController.java
@@ -0,0 +1,11 @@
+package com.ekingstar.common;
+
+import com.jfinal.core.Controller;
+
+public class DefaultController extends Controller {
+
+ public void index() {
+ setAttr("welcome", "Hello World!");
+ render("index.ftl");
+ }
+}
diff --git a/freemarker-tutorial/src/main/resources/log4j.properties b/freemarker-tutorial/src/main/resources/log4j.properties
new file mode 100644
index 0000000..a84025a
--- /dev/null
+++ b/freemarker-tutorial/src/main/resources/log4j.properties
@@ -0,0 +1,10 @@
+log4j.rootLogger=WARN, stdout, file
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n
+
+# Output to the File
+log4j.appender.file=org.apache.log4j.FileAppender
+log4j.appender.file.File=./console
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n
\ No newline at end of file
diff --git a/freemarker-tutorial/src/main/webapp/WEB-INF/web.xml b/freemarker-tutorial/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..69687b6
--- /dev/null
+++ b/freemarker-tutorial/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
+ <filter>
+ <filter-name>jfinal</filter-name>
+ <filter-class>com.jfinal.core.JFinalFilter</filter-class>
+ <init-param>
+ <param-name>configClass</param-name>
+ <param-value>com.ekingstar.common.DefaultConfig</param-value>
+ </init-param>
+ </filter>
+ <filter-mapping>
+ <filter-name>jfinal</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+</web-app>
\ No newline at end of file
diff --git a/freemarker-tutorial/src/main/webapp/index.ftl b/freemarker-tutorial/src/main/webapp/index.ftl
new file mode 100644
index 0000000..ba28695
--- /dev/null
+++ b/freemarker-tutorial/src/main/webapp/index.ftl
@@ -0,0 +1,5 @@
+<html>
+<body>
+<h1>${welcome}</h1>
+</body>
+</html>
\ No newline at end of file