SpringMVC+Mybatis框架配置过好几次了,现在貌似终于对这些东西有些了解,自己草草的总结一下,也是再学习的一个过程

首先,准备jar包,这个就不在赘述了。

然后就来肉戏了,以下只是我的理解,不足之处请指出,轻喷。

web.xml是一个web程序的入口,当web程序启动时,首先找web.xml。先把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>SpringMVC</display-name><!-- 项目默认页面 --><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- 配置文件位置 -->  <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext.xml</param-value></context-param><!-- 上下文Spring监听器 -->  <listener>  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener><!-- 字符集过滤器 -->  <filter><filter-name>characterEncodingFilter</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></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- servlet控制跳转 -->  <servlet>  <servlet-name>spring</servlet-name>  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  <!-- 配置文件 -->  <init-param>  <param-name>contextConfigLocation</param-name>  <param-value>classpath:springMVC/context-dispatcher.xml</param-value>  </init-param>  </servlet>  <servlet-mapping>  <servlet-name>spring</servlet-name>  <url-pattern>*.do</url-pattern>  </servlet-mapping>
</web-app>

这两项,不用说了吧。

<span style="white-space:pre">  </span><display-name>SpringMVC</display-name><!-- 项目默认页面 --><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>

web.xml读到这个位置,就去找这个位置下的配置文件了,这个文件是spring容器的配置,监听器不用多说。

<!-- 配置文件位置 -->  <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/applicationContext.xml</param-value></context-param><!-- 上下文Spring监听器 -->  <listener>  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>

配置spring的文件

<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"xsi:schemaLocation="  http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:component-scan base-package="com.test" /><beanclass="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /><!--创建jdbc数据源 --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /><property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" /><property name="username" value="scott" /><property name="password" value="tiger" /></bean><!-- 创建SqlSessionFactory,同时指定数据源 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="configLocation" value="classpath:mybatis/mybatis-config.xml" /></bean><bean id="sqlTemplate" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg index="0" ref="sqlSessionFactory" /></bean>
</beans>  

很简单,配置一个扫描包,就是扫描这个包下面的所有java类,如果需要spring来动态生成这个类,就给class加一个标签,这个后面会贴出来。再配置一个自动注解。数据源不用多说,配置持久化工厂,就是告诉spring要用哪种持久化方式,这里配置的是mybatis。最底下配置一个mybatis的sqlTemplate,用来进行持久化操作。这就是spring中所有的东西。因为是基于注解的,所以不用一个一个地配置bean,是不是很简单?

我们现在看看mybatis的配置:

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><typeAliases><typeAlias type="com.test.vo.EmpVo" alias="EmpVo" /></typeAliases><mappers><mapper resource="mybatis/mapper/empMapper.xml" /></mappers>
</configuration>

