热门标签 | 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,这是因为我后边儿手动改了名字,可以略过。

 


推荐阅读
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • 本文介绍了ASP.NET Core MVC的入门及基础使用教程,根据微软的文档学习,建议阅读英文文档以便更好理解,微软的工具化使用方便且开发速度快。通过vs2017新建项目,可以创建一个基础的ASP.NET网站,也可以实现动态网站开发。ASP.NET MVC框架及其工具简化了开发过程,包括建立业务的数据模型和控制器等步骤。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • SpringMVC工作流程概述
    SpringMVC工作流程概述 ... [详细]
  • 一、Struts2是一个基于MVC设计模式的Web应用框架在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2优点1、实现 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
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社区 版权所有