spring-mybatis-freemarker springMVC环境搭建

2025-10-09 13:25:40

1、首先创建maven项目(本帖以IDEA为开发环境)。

点击file-->new-->project;在弹出的界面中,左侧选中maven,右上方选择需要的JDK,选择完毕点击next。

spring-mybatis-freemarker springMVC环境搭建

spring-mybatis-freemarker springMVC环境搭建

spring-mybatis-freemarker springMVC环境搭建

spring-mybatis-freemarker springMVC环境搭建

2、定义属性,引入spring、mybatis、mysql、freemarker需要的jar。

<properties>    <!-- 项目属性 -->    <encoding>UTF-8</encoding>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <JDK.version>1.7</JDK.version>    <spring.version>4.3.13.RELEASE</spring.version>    <mybatis-spring.version>1.3.2</mybatis-spring.version>    <mybatis.version>3.4.6</mybatis.version>    <mysql-driver.version>5.1.18</mysql-driver.version>    <freeMarker.version>2.3.23</freeMarker.version>    <servlet.version>4.0.1</servlet.version></properties>

<dependencies>    <!--核心-->    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-core</artifactId>        <version>${spring.version}</version>    </dependency>    <!--管理bean-->    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-beans</artifactId>        <version>${spring.version}</version>    </dependency>    <!--上下文-->    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-context</artifactId>        <version>${spring.version}</version>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-context-support</artifactId>        <version>${spring.version}</version>    </dependency>    <!--面向对象-->    <dependency>        <groupId>org.springframework </groupId>        <artifactId>spring-aop</artifactId>        <version>${spring.version}</version>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-aspects</artifactId>        <version>${spring.version}</version>    </dependency>    <!--el表达式-->    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-expression</artifactId>        <version>${spring.version}</version>    </dependency>    <!--JDBC支持-->    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-jdbc</artifactId>        <version>${spring.version}</version>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-orm</artifactId>        <version>${spring.version}</version>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-tx</artifactId>        <version>${spring.version}</version>    </dependency>    <!-- spring web -->    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-web</artifactId>        <version>${spring.version}</version>    </dependency>    <!--MVC控制层框架-->    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-webmvc</artifactId>        <version>${spring.version}</version>    </dependency>    <!-- servlet-api -->    <dependency>        <groupId>javax.servlet</groupId>        <artifactId>javax.servlet-api</artifactId>        <version>${servlet.version}</version>    </dependency>    <!--测试包-->    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-test</artifactId>        <version>${spring.version}</version>        <scope>test</scope>    </dependency>    <!--mybatis-spring 适配器-->    <dependency>        <groupId>org.mybatis</groupId>        <artifactId>mybatis-spring</artifactId>        <version>${mybatis-spring.version}</version>    </dependency>    <!--mybatis jar-->    <dependency>        <groupId>org.mybatis</groupId>        <artifactId>mybatis</artifactId>        <version>${mybatis.version}</version>    </dependency>    <!--数据库驱动-->    <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>${mysql-driver.version}</version>    </dependency>    <!-- freemarker jar -->    <dependency>        <groupId>org.freemarker</groupId>        <artifactId>freemarker</artifactId>        <version>${freeMarker.version}</version>    </dependency>    <!--以下为工具包 可以不引入-->    <dependency>        <!--Gson 对象转json 使用本地包-->        <groupId>com.google.code.gson</groupId>        <artifactId>gson</artifactId>        <version>2.8.0</version>        <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/gson-2.8.0.jar</systemPath>    </dependency>    <dependency>        <!--Json json转对象-->        <groupId>org.nutz</groupId>        <artifactId>nutz</artifactId>        <version>1.r.60</version>    </dependency>    <dependency>        <groupId>commons-lang</groupId>        <artifactId>commons-lang</artifactId>        <version>2.6</version>    </dependency>    <dependency>        <groupId>commons-beanutils</groupId>        <artifactId>commons-beanutils</artifactId>        <version>1.9.3</version>    </dependency>    <dependency>        <groupId>commons-collections</groupId>        <artifactId>commons-collections</artifactId>        <version>3.2.1</version>    </dependency>    <!--工具包结束--></dependencies>

jar引入完成

3、在src/main/下,新建目录 webapp。

然后先建立好我们需要的package、directory、xml、properties等。

如图所示,根据需要进行。

spring-mybatis-freemarker springMVC环境搭建

4、配置application.properties文件(jdbc信息、服务器IP、应用名称)

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/springMVC?characterEncoding=utf8jdbc.userName=rootjdbc.password=123456serverPath=/springappServer=http://127.0.0.1:8080appCode=springstaticPath=/spring/static

5、配置applicationContext.xml(该文件的主要功能:扫描、启用注解、启用定时任务、启用代理、定义静态资源路径、加载properties文件、定义freemarker模板路径、freemarker视图解析器)。