这个是mybatis的总配置,配置对应VO类的别名,还有具体mapper文件存放的位置。我们看看empMapper.xml

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="EmpVo"><select id="getEmpList" resultType="EmpVo">select empNo,eName,job fromEmp2</select><insert id="addEmp" parameterType="EmpVo">insert into emp2 values(#{empNo},#{eName},#{job})</insert><delete id="delEmpById" parameterType="EmpVo">delete from emp2 where empNo=#{empNo}</delete>
</mapper>

呵呵,SQL语句,这里注意id是唯一的,resultType是具体类,就是说查出来的字段应该和你的VO一一对应,当然也可以是系统类,int,string,都可以。但是这样不能满足复杂的查询,所以更多情况下我们使用resultMap,resultMap具体配置可以自行google或度娘

整个spring和持久化层的东西就搞完了,我们现在继续回到web.xml。

<!-- 字符集过滤器 -->  <filter><filter-name>characterEncodingFilter</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></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

这个是过滤器,和springMVC没什么关系,主要功能是将所有请求的编码格式改成UTF-8格式。

继续往下看:

<!-- servlet控制跳转 -->  <servlet>  <servlet-name>spring</servlet-name>  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  <!-- 配置文件 -->  <init-param>  <param-name>contextConfigLocation</param-name>  <param-value>classpath:springMVC/context-dispatcher.xml</param-value>  </init-param>  </servlet>  <servlet-mapping>  <servlet-name>spring</servlet-name>  <url-pattern>*.do</url-pattern>  </servlet-mapping>

这是配置MVC的部分,其实无论是SpringMVC还是structs,其实都是把servlet封装了,所以这里其实就是配置servlet。将带有后缀名为.do的http请求拦截(dispatch),然后根据配置去解析相应的请求。我们看看这个文件:

<beans default-lazy-init="true"  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-3.0.xsd  http://www.springframework.org/schema/mvc   http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd   http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.0.xsd">  <!-- 通过注解,把URL映射到Controller上,该标签默认注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->  <mvc:annotation-driven />  <!-- 使用注解的包,包括子集 -->  <context:component-scan base-package="com.samsung.controller" />  <!-- 视图解析器 -->  <bean id="viewResolver"  class="org.springframework.web.servlet.view.InternalResourceViewResolver">  <property name="viewClass"  value="org.springframework.web.servlet.view.JstlView" />  <property name="prefix" value="/WEB-INF/jsp/" />  <property name="suffix" value=".jsp"></property>  </bean>
</beans> 

同样也是简单到爆啊有木有,加注解,加扫包,配置视图解析,视图解析的作用就是加前后缀,直接读文件。

整个springMVC的框架就搭好了,不到100行的Xml。当然,事务处理神马的没有加,最基本的东西已经配置好了,就可以用了。
总结一下:

web.xml是web程序入口,关于SpringMVC需要配置的有:配置Spring的文件位置,Spring监听器,MVC也就是servlet的配置;

spring文件中需要配置的有:扫包,自动注解,数据源,数据源工厂(在这里配置你的持久化方式),还有进行持久化操作的sqlTemplate;

mybatis配置的有:别名,mapper文件存放的位置,mapper文件配置具体的sql语句;

mvc的配置有:扫包,自动注解,视图解析。

下面附上代码结构和代码:

Controller

@Controller
public class TestController {@Autowiredprivate ITestSVC testSVC;@RequestMapping(value = "/list.do")public String select(HttpServletRequest request, Model model) {List<EmpVo> emps = testSVC.findAll();model.addAttribute("emps", emps);System.out.println(emps.size());return "list";}@RequestMapping(value = "/toAdd.do")public String toAdd(HttpServletRequest request, Model model) {return "add";}@RequestMapping(value = "/add.do")public String add(HttpServletRequest request, Model model) {EmpVo empVo = new EmpVo();empVo.setEmpNo(request.getParameter("empNo"));empVo.seteName(request.getParameter("eName"));empVo.setJob(request.getParameter("job"));testSVC.add(empVo);return "redirect:/list.do";}@RequestMapping(value = "/del.do")public String delEmp(HttpServletRequest request, Model model) {EmpVo empVo = new EmpVo();empVo.setEmpNo(request.getParameter("empNo"));testSVC.delete(empVo);return "redirect:/list.do";}}

ITestDao

public interface ITestDao {public void add(EmpVo emp);public void delete(EmpVo emp);public List<EmpVo> findAll();public void update(EmpVo emp);public EmpVo findOne(String id);
}

TestDaoImpl

@Repository
public class TestDao implements ITestDao {@Autowiredprivate SqlSessionTemplate sqlTemplate;@Overridepublic void add(EmpVo emp) {sqlTemplate.insert("addEmp", emp);}@Overridepublic void delete(EmpVo emp) {sqlTemplate.delete("delEmpById", emp);}@Overridepublic List<EmpVo> findAll() {List<EmpVo> list = new ArrayList<EmpVo>();list = sqlTemplate.selectList("getEmpList");return list;}@Overridepublic void update(EmpVo emp) {}@Overridepublic EmpVo findOne(String id) {return null;}

ITestSVC

public interface ITestSVC {public void add(EmpVo emp);public void delete(EmpVo emp);public List<EmpVo> findAll();public void update(EmpVo emp);}

TestSVCImpl

@Repository
public class TestSVCImpl implements ITestSVC {@Autowiredprivate ITestDao testDao;@Overridepublic void add(EmpVo emp) {testDao.add(emp);}@Overridepublic void delete(EmpVo emp) {testDao.delete(emp);}@Overridepublic List<EmpVo> findAll() {return testDao.findAll();}@Overridepublic void update(EmpVo emp) {testDao.update(emp);}}

EmpVo

public class EmpVo {private String empNo;private String eName;private String job;public EmpVo() {}public EmpVo(String empNo, String eName, String job) {super();this.empNo = empNo;this.eName = eName;this.job = job;}public String getEmpNo() {return empNo;}public void setEmpNo(String empNo) {this.empNo = empNo;}public String geteName() {return eName;}public void seteName(String eName) {this.eName = eName;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}
}

基于注解配置简单的SpringMVC+Mybatis相关推荐

  1. ajax注解解决中文乱码,基于注解的简单MVC框架的实现,以及jquery,prototype,ajax传输乱码问题的一点解决方法...

    1:基于注解的简单MVC框架的实现 效果:1:用户只需要定义一些普通的java类来做为M层,也就是STRUTS的action类,该类里包含1到 N个控制方法,每个方法需要的form数据,由注解@Act ...

  2. Java学习 --- springSecurity基于注解配置

    一.springSecurity基于注解配置 创建一个spring项目 1.pom.xml <?xml version="1.0" encoding="UTF-8& ...

  3. 带你简化理解Spring 基于注解配置的原理

    1 需求说明 自己写一个简单的 Spring 容器, 通过读取类的注解 (@Component @Controller @Service @Reponsitory),将对象注入到 IOC 容器 bea ...

  4. [问题解决]基于注解配置dubbo遇到ConnectionLoss for /dubbo/xxx问题解决

    今天升级spring版本的时候,同时升级dubbo的版本,采用的是dubbo的基于注解的配置方法,采用curator作为dubbo的客户端, curator版本为4.1.0,启动之后,发现一直报错 C ...

  5. 零配置简单搭建SpringMVC 项目

    SpringMVC是比较常用的JavaWeb框架,非常轻便强悍,能简化Web开发,大大提高开发效率,在各种Web程序中广泛应用.本文采用Java Config的方式搭建SpringMVC项目,并对Sp ...

  6. Dubbo源码解析:基于注解配置原理解析

    使用注解开发一个Dubbo应用 客户端 @Component("demoServiceComponent") public class DemoServiceComponent i ...

  7. JAVA 搭建基于SPRINGBOOT的SSM(SPRING + SPRINGMVC + MYBATIS)的MAVEN项目

    http://www.cnblogs.com/yuanjava/p/8095139.html 转载于:https://www.cnblogs.com/zhouchunDIY/p/8108320.htm ...

  8. MyBatis基于注解的使用

    Mybtis注解 增加接口CategoryMapper ,并在接口中声明的方法上,加上注解 增加对CategoryMapper 的映射: <mappers> //com.shop.mapp ...

  9. SpringMVC+Mybatis+MySQL配置Redis缓存

    SpringMVC+Mybatis+MySQL配置Redis缓存 1.准备环境: SpringMVC:spring-framework-4.3.5.RELEASE-dist Mybatis:3.4.2 ...

最新文章

  1. linux ps -aux 中stat含义:
  2. 如何将MP3格式音乐转换成M4R格式
  3. python中面向切片编程(AOP)和装饰器
  4. 传统的线性降维方法效果不佳。_高压断路器机械故障诊断与定位的新思路:KPCA-SoftMax诊断方法...
  5. Boost:双图bimap的修改和替换测试程序
  6. 主成分分析(PCA)原理详解 2016/12/17 · IT技术 · 主成分分析, 数学 分享到: 21 原文出处: 中科春哥 一、PCA简介 1. 相关背景 主成分分析(Principa
  7. c语言中怎么 写子程序,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
  8. php : Warning: strftime(): It is not safe to rely on the system's timezone settings.
  9. 记一个函数定义中,形参是空列表时要注意的问题
  10. SageMaker 基于 Blazing Text的中文新闻标题分类
  11. 1、Struts2基本入门
  12. 四、OSPF配置实验
  13. 网络工程师中级--下午科目
  14. 常用电子个人邮箱账号格式怎么写?
  15. 当电脑打开显示每日新闻联播主要内容
  16. 静态函数与非静态函数的区别
  17. Python生成迷宫
  18. python基础训练—数字
  19. 用计算机弹出音乐谱,计算器弹歌曲谱子
  20. 【生产调度】基于遗传算法求解柔性生产调度(FJSP)问题含Matlab源码

热门文章

  1. POI 给单元格添加批注
  2. 科技云报道:上云尚未成功,“下云潮”已悄然来临?
  3. 5G网络切片的七种武器(一)
  4. python tensorflow验证码识别_Tensorflow简单验证码识别应用
  5. 惠山赏菊 梅园赏桂
  6. 近期学习的反思和计划
  7. 关于 金山词霸2012 v3.4版本的一些意见和建议
  8. 达梦数据库安装配置记录
  9. 瑞星2008免费版下载
  10. 爱情之路(二维spfa)