SpringMVC-Spring-MyBatis-Freemarker整合+源码下载
2017-06-12 17:22
633 查看
前言:之前看过很多大神写的SSM整合,但一直没亲自动手去这搞过,对于这三个框架的整合脑子中也是模模糊糊,今天决定去弄一下,加深一下自己对他们的印象,而且我也会把最常用的前端框架FreeMarker整合到一起,以及拦截器和过滤器的使用,小弟也是第一次整合这几个常用的框架,如有错误,敬请包涵和指出。
框架版本:Spring4.0, Mybatis3.2.0, Freemarker 2.3.16
数据库:Oracle11g
服务器:Tomcat7.0
开发工具:MyEclipse
第一步:创建名称为ssm的web项目,并导入所需jar,整个项目结构以及所需所有jar如下图所示:
WebRoot目录下:
第二部:建表(我这里使用PL/SQL操作)、创建序列、插入数据
第三步:创建实体,映射接口及实现,相当于以前的dao层接口和dao层实现
第四步:Mybatis配置文件
第五步:SpringMVC配置文件
第六步:Spring-Common配置文件(Spring、Mybatis整合)
第七步:web.xml配置文件
第八步:过滤器和拦截器比较简单,在配置文件中有详细说明,下面看效果图吧,界面很low,可以忽视
在这里,拦截器和过滤器的作用是作为一个登入校验,没有登入的情况下访问系统会直接跳转到登入页面
总结:这几个框架整合还是相对简单的,虽然当中遇到一些问题,但是解决了,其他代码我就不一一贴出来了,我会把源码贴出来。
源码下载:SpringMVC-Spring-Mybatis-Freemarker
下一篇文章介绍:在这篇博文的基础上集成dubbo和zookeeper,做一个简单的分布式入门
框架版本:Spring4.0, Mybatis3.2.0, Freemarker 2.3.16
数据库:Oracle11g
服务器:Tomcat7.0
开发工具:MyEclipse
第一步:创建名称为ssm的web项目,并导入所需jar,整个项目结构以及所需所有jar如下图所示:
WebRoot目录下:
第二部:建表(我这里使用PL/SQL操作)、创建序列、插入数据
create table USERINFO ( id VARCHAR2(50) not null primary key, name VARCHAR2(50), age VARCHAR2(50), loginname VARCHAR2(50), password VARCHAR2(50) )
create sequence SEQ_ID minvalue 1 maxvalue 99999 start with 22 increment by 1 cache 20 order;
insert into userInfo(id,name,age,loginName,password) values(seq_id.nextval,'超级管理员','26','admin','123456')
第三步:创建实体,映射接口及实现,相当于以前的dao层接口和dao层实现
package com.xujd.model; /** * 用户实体 * @ClassName User * @Description TODO * @author XuJD * @date 2017-6-6 */ public class User{ private String id; private String name; private String age; private String loginName; private String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
package com.xujd.mapper; import java.util.List; import com.xujd.model.User; public interface UserMapper { void save(User op); boolean update(User op); boolean delete(int id); User findById(int id); List<User> findAll(); User login(User user); }
<?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"> <!-- namespace:必须与对应的UserMapper.java接口全类名一致 id:必须与对应接口的某个对应的方法名一致 --> <mapper namespace="com.xujd.mapper.UserMapper" > <sql id="UPDATE_USERINFO_ITEMS"> <trim prefix="set" suffixOverrides=","> <if test="name!=null and name!=''"> name=#{name}, </if> <if test="age!=null and age!=''"> age=#{age}, </if> <if test="loginName!=null and loginName!=''"> loginName=#{loginName}, </if> <if test="password!=null and password!=''"> password=#{password}, </if> </trim> </sql> <insert id="save" parameterType="User" flushCache="true"> insert into userInfo(id,name,age,loginName,password) values(seq_id.nextval,#{name},#{age},#{loginName},#{password}) </insert> <update id="update" parameterType="User" flushCache="true"> update userInfo <include refid="UPDATE_USERINFO_ITEMS"/> where id=#{id} </update> <delete id="delete" parameterType="int" flushCache="true"> delete userInfo where id=#{id} </delete> <select id="findById" parameterType="int" resultType="User" useCache="true" > select * from userInfo where id=#{id} </select> <select id="findAll" resultType="User" useCache="true"> select * from userInfo </select> <select id="login" resultType="User" parameterType="User" useCache="true"> select * from userInfo where loginName=#{loginName} and password=#{password} </select> </mapper>
第四步:Mybatis配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 实体类,简称 -设置别名 --> <typeAliases> <typeAlias alias="User" type="com.xujd.model.User" /> </typeAliases> <!-- 实体接口映射资源 --> <!-- 说明:如果xxMapper.xml配置文件放在和xxMapper.java统一目录下,mappers也可以省略, 因为org.mybatis.spring.mapper.MapperFactoryBean默认会去查找与xxMapper.java相同目录和名称的xxMapper.xml --> <mappers> <mapper resource="com/xujd/mapper/UserMapper.xml" /> </mappers> </configuration>
第五步:SpringMVC配置文件
<?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:mvc="http://www.springframework.org/schema/mvc" 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.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 开启注解 --> <mvc:annotation-driven /> <mvc:default-servlet-handler /> <!-- 注解扫描包 --> <context:component-scan base-package="com.xujd" /> <!-- 配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能,需要重新设置spring-mvc-3.0.xsd --> <mvc:resources mapping="/img/**" location="/img/" /> <mvc:resources mapping="/js/**" location="/js/" /> <mvc:resources mapping="/css/**" location="/css/" /> <mvc:resources mapping="/html/**" location="/html/" /> //配置拦截器 <mvc:interceptors> <mvc:interceptor> <!-- 需拦截的请求 --> <mvc:mapping path="/bg/user/*"/> <bean class="com.xujd.interceptor.LoginInterceptor"/> </mvc:interceptor> </mvc:interceptors> <!-- 定义跳转的文件的前后缀 ,视图模式配置--> <!-- Jsp视图解析器--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> <property name="prefix" value="/jsp/" /> <property name="suffix" value=".jsp" /> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="order" value="1" /><!--jsp设置为1,ftl设置为0,表示先找ftl,没有再找jsp --> </bean> <!-- FreeMarker视图解析器 --> <bean id="viewResolverFtl" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="order" value="0" /> <property name="suffix" value=".ftl" /> <property name="contentType" value="text/html;charset=utf-8" /> <property name="viewClass"> <value>org.springframework.web.servlet.view.freemarker.FreeMarkerView</value> </property> </bean> <!-- 配置freeMarker的模板路径 --> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <!-- <property name="templateLoaderPaths" > ftl多路径配置 <list> <value>/ftl/user/</value> <value>/ftl/test/</value> </list> </property> --> <property name="templateLoaderPath" value="/ftl/"/> <property name="freemarkerVariables"> <map> <entry key="xml_escape" value-ref="fmXmlEscape" /> </map> </property> <property name="defaultEncoding" value="utf-8" /> <property name="freemarkerSettings"> <!-- 设置FreeMarker环境属性 --> <props> <prop key="template_update_delay">0</prop><!--刷新模板的周期,单位为秒 --> <prop key="default_encoding">UTF-8</prop> <!--模板的编码格式 --> <prop key="locale">UTF-8</prop><!-- 本地化设置 --> <prop key="number_format">0.##########</prop> <prop key="date_format">yyyy-MM-dd</prop> <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop> <prop key="classic_compatible">true</prop> <prop key="template_exception_handler">ignore</prop> </props> </property> </bean> <bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/> </beans>
第六步:Spring-Common配置文件(Spring、Mybatis整合)
<?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:p="http://www.springframework.org/schema/p" 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-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/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <!-- 注册jdbc属性文件(1) --> <!-- <context:annotation-config/> <context:property-placeholder location="classpath:db.properties"/> --> <!-- 1. 数据源 : DriverManagerDataSource --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@192.168.2.17:1521:yx" /> <property name="username" value="ts_yx" /> <property name="password" value="ts_yx" /> </bean> <!-- 2. mybatis的SqlSession的工厂: SqlSessionFactoryBean dataSource:引用数据源 MyBatis定义数据源,同意加载配置 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="configLocation" value="classpath:config/mybatis-config.xml" /> </bean> <!-- 3. mybatis自动扫描加载Sql映射文件/接口 : MapperScannerConfigurer sqlSessionFactory basePackage:指定sql映射文件/接口所在的包(自动扫描) --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.xujd.mapper"></property> <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> </bean> <!-- 4. 事务管理 : DataSourceTransactionManager dataSource:引用上面定义的数据源 --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 5. 使用声明式事务 transaction-manager:引用上面定义的事务管理器 --> <tx:annotation-driven transaction-manager="txManager" /> </beans>
第七步: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"> <!-- 设置Spring容器加载所有的配置文件的路径 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:config/spring-*.xml</param-value> </context-param> <!-- 配置SpringMVC核心控制器 --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置初始配置化文件,前面contextConfigLocation看情况二选一 --> <!-- init-param 节点必须在 load-on-startup 节点以上 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:config/spring-mvc.xml</param-value> </init-param> <!-- 启动加载一次 --> <load-on-startup>1</load-on-startup> </servlet> <!--为DispatcherServlet建立映射 --> <servlet-mapping> <servlet-name>springMVC</servlet-name> <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 --> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 加载Spring容器配置 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 防止Spring内存溢出监听器 --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</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> <welcome-file-list> <welcome-file>/index.ftl</welcome-file> </welcome-file-list> <!-- session有效时间,单位分钟 --> <session-config> <session-timeout>30</session-timeout> </session-config> <!-- 过滤器配置 --> <filter> <filter-name>backFilter</filter-name> <filter-class>com.xujd.filter.BackFilter</filter-class> </filter> <filter-mapping> <filter-name>backFilter</filter-name> <url-pattern>/bg/*</url-pattern>//需要过滤的请求 </filter-mapping> </web-app>
第八步:过滤器和拦截器比较简单,在配置文件中有详细说明,下面看效果图吧,界面很low,可以忽视
在这里,拦截器和过滤器的作用是作为一个登入校验,没有登入的情况下访问系统会直接跳转到登入页面
总结:这几个框架整合还是相对简单的,虽然当中遇到一些问题,但是解决了,其他代码我就不一一贴出来了,我会把源码贴出来。
源码下载:SpringMVC-Spring-Mybatis-Freemarker
下一篇文章介绍:在这篇博文的基础上集成dubbo和zookeeper,做一个简单的分布式入门
相关文章推荐
- Mybatis1.2.2与spring4.1.6整合(附源码下载)
- springmvc4 mybatis 整合 框架源码 bootstrap html5 mysql oracle sqlsever spring SSM
- springmvc mybatis 整合 框架源码 bootstrap html5 mysql oracle spring
- springmvc mybatis 整合 框架源码 bootstrap html5 mysql oracle spring
- SpringMVC+Mybatis框架整合源码 项目 下载 rest websocket html5
- 使用maven与MyEclipse整合ssm(Spring MVC、Spring、Mybatis)三大框架并实现用户注册(环境搭载+实例源码下载)
- springmvc4 mybatis 整合 框架源码 bootstrap html5 mysql oracle sqlsever spring SSM
- Mybatis-Spring-SpringMVC-freemarker-PageHelper的整合
- springmvc mybatis 整合 框架源码 bootstrap html5 mysql oracle spring
- springmvc mybatis 整合 框架源码 bootstrap html5 mysql oracle spring
- 【SSM框架 SSM项目源码 SSM源码 下载】java框架整合Springmvc+mybatis+shiro+bootstrap
- SSM框架 SSM项目源码 SSM源码 下载 java框架整合Springmvc+mybatis+s
- SpringMVC+Spring+Mybatis+Maven整合-mybatis及SpringMVC、Mybatis查询
- 改版后spring,mybatis,hibernate及源码下载方法
- javaWeb项目SpringMVC3.2.1与Mybatis3.0.4整合实例(Mybaits-spring配置文件的几种方式)之一SqlSessionDaoSupport方式
- Spring与Mybatis整合的MapperScannerConfigurer处理过程源码分析
- Spring SpringMvc 3.0 + MyBatis 整合--补充关于.properties文件的读取
- MyBatis3整合Spring3、SpringMVC3
- Spring-SpringMVC-Mybatis整合
- MAVEN_SPRING+SPRINGMVC+MYBATIS+FREEMARKER 整合