<?xml version="1.0" encoding="UTF-8"?><!--如果文件没有报错,启动报元素之类的错误,则找一个全面的xsi:schemaLocation来替换--><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:task="http://www.springframework.org/schema/task"       xmlns:mvc="http://www.springframework.org/schema/mvc"       xmlns:aop="http://www.springframework.org/schema/aop"       xsi:schemaLocation="http://www.springframework.org/schema/beans       http://www.springframework.org/schema/beans/spring-beans.xsd       http://www.springframework.org/schema/context       http://www.springframework.org/schema/context/spring-context-4.3.xsd       http://www.springframework.org/schema/mvc       http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd       http://www.springframework.org/schema/task       http://www.springframework.org/schema/task/spring-task-4.3.xsd       http://www.springframework.org/schema/aop       http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">    <!--支持注解方式-->    <context:annotation-config/>    <!--开启数据绑定 requestMapping等,如果不启用,则访问不到controller -->    <mvc:annotation-driven/>    <!--启用定时任务-->    <task:annotation-driven/>    <!--aspectj支持自动代理实现AOP功能-->    <aop:aspectj-autoproxy proxy-target-class="true"/>    <!--扫描指定包下的所有类(@Component、@Repository、@Service、@Controller)-->    <context:component-scan base-package="com.test.spring">        <!--排除Repository,不扫描-->        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>    </context:component-scan>    <!--排除静态资源路劲,不拦截-->    <mvc:resources mapping="/static/**" location="/static/"/>    <!--引入属性文件,在配置中占位使用 -->    <context:property-placeholder location="/WEB-INF/application.properties"/>    <!--<FreeMarker模板路径 -->    <bean id="freemarkerConfigure" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">        <property name="templateLoaderPath" value="/WEB-INF/mvcViews"/>        <property name="defaultEncoding" value="UTF-8"/>    </bean>    <!--<FreeMarker视图解析器 -->    <bean id="freemarkerResolver" 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"/>        <property name="suffix" value=".ftl"/>        <property name="order" value="0"/>        <property name="attributesMap">

<!--所有的ftl文件都能引用到的变量-->            

<map>                <entry key="serverPath" value="${serverPath}"/>                <entry key="appServer" value="${appServer}"/>                <entry key="appCode" value="${appCode}"/>                <entry key="staticPath" value="${staticPath}"/>            </map>        </property>    </bean></beans>

