spring+springMVC+mybatis整合示例(基于XML配置文件)

spring+springMVC+mybatis整合示例(基于XML配置文件)


博主最近一直在学习spring等相关的web知识。这篇博客主要介绍了在web应用中搭建SSM框架。使用XML的格式配置的目的主要是为了更好的理解spring的IoC。在稍后的博客中还会介绍基于注解的方式搭建SSM框架。总的体会就是使用XML配置文件的方式要比使用注解的方式要麻烦多了。

项目是在maven中搭建的,不懂的童鞋们自行百度。

项目结构与功能

根据MVC架构,首先创建了的后台主要的文件目录如下所示:
这里写图片描述
分为了controller、service、dao以及entity这四个。
处理的流程
1,controller主要负责接收前台传回的URL信息,
2,controller调用service进行逻辑处理
3,service再调用dao层获取数据库的数据。
4,获取到数据后再逐层返回的数据返回给controller,由controller封装成ModelAndView对象返回给springMVC的DispatcherServlet进行处理返回给前台页面展示。
5,entity主要是用来存放对应数据库中的实体类

各功能模块

1,控制器controller
使用配置文件的方式构建的controller对象需要继承org.springframework.web.servlet.mvc.Controller类。并且实现其中的handleRequest(HttpServletRequest req, HttpServletResponse res){}方法。在本项目中的controller文件中主要就是实现了一个login类。login的主要功能就是与一个网址绑定起来,当有请求来到时,将调用重写的handleRequest方法。该方法调用service层的方法返回一条数据库的数据。主要代码如下:

//login类
public class login implements Controller{
    private loginService loginTmp;

    public loginService getLoginTmp() {
        return loginTmp;
    }
    public void setLoginTmp(loginService loginTmp) {
        this.loginTmp = loginTmp;
    }

    public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse res) {//请求到来时将调用此方法
        UserUrl tmp = this.loginTmp.getOneUserUrl("urlMapper.getURL", new Integer(1));//调用service层的方法
        System.out.println("tmp:" + tmp);
        ModelAndView mv = new ModelAndView();
        mv.setViewName("index");
        mv.addObject("accept",tmp.getAccept());
        return mv;
    }
}

2,服务层service
服务层主要实现了loginService类,该类主要是调用持久层dao进行业务逻辑的处理。在本例中仅仅就是接受控制层的参数,然后调用dao层的方法。主要代码如下:

/**
     * 
     * @param str
     * @param ob
     * @return 用户URL信息
     */
    public UserUrl getOneUserUrl(String str, Object ob) {//接收controller传过来的数据
        System.out.println("str:" + str);
        System.out.println("ob:" + ob);
        return (UserUrl) this.daoimpTmp.findOne(str, ob);//调用dao层的方法
    }

3,持久层dao
持久层主要的功能就是根据service传来的参数查找数据库信息。本例使用了Mybatis来处理从数据库到对象的映射问题。具体如何整合Mybatis在之后的博文中将有介绍。

public Object findOne(String str, Object ob) {
        UserUrl user = (UserUrl)this.sqlSessionTemplate.selectOne(str, ob);//sqlSessionTemplate为mybatis专门为与spring整合开发出来的
        System.out.println(user.toString());
        return user;
    }

配置文件

配置文件主要包括数据库以及spring的文件申明。目录结构如下:
这里写图片描述
db.properties文件主要是数据库连接的信息。conf.xml和url.mxl为Mybatis的配置文件。spring文件中的三个文件就是spring和springMVC以及spring中整合Mybatis的配置文件。在这里将着重讲解spring的配置文件。

spring在服务器中的启动过程

在tomcat的启动过程中,会先加载目录下的web.xml文件。因此需要在web.xml文件中加入相应的信息启动spring容器。spring已写好了相关的类来帮助我们启动spring容器。

<context-param> <!-- 指明spring的配置文件 -->
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring/ApplicationContext.xml,classpath:spring/spring-mybatis.xml</param-value>
  </context-param>

  <!-- 通过这个listener启动spring的配置文件 -->
  <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <!-- springMVC启动器 -->
  <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/spring-springMVC.xml</param-value>
          </init-param>
      <load-on-startup>1</load-on-startup><!-- 随服务器一起启动 -->
  </servlet>
  <servlet-mapping>
      <servlet-name>springMVC</servlet-name>
      <url-pattern>/</url-pattern>
  </servlet-mapping>

服务器启动了spring容器后,spring就根据配置文件初始化其中的bean。这里就包括之前讲到的controller、service、dao不同层级的对象。初始化bean的主要代码写在了spring-psringMVC.xml中。

<!-- 通过xml配置controller -->
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
      <property name="mappings">
        <props>
          <prop key="/login">login</prop>
        </props>   
      </property>
    </bean> 
    <bean name="login" class="com.zkw.controller.login">
      <property name="loginTmp" ref="loginService"/>
    </bean>

    <!-- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> 
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> 
    <bean name="/login" class="com.zkw.controller.login">
      <property name="loginTmp" ref="loginService"/>
    </bean> -->

    <!-- 配置service -->
    <bean name="loginService" class="com.zkw.service.loginService">
      <property name="daoimpTmp" ref="daoimp"/>
    </bean>

    <!-- 配置dao -->
    <bean name="daoimp" class="com.zkw.dao.daoimp">
      <property name="sqlSessionTemplate" ref="sqlSessionTemplate" />
    </bean>

同时在web.xml中指定了springMVC的前台处理器DispatcherServlet。当有页面请求到来时,DispatcherServlet会查找相应的controller,当找到匹配的控制器就将请求交给它处理。然后控制器按照上述已讲的流程执行相应的逻辑处理。

总结

本文只是记录一下在web中整合spring和springMVC,而没有介绍spring中整合mybatis。这一部分会在其他的博客中陆续写出。
最后,完整的maven工程点击这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值