SpringMVC的架設,使用Freemarker模板引擎
自行編譯完spring4.0后,要架設以Freemaker為模板引擎的網站,同時還要整合Hibernate3.6。這當然要用Spring的MVC架構。我希望是注解模式完成,經過幾次查詢和修改,終于架設完成,現記錄一下,以備后面使用。
準備工作:自行編譯Spring4,也可以網上下載已經編譯好的包;下載Hibernate3.6;下載各類依賴包,以下為我列出的各類依賴包:
antlr-2.7.6.jar
aopalliance-1.0.jar
aspectj.jar
c3p0-0.9.1.2.jar
commons-collections-3.2.1.jar
commons-dbcp-1.4.jar
commons-logging-1.1.3.jar
commons-pool-1.5.4.jar
dom4j-1.6.1.jar
freemarker.jar
jstl.jar
standard.jar
slf4j-nop-1.7.5.jar
mysql-connector-java-5.1.25-bin.jar
其中的某些包不是必需的,如jstl.jar+standerd是為jstl模板準備的,可以不用添加;commons-dbcp-1.4.jar+commons-pool-1.5.4.jar是tomcat的mysql連接池,在本文中用的是c3p0連接池,所以tomcat的連接池也可以不用加入。這些包準備好后就要添加Spring4所有的包(除了一些test包),Hibernate3.6的核心包,還有Hibernate的jpa包。
新建一個web項目后,這里用的是Tomcat7,相關的xml配置如下(這里配置只解析.html的文件)
web.xml
<?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"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>mvc0201</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>triplogs</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>triplogs</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
在web.xml的相同目錄下新建一個triplogs-servlet.xml的文件,其內容如下:
triplogs-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 啟動事務管理的注解模式 -->
<context:annotation-config />
<!-- Spring 的組件自動描的包的目錄 -->
<context:component-scan base-package="org.triplog.mvc0201" />
<!-- <aop:aspectj-autoproxy /> -->
<!-- 數據庫 -->
<context:property-placeholder location="/WEB-INF/jdbc.properties" />
<!--<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" /> -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- Hibernate3 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- hibernate注解包掃描的位置 -->
<property name="packagesToScan">
<list>
<value>org.triplog.mvc0201.model</value>
</list>
</property>
<!-- Hibernate配置 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<!-- Spring對Hibernate的事務管理 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- 以下為SpringMVC內容 -->
<!-- 支持spring4.0新的mvc注解 -->
<mvc:annotation-driven />
<!-- 啟動Spring MVC的注解功能 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<!-- 地址映射 -->
<bean id="handlerMapping"
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
</bean>
<!-- FreeMarker -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
<property name="contentType" value="text/html; charset=utf-8"/>
</bean>
<bean id="freeMarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!-- 模板根目錄 -->
<property name="templateLoaderPaths" value="/static/templates/" />
<!-- 編碼格式 -->
<property name="defaultEncoding" value="utf-8" />
</bean>
</beans>
因為已經配置了模板加載的默認根目錄,所以不用配置模板前輟了,同時,個人認為必要配置后輟,所以后輟也省了。
在web.xml的相同目錄下新建jdbc.properties文件,添加以下內容:
jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/sampledb?characterEncoding=utf8&useUnicode=true
jdbc.username=root
jdbc.password=123456
配置文件到此全部完成,現在寫兩個文件測試一下。新建包org.triplog.mvc0201.controller在該包下新建一個類HelloIndex,代碼如下:
HelloIndex.java:
package org.triplog.mvc0201.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloIndex {
@RequestMapping({"/index.html","hello.html"})
public String Index(Model model){
model.addAttribute("message", "這是主頁!");
return "hellotpl.html";
}
}
在WEB-INF的同級目錄新建如下的目錄結構static/templates,在這個文件夾下新建一個html文件,命名為
hellotpl.html, 內容如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>${message } -- Insert title here</title>
</head>
<body>
<h5>這是主頁。</h5>
</body>
</html>
至此所有代碼相關工作完成,把spirng和hibernate及其依賴包放入/WEB-INF/lib目錄下,測試運行,結果如下:

成功!