热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Maven搭建SpringMvc+Spring+Mybatis详细记录

SSMSpringMv
SSM SpringMvc Mybatis 整合

总觉得,看比人写的总是那么好,每次搭建框架时都会找博客,找教程来跟着一步一步走,虽然很快搭建成功了,但是经常情况是我并不知道我干了什么,也不记得具体步骤,到底为什么要这么做,今天我详细记录了一下自己搭建的过程,并且尽量理解每一步干什么。

SSM框架当下比较流行,我也是用这个框架来作为记录,尝试详细地记录下每一个步骤,学习,不要怕开头难。

一、创建一个新的Maven项目

  1、 new -> Maven -> Maven Project 

选择webapp工程。

2、maven项目建好以后,工程目录如图。可以看到index.jsp文件报错了,那是因为我们工程还没有引入web项目相关包。我们需要项目默认的source folder只有/src/main/resources。我们需要手动建立另外三个source folder。右键工程名->new->source folder,输入文件名(src/main/java src/test/java src/test/resources)

3、建立好source folder后,我们需要将文件与项目发布目录关联起来。

右键工程名->build path ->source ,双击对每个文件夹下的output folder。src/main/java和src/main/resources添加到target/classes,另外两个添加到target/teas-class

添加完毕后如图:

4、将maven引用包关联到项目发布目录里,在不用maven管理项目时,项目导入的包需要放在WEB-INFO/lib下,所以,我们需要将maven引用包也要关联到这个目录下。

build Path -> deployment Assembly

5、在工程最下面,打开pom.xml文件,添加依赖。

保存pom文件

添加成功后项目没有报错,一个maven创建的javaweb项目基本完成。
src/main/java 下放项目工程源码文件
src/main/resources 下放项目的一些配置文件
src/test/* 这里是测试相关目录。
视图文件一般放在webapp目录下。


到目前为止是一个基本的web项目,需要用到框架,就打入相关包,设置好配置文件就ok。
下面我就开始搭建SpringMvc + Spring + Mybatis

 

二、配置SpringMvc

1、首先需要导入SpringMvc的一些系列包,用maven导入,在pom配置文件里添加如下依赖就行。

我用的springmvc版本是4.1.6。我所有需要依赖的包都是在:http://mvnrepository.com/
上搜索,找到版本,然后把依赖添加到pom文件里,然后让maven自动去下载jar包到本地maven
库,如果有下载失败,也可手动下载jar包,然后通过mvn命令手动添加jar包到本地maven仓库。

我并不知道项目会用哪些jar,我大概知道一些,先添加进来,出错了,根据错误再导入相关jar包。

以下是我在pom文件中添加的依赖:

<dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-contextartifactId>
        <version>4.1.6.RELEASEversion>
    dependency>
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-coreartifactId>
        <version>4.1.6.RELEASEversion>
    dependency>
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-beansartifactId>
        <version>4.1.6.RELEASEversion>
    dependency>
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-webartifactId>
        <version>4.1.6.RELEASEversion>
    dependency>
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-webmvcartifactId>
        <version>4.1.6.RELEASEversion>
    dependency>
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-aopartifactId>
        <version>4.1.6.RELEASEversion>
    dependency>
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-expressionartifactId>
        <version>4.1.6.RELEASEversion>
    dependency>
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-jdbcartifactId>
        <version>4.1.6.RELEASEversion>
    dependency>

2、所有包引入后,配置web.xml,使其具有springmvc特性,主要配置两处,一个是ContextLoaderListener,一个是DispatcherServlet.

web.xml

xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    
  
    <context-param>
            <param-name>contextConfigLocationparam-name>
            <param-value>
                classpath:spring-*.xml
            param-value>
    context-param>
  
  
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        listener-class>
    listener>
    
    
    <servlet>
        <servlet-name>Spring-Servletservlet-name>
        <servlet-class> org.springframework.web.servlet.DispatcherServletservlet-class>
        <init-param>
            <param-name>contextConfigLocationparam-name>
            <param-value>
                classpath:spring-*.xml   
            param-value>
        init-param>
        <load-on-startup>1load-on-startup>
    servlet>
    <servlet-mapping>
        <servlet-name>Spring-Servletservlet-name>
        <url-pattern>/url-pattern>  
    servlet-mapping>
web-app>

3、接下来添加springmvc的配置文件

在src/main/resources目录下新建spring-servlet.xml文件(满足spring-*.xml格式,可以被扫描到)。

spring-servlet.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:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        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" default-autowire="byName">

    
    <context:component-scan base-package="cquzrj.vipserver.controller" />

 
    
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
            
beans>

4、我们可以简单测试一下。看是否报错,看到报错,认真看错误信息,找到错误源头,先不百度,尝试自己解决。

在src/main/java下新建包,并建一个类。

package cquzrj.vipserver.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestVip {
    /**
     * 1. 使用RequestMapping注解来映射请求的URL
     * 2. 返回值会通过视图解析器解析为实际的物理视图, 对于InternalResourceViewResolver视图解析器,会做如下解析
     * 通过prefix+returnVal+suffix 这样的方式得到实际的物理视图,然后会转发操作
     * "/WEB-INF/views/success.jsp"
     * @return
     */
    
    @RequestMapping("/helloworld")
    public String hello(){
        System.out.println("hello world");
        return “index”; 
    }
}

  