6、配置spring-mybatis.xml文件(主要是配置数据源、扫描mybatis的接口、接口对应的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:tx="http://www.springframework.org/schema/tx"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd                           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">    <!--引入属性文件,在配置中占位使用 -->    <context:property-placeholder location="/WEB-INF/application.properties"/>    <!-- 配置数据源 -->    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">        <property name="driverClassName" value="${jdbc.driver}"/>        <property name="url" value="${jdbc.url}"/>        <property name="username" value="${jdbc.userName}"/>        <property name="password" value="${jdbc.password}"/>    </bean>    <!-- 会话工厂bean sqlSessionFactoryBean -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <!--实体类路径-->        <property name="typeAliasesPackage" value="com.test.spring.entity"/>        <!--xml路径-->        <property name="mapperLocations" value="classpath*:com/test/spring/dao/*.xml"/>    </bean>    <!-- 自动扫描对象关系映射 -->    <bean name="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <property name="sqlSessionFactoryBeanName"   value="sqlSessionFactory" />        <!-- 扫描应用健康检查下的Mapper文件  接口文件  -->        <property name="basePackage" value="com.test.spring.dao" />    </bean>    <!--定义事物管理器,由spring管理事务 -->    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">        <property name="dataSource" ref="dataSource"/>    </bean>    <!--支持注解驱动的事务管理,指定事务管理器 -->    <tx:annotation-driven transaction-manager="transactionManager"/></beans>

7、配置spring-servlet.xml,该xml是额外对拦截的自定义,比如对PC端和移动端的请求做不同处理,可以配置。如果不额外配置,文件可以为空。(我这里是空的)

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"></beans>

8、配置web.xml。(初始化参数、配置监听、配置过滤器、配置拦截器)。

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee         http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">    <!--此处如果不配置<context-param>,则默认读取/WEB-INF/applicationContext.xml-->    <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>/WEB-INF/applicationContext.xml,/WEB-INF/spring-mybatis.xml</param-value>    </context-param>    <!--listener 不可以缺少-->    <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>    <listener>        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>    </listener>    <!--字符集过滤-->    <filter>        <filter-name>encodingFilter</filter-name>        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>        <init-param>            <param-name>encoding</param-name>            <param-value>UTF-8</param-value>        </init-param>        <init-param>            <param-name>forceEncoding</param-name>            <param-value>true</param-value>        </init-param>    </filter>    <filter-mapping>        <filter-name>encodingFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>    <servlet>        <servlet-name>spring</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <!--此处如果不配置<init-param>,则默认读取/WEB-INF/${servlet-name}-servlet.xml -->        <!--        <init-param>                    <param-name>contextConfigLocation</param-name>                    <param-value>/WEB-INF/spring-servlet.xml</param-value>                </init-param>-->        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>spring</servlet-name>        <url-pattern>/*</url-pattern>    </servlet-mapping></web-app>

9、现在可以部署到tomcat,path就用/spring,启动tomcat,看下是否报错。现在配置就完成了。

spring-mybatis-freemarker springMVC环境搭建

10、测试freemarker是否整合成功。

1、在mvcViews目录下,新建一个html,然后重命名为index.ftl。

2、在controller包下,新建一个HomeController类。

3、重启tomcat,访问http://127.0.0.1:8080/spring/pc/index?name=张三

文件内容如下图:

spring-mybatis-freemarker springMVC环境搭建

spring-mybatis-freemarker springMVC环境搭建

spring-mybatis-freemarker springMVC环境搭建

11、测试mybatis是否整合成功。

新建表

DROP TABLE IF EXISTS `t_book`;

CREATE TABLE `t_book` (

  `id` varchar(40) NOT NULL,

  `name` varchar(100) DEFAULT NULL COMMENT '书名',

  `profile` varchar(2000) DEFAULT NULL COMMENT '简介',

  `author` varchar(20) DEFAULT NULL COMMENT '作者',

  `publish_time` datetime DEFAULT NULL COMMENT '出版时间',

  `last_update` datetime DEFAULT NULL COMMENT '最后更新',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `t_book` VALUES ('0173e35c7f954b0e873ed33ae38c95a1', '这是一本书11', '这是一本书的简介', '就是我', '2018-08-16 00:00:00', '2018-08-15 13:44:08');

INSERT INTO `t_book` VALUES ('1', '钢铁是这样练成的', '九年义务教育小学2年纪', '人民出版社', '2010-01-01 18:09:40', '2018-03-01 18:09:52');

INSERT INTO `t_book` VALUES ('1dc08fe513fe43958bd65c9a5a788b29', '从入门到精通', 'java', '高奈夫斯基', null, '2018-08-14 18:17:22');

INSERT INTO `t_book` VALUES ('25738821693865984', '巴黎圣母院', null, '雨果', '2018-08-14 12:00:07', '2018-08-14 12:00:07');

INSERT INTO `t_book` VALUES ('25738821693865986', '人性的弱点', null, '威尔士', '2018-08-14 12:08:47', '2018-08-14 12:08:47');

INSERT INTO `t_book` VALUES ('25738821693865990', '雷雨', null, '曹禺', '2018-08-14 14:49:24', '2018-08-14 14:49:24');

INSERT INTO `t_book` VALUES ('25738821693865992', '孙子兵法', '著名的战争著作', '孙膑', '2017-01-04 00:00:00', '2018-08-16 15:38:40');

在entity包下新建Book类,并添加get和set方法。

public class Book  implements Serializable {    private static final long serialVersionUID = 1L;    private String id;    private String name;    private String profile;    private String author;    private Date publishTime;    private Date lastUpdate;    private String publishTimeStr;//查询使用    private String lastUpdateStr;//查询使用

}

12、建立dao的映射。

在dao包下,新建BookMapper接口。

public interface BookMapper {    List<Book> getList();}

在resource下的dao目录下,新建BookMapper.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--命名空间应该是对应接口的包名+接口名 --><mapper namespace="com.test.spring.dao.BookMapper">    <!--resultMap负责列名与bean的对应关系,以及类型转换-->    <resultMap id="BookMap" type="com.test.spring.entity.Book">        <id column="id" property="id"  jdbcType="VARCHAR"/>        <result column="publish_time" property="publishTime" jdbcType="TIMESTAMP"/>        <result column="last_update" property="lastUpdate" jdbcType="TIMESTAMP"/>    </resultMap>    <select id="getList" resultMap="BookMap" >        select id,name,profile,author,publish_time ,last_update from t_book    </select></mapper>

13、新建BookController类,内容如下:

@Controller@RequestMapping(value = "/pc/book")public class BookController {    @Resource    private BookMapper bookMapper;    @RequestMapping(value = "/list")    public String list(Model model, String name){        List<Book> books = bookMapper.getList();        model.addAttribute("list",books);        return "book/list";    }}

mvcViews目录下,新建book目录,book目录下新建一个html,重命名为list.ftl,内容如下:

   <div>本页面的访问路径是:${appServer!}${serverPath!}/pc/book/list</div>    <table>        <thead><tr><td>作品名称</td><td>简介</td><td>作者</td><td>出版日期</td><td>更新日期</td></tr></thead>        <tbody> <#if list?? && (list?size>0)>            <#list list as item> <tr>                <td>${(item.name)!}</td>                <td>${(item.profile)!}</td>                <td>${(item.author)!}</td>                <td>${(item.publishTime?string('yyyy-MM-dd'))!}</td>                <td>${(item.lastUpdate?string('yyyy-MM-dd HH:mm:ss'))!}</td>            </tr> </#list>        </#if> </tbody>    </table>

14、重新启动tomcat,访问

http://127.0.0.1:8080/spring/pc/book/list

能看到数据,说明mybatis也成功了。

spring-mybatis-freemarker springMVC环境搭建

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