当前位置: 首页 > 互联网 > 正文

Spring+MyBatis+Freemarker+Easyui框架搭建

恰逢学习JAVA语言,又在看一些如何使用框架的书,想着之前用.NET_MVC做过的EasyUI后台管理网站,何不自己照着书本的样子,搭建一个类似功能后台管理平台呢?想做就要亲自动起手来,这样才能把碰到的问题收集起来,然后一个个去解决,争取最好的学习结果。

Maven工具管理jar包

用Eclipse搭建一个maven-archetype-webapp项目。公司内网搭了个Maven私服,连到这个私服再建个Maven的项目就相对来说就简单了,把需要的jar包去私服上查找一下,然后加入到项目pom.xml文件中修改保存即可。把需要Spring4.x框架包,MyBatis的jar包,Freemarker的jar包统统引入进来。有的jar包私服上无法下载就可以手动去公网上下载,手动添加到WEB-INF下的lib文件夹中。像我项目中的jackson相关2.x的jar是手动下载添加的。

项目Web.xml配置

添加项目的运行时环境,本地使用的是appache-tomcat-7.x版本。配置项目的java-compiler为1.7版本,生成环境为JRE1.7。在Web.xml中配置Spring的servlet拦截及url样式和UTF-8编码的filter配置。

[code lang=”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_2_5.xsd" version="2.5">

<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.spring</url-pattern>
</servlet-mapping>

<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>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
[/code]

Spring配置文件spring-servlet.xml

注册Spring上下文的包扫描路径,注册jdbc,注册MyBatis与Spring-Jdbc的接口关联。注册Spring-MVC的标签方法,消息转换,加入freemarker的配置:包括模板路径,前后缀,文件类型及编码等。

[code lang=”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:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.0.xsd">

<context:component-scan base-package="com.byhard.cms.Admin.dao"></context:component-scan>
<context:component-scan base-package="com.byhard.cms.Admin.service"></context:component-scan>
<context:component-scan base-package="com.byhard.cms.Admin.controller"></context:component-scan>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<property name="url" value="jdbc:sqlserver://localhost;databaseName=SpringEasyUI" />
<property name="username" value="sa" />
<property name="password" value="Passw0rd" />
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.byhard.cms.Admin.orm"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>

<tx:annotation-driven transaction-manager="transactionManager"/>

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonHttpMessageConverter" />
</list>
</property>
</bean>

<bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/Views/" />
<property name="freemarkerSettings">
<props>
<prop key="defaultEncoding">UTF-8</prop>
</props>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="cache" value="true"></property>
<property name="prefix" value=""></property>
<property name="suffix" value=".ftl"></property>
<property name="contentType" value="text/html;charset=UTF-8"></property>
<property name="requestContextAttribute" value="request"></property>
</bean>

<mvc:annotation-driven />
</beans>
[/code]

MyBatis的配置及运用

根据POJO规范定义一个标准的实体类。定义一个与实体相关的Mapper接口,此接口供Spring注入,可直接调用。配置一个Mapper.xml文件,与之相对的Mapper接口方法呼应,在这个xml文件中定义接口方法具体的数据库操作,输入参数和输出结果。

ProjectMapper.xml文件如下:

[code lang=”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.byhard.cms.Admin.orm.ProjectMapper">
<insert id="insertProject" parameterType="com.byhard.cms.Admin.orm.Project">
<selectKey resultType="java.lang.Integer" keyProperty="id">
select @@IDENTITY
</selectKey>
<![CDATA[ insert into Project(name, introduction, dev_platform, dev_language, manager, developers, start_date, online_date, create_date, create_by, update_date, update_by) values(#{name},#{introduction},#{dev_platform},#{dev_language},#{manager},#{developers},#{start_date},#{online_date},#{create_date},#{create_by},#{update_date},#{update_by}) ]]>
</insert>
</mapper>
[/code]

ProjectMapper.java文件如下:

[code lang=”java”]
package com.byhard.cms.Admin.orm;

public interface ProjectMapper {
public void insertProject(Project project);
}
[/code]

EasyUI-Js框架

在webapp目录添加EasyUI-Js框架包,包括图片,css样式等。在相同的目录下添加Views文件下,文件下添加相应的.ftl的freemarker模板,其中包含各种公共模板。在公共模板的开发中,可能出现乱码,需要将项目属性中的文本编码改成UTF-8。如需要模板智能提示功能,需要下载freemarker的开发插件,模板文件会有代码高亮显示效果。

Java源代码分层架构

除了之前提及的实体类放到orm层下,操作数据库方法放在dao层,dao层之上是service层。响应http请求的写在controller层,通过controller层调用相应模块的services层。dao层与services层提供AllDao与AllServices类,通过这两个All类可以获取到所有的dao或services。将各个dao和services注入到AllDao与AllServices中,方便开发人员统一调用。下面是源码的文件结构

[code lang=”html”]
package com.byhard.cms.Admin.controller
BaseAction.java
HomeAction.java
ProjectAction.java
package com.byhard.cms.Admin.dao
AllDao.java
ProjectDao.java
package com.byhard.cms.Admin.orm
Project.java
ProjectMapper.java
mybatis-3-config.xml
ProjectMapper.xml
package com.byhard.cms.Admin.service
AllService.java
ProjectService.java
[/code]

小结

使用MyBatis,仅通过写配置就能很方便的将结果转成JavaBean,同时极大的节省了数据持久化操作。Freemarker模板也方便View层的独立,及模板的重用,让代码更加简洁。Spring成了网站收发的中转站,能处理各种输入输出请求,包括输入输出的数据格式,完美的支持了json格式。通过这个项目框架的搭建,让我很清楚的了解一个Web项目的层次结构,框架的搭建过程,也极大的熟悉了Eclipse开发工具。了解这些框架的使用和配置,为之后深入的学习java知识和相关框架打下一个坚实的基础。

本文固定链接: http://www.byhard.com/?p=1479 | 海纳百川

该日志由 byhard 于2015年11月27日发表在 互联网 分类下,
原创文章转载请注明: Spring+MyBatis+Freemarker+Easyui框架搭建 | 海纳百川
关键字: ,

Spring+MyBatis+Freemarker+Easyui框架搭建:目前有4 条留言

  1. 板凳
    小松博客:

    好文章可惜我不学java

    2015-11-29 21:46
    • 有用到,就学习一下啦。

      2015-11-30 08:57
  2. 沙发
    夏日博客:

    java语言,比PHP难得多了。

    2015-12-07 21:36
    • 概念性的东西多,应用场景也不同,侧重面不一样。

      2015-12-08 08:36