若pom文件里添加的依赖全部成功,运行可以看到已经成功访问。报异常是因为我们还没有配置视图解析器。

  

5、配置视图解析器

在spring-servlet.xml中加入:

  
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    bean>

在这里,由于我配置的是JstlView,需要引入jstl包,在pom文件加入依赖:

<dependency>
        <groupId>jstlgroupId>
        <artifactId>jstlartifactId>
        <version>1.2version>
    dependency>

 

如果下载包失败,在java resource处会有红色感叹号,这就需要手动在下载并引入了,最后检查一下上面第一节的第4步,看maven包有没有引用到发布目录。
当然,也可以配置其他的视图解析器例如org.springframework.web.servlet.view.InternalResourceView

重新启动项目,访问helloworld,会发现页面成功跳转到了index页面。说明视图解析成功。

三、配置Mybatis

 

1、 Mybatis整合spring,其实就是需要spring的IOC容器来管理mybatis的SqlSessionFactory,而不需要mybatis自己去管理。

 

依然在src/main/resources下新建配置文件spring-mybatis.xml

 

spring-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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:aop="http://www.springframework.org/schema/aop"  
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-autowire="byType">

    

           
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" 
        init-method="init" destroy-method="close">   
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://10.10.102.6:3306/jeecgmybatis?useUnicode=true&charaterEncoding=utf-8" />
        
        <property name="username" value="root" />
        <property name="password" value="root" />
        
        <property name="initialSize" value="0">property>
        
        <property name="maxActive" value="20">property>
        
        <property name="maxIdle" value="15">property>
        
        <property name="minIdle" value="10">property>
        
        <property name="maxWait" value="60000">property>
    bean>

  
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:MyBatis-Config.xml"/>
        <property name="mapperLocations">
            <list>
                
                <value>classpath:cquzrj/vipserver/model/xml/*Mapper.xmlvalue>
             list>
        property>
        <property name="dataSource" ref="dataSource" />
    bean>

      
     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cquzrj.vipserver.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory">property>
    bean> 
    
    
    
beans>

 

2、加入mybatis相关包,pom文件添加:

    <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>druidartifactId>
        <version>1.0.13version>
    dependency>
     <dependency>
           <groupId>org.mybatisgroupId>
           <artifactId>mybatisartifactId>
           <version>3.2.7version>
     dependency>
     <dependency>
           <groupId>org.mybatisgroupId>
           <artifactId>mybatis-springartifactId>
           <version>1.3.0version>
     dependency>

同样,导入包失败,请手动下载后导入,在导入完成后,检查第一节第4步。

到目前为止,整个框架整合完毕,需要的就是测试了,我在本机测试通过,并在此记录一下,这里关于如何进行SpringMVC整合Mybatis进行开发,我这里先不写了,留作下次我整理清楚再详细绍介绍,本文是个人学习记录,其中难免有讲述不清和个人理解有误的地方,请谅解并欢迎指正,共同学习。还有,需要说明的一点是,前面工程的名字是ZRJCash,后面是ZRJCashVip,这是因为我后边儿手动改了名字,可以略过。

 


推荐阅读
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
author-avatar
651404449_724afc
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有