• 【SSM】Myeclipse & idea 的版 ssm框架——整合过程



    在这里插入图片描述
    【mybatis+spring+springMVC的整合】
    【源码:https://download.csdn.net/download/m0_70083523/86949684?spm=1001.2014.3001.5503 】

    SSM框架初步整合

    1、pom.xml

    这里的jar包应该算是比较全的啦,有些版本我统一定为了4.0.2.RELEAS,不管哪个版本,maven私服都可以很快的下载好~~

      
      <properties>
        <spring.version>4.0.2.RELEASEspring.version>
      properties>
    
    • 1
    • 2
    • 3
    • 4
      
      <properties>
        <spring.version>4.0.2.RELEASEspring.version>
      properties>
      
      <dependencies>
        <dependency>
    
          <groupId>log4jgroupId>
          <artifactId>log4jartifactId>
          <version>1.2.17version>
        dependency>
    
        <dependency>
          <groupId>org.projectlombokgroupId>
          <artifactId>lombokartifactId>
          <version>1.16.12version>
        dependency>
        
        <dependency>
          <groupId>com.mchangegroupId>
          <artifactId>c3p0artifactId>
          <version>0.9.5.5version>
        dependency>
        
        <dependency>
          <groupId>com.fasterxml.jackson.coregroupId>
          <artifactId>jackson-coreartifactId>
          <version>2.4.3version>
        dependency>
        <dependency>
          <groupId>com.fasterxml.jackson.coregroupId>
          <artifactId>jackson-databindartifactId>
          <version>2.4.3version>
        dependency>
        
        <dependency>
          <groupId>org.mybatisgroupId>
          <artifactId>mybatisartifactId>
          <version>3.5.2version>
        dependency>
        
        <dependency>
          <groupId>mysqlgroupId>
          <artifactId>mysql-connector-javaartifactId>
          <version>5.1.44version>
        dependency>
        
        <dependency>
          <groupId>org.mybatisgroupId>
          <artifactId>mybatis-springartifactId>
          <version>2.0.6version>
        dependency>
        
        <dependency>
          <groupId>org.aspectjgroupId>
          <artifactId>aspectjweaverartifactId>
          <version>1.9.7version>
          <scope>runtimescope>
        dependency>
    
        
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-testartifactId>
          <version>${spring.version}version>
        dependency>
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-coreartifactId>
          <version>${spring.version}version>
        dependency>
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-oxmartifactId>
          <version>${spring.version}version>
        dependency>
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-txartifactId>
          <version>${spring.version}version>
        dependency>
        
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-jdbcartifactId>
          <version>${spring.version}version>
        dependency>
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-aopartifactId>
          <version>${spring.version}version>
        dependency>
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-contextartifactId>
          <version>${spring.version}version>
        dependency>
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-context-supportartifactId>
          <version>${spring.version}version>
        dependency>
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-expressionartifactId>
          <version>${spring.version}version>
        dependency>
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-ormartifactId>
          <version>${spring.version}version>
        dependency>
     
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-webartifactId>
          <version>${spring.version}version>
        dependency>
        <dependency>
          <groupId>org.springframeworkgroupId>
          <artifactId>spring-webmvcartifactId>
          <version>${spring.version}version>
        dependency>
     
        <dependency>
          <groupId>javax.servletgroupId>
          <artifactId>jstlartifactId>
          <version>1.2version>
        dependency>
        
        <dependency>
          <groupId>javax.servletgroupId>
          <artifactId>servlet-apiartifactId>
          <version>2.5version>
        dependency>
        
        <dependency>
          <groupId>javax.servlet.jspgroupId>
          <artifactId>jsp-apiartifactId>
          <version>2.2version>
        dependency>
      dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143

    2、配置文件~完整代码可以直接使用

    【初步整合三个配置文件:mybatis.xml、spring-mybatis.xml、spring-mvc.xml】三个文件比较清晰,以后的项目上可能会有整合

    mybatis.xml
    <?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>
        <settings>
        <!--打印日志: STDOUT_LOGGING为输出SQL语句到控制台,LOG4J参数为输出在日志文件-->
            <setting name="logImpl" value="STDOUT_LOGGING"/>
        </settings>
    
        <!--将实体类所在的整个包定义别名,在resultType使用的别名就是实体类的名字,不分大小写-->
     		<!--我不在这里使用因为mybatisX插件会帮我生成一些东西,别名没意义-->
    <!--    <typeAliases>-->
    <!--        <package name="com.hz.pojo" />-->
    <!--    </typeAliases>-->
    </configuration>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    spring-mybatis.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
           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.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    
        <!--读取数据库配置文件 jdbc.properties:连接数据库要用的-->
        <context:property-placeholder location="classpath:jdbc.properties"/>
    
        <!--创建数据源对象DataSource-->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driver}"/>
            <property name="jdbcUrl" value="${jdbc.url}"/>
            <property name="user" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
            <!--<property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>-->
        </bean>
    
        <!--创建数据源工厂-->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!--注入数据库连接池-->
            <property name="dataSource" ref="dataSource"/>
            <!--扫描 pojo 别名-->
            <property name="typeAliasesPackage" value="com.hz.pojo"/>
            <!--扫描mapper文件-->
            <property name="mapperLocations" value="classpath:mapper/*.xml"/>
            <!--读取mybatis主配置文件-->
            <property name="configLocation" value="classpath:mybatis.xml"/>
        </bean>
    
        <!--配置mybatis数据源  dao层-->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <!-- 注入sqlSessionFactory -->
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
            <!-- 给出需要扫描Dao接口包    注解 -->
            <property name="basePackage" value="com.hz.dao"/>
        </bean>
    
        <!--扫描service包-->
        <context:component-scan base-package="com.hz.service"/>
    </beans>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    spring-mvc.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/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
        <!--自动扫描的包名,只扫描@Controller -->
        <context:component-scan base-package="com.hz.controller" />
        <!--开启注解-->
        <mvc:annotation-driven/>
    
        <!--配置静态资源-->
    <!--    <mvc:default-servlet-handler/>-->
    
        <!-- 视图解析器 -->
    <!--    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >-->
    <!--        <property name="prefix" value="/WEB-INF/文件夹"/>-->
    <!--        <property name="suffix" value=".jsp"/>-->
    <!--    </bean>-->
    </beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    注释:
    1.配置静态资源:下面解释…………
    2.视图解析器:后期项目jsp页面和html页面会在WEB-INF里面,这是访问就要加视图解析器,否则全路径也是访问不到的。【可以了解一下多视图解析器】

    3、web.xml读取配置文件

    • 读取spring连接的两个框架的配置
    • 编码拦截器
    • Filter要放在读取配置的上面
    DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
      <display-name>Archetype Created Web Applicationdisplay-name>
    
      <filter>
        <filter-name>encodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
          <param-name>encodingparam-name>
          <param-value>UTF-8param-value>
        init-param>
      filter>
      <filter-mapping>
        <filter-name>encodingFilterfilter-name>
        <url-pattern>/*url-pattern>
      filter-mapping>
    
      
      <servlet>
        <servlet-name>springservlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class> 
        <init-param>
          <param-name>contextConfigLocationparam-name>
          <param-value>classpath:spring-*.xmlparam-value>
        init-param>
        <load-on-startup>1load-on-startup> 
      servlet>
      <servlet-mapping>
        <servlet-name>springservlet-name>
        <url-pattern>/url-pattern>
      servlet-mapping>
    web-app>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    注意:
    我们会在webapp(这个名字不一定)中创建文件夹放jsp页面或者jar包等,我们直接访问这些资源访问不到,原因:在web.xml中/会使所有访问路径都会经过DispatcherServlet,去找映射,静态文件没有映射,会404。

    解决:

    • spring-mvc.xml中使用配置静态资源。
    • 或者使用:< mvc:resources mapping=" " location=" " />
      
      <mvc:resources mapping="/**" location="/statics/" />
      
      <mvc:resources mapping="/*" location="/statics/" />
      
      <mvc:resources mapping="/**" location="/statics/,/views/" />
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

    I.全局初始化参数配置信息:

    1.位于标签内,其他标签外,属于上下文初始化参数配置信息。对于整个webapp内的所有servlet类都可见,所有servlet类都可获取该信息。
    2. 如果某些信息所有servlet类都需要使用,可以配置到该标签内。

    
            123
            123
    
    
    • 1
    • 2
    • 3
    • 4
    II.局部初始化参数配置信息:

    1.位于标签内,属于servlet初始化参数配置信息。只对于该servlet类可见,其他servlet类不能获取该信息。
    2. 如果某些信息只能让该servlet类单独使用,其他servlet类不能访问,可以配置到该标签内。

    
        1546
        19
    
    
    • 1
    • 2
    • 3
    • 4

    4、创建目录,添加文件

    ▶①在上面配置文件中读取了jdbc.properties文件要加入,若是有日志输出也需要日志文件
    jdbc.properties

       jdbc.driverClassName = com.mysql.jdbc.Driver
       jdbc.url =jdbc:mysql://127.0.0.1:3306/数据库名?userSSl=false&userServerPrepStmts=true
       jdbc.username = root
       jdbc.password = root
    
    • 1
    • 2
    • 3
    • 4

    日志文件:连接自取
    https://blog.csdn.net/m0_70083523/article/details/127498052?spm=1001.2014.3001.5502

    ▶②创建目录:

    【这个没啥说的,都到整合框架了不说都懂滴滴♕】

    在这里插入图片描述

    实体类:根据sql中的参数定义

    dao层接口

    public interface ProviderMapper {
        /**
         *
         * @param proName
         * @return
         */
        public List<Provider> providerList(
                @Param("proName") String proName
        );
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    mapper.xml 根据姓名的模糊查询

        <select id="providerList" resultType="Provider">
            select id,proCode,proName,proDesc,proContact,proPhone,proAddress,proFax,createdBy,creationDate,modifyBy,modifyDate
            from smbms_provider
            <where>
                <if test="proName != null">
                    and proName like concat('%',#{proName},'%')
                if>
            where>
        select>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    service层接口

    public interface ProviderService {
        /**
         *
         * @param proName
         * @return
         */
        public List<Provider> providerList(String proName);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    service层实现

    @Service
    public class ProviderServiceImpl implements ProviderService {
    
        @Autowired
        private ProviderMapper providerMapper;
    
        public List<Provider> providerList(String proName) 
        {
            return providerMapper.providerList(proName);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    controller

    @Controller
    @RequestMapping("/provider")
    public class ProviderController {
    
        @Autowired
        private ProviderService providerService;
    
        @RequestMapping(value = "/providerList",method = RequestMethod.GET)
        public String providerList(String proName){
           	//System.out.println("proName=="+proName);
            List<Provider> providers = (List<Provider>) providerService.providerList(proName);
            return "index";  //返回页面(这种形式是因为视图解析器的存在)
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    jsp页面:

    <%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <html>
    <head>
        <title>供应商列表title>
    head>
    <body>
    <table border=1>
        <thead>
        <th>供应商编码th>
        <th>供应商名称th>
        <th>供应商详细描述th>
        ……
        <th>操作th>
        thead>
        <tbody>
        <c:forEach var="pro" items="${providers}"> 
            <tr>
                <td>${pro.proCode }td>
                <td>${pro.proName }td>
                <td>${pro.proDesc }td>
                ……
                <td><a href="">修改a>/<a href="">删除a>td>
            tr>
        c:forEach>
        tbody>
    table>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    ▶③开启Tomcat进行测试
    ……

    5、关于jsp文件说明

    如果要使用JSTL和EL表达式:

    • 加属性:isELIgnored="false"
    • 导包:(第一步的jar包已经算是完整的)
      <dependency>
        <groupId>javax.servletgroupId>
        <artifactId>jstlartifactId>
        <version>1.2version>
      dependency>
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 加命令:
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      <%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      <html>
      <body>
      <h2>Hello 朱尔斯Jules!h2>
      body>
      html>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

    注意:

    1、前面的xml配置文件,我命名为spring-xxxx.xml,所以在web.xml中读取文件配置中注意路径: classpath:spring-*.xml使用了星号。
    2、在没有创建目录之前,xml配置中有些地方报红,是因为我们还有创建这个目录。
    3、如果有报错看不懂,配置上没问题,那就是java文件中写的有误……

  • 相关阅读:
    大数据(九):数据可视化(一)
    LIO-SAM 详读代码笔记--2.imuPreintegration
    初始Hadoop
    2024年阿里云服务器新用户购买一个月多少钱?
    项目一:使用 Spring + SpringMVC + Mybatis + lombok 实现网络五子棋
    “好声音“连唱10年,星空华文如何唱响港交所?
    安装WordPress(个人建站)
    FAST-LIO2代码解析(三)
    Java 对于文件的操作
    Redis 做签到统计
  • 原文地址:https://blog.csdn.net/m0_70083523/article/details/127792432