zoukankan      html  css  js  c++  java
  • SSM整合——从零开始创建SSM

    创建Maven项目

    导入常用依赖

     <dependencies>
    
            <!--        Junit-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <!--        数据库驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.22</version>
            </dependency>
    
            <!--        连接池-->
            <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
            <dependency>
                <groupId>com.mchange</groupId>
                <artifactId>c3p0</artifactId>
                <version>0.9.5.2</version>
            </dependency>
    
            <!--        mybatis-->
            <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.3</version>
            </dependency>
    
            <!--        mybatis-spring-->
            <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>2.0.5</version>
            </dependency>
    
            <!--    servlet-->
            <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>4.0.1</version>
            </dependency>
    
            <!--        jsp-->
            <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>javax.servlet.jsp-api</artifactId>
                <version>2.3.3</version>
            </dependency>
    
            <!--        jstl-->
            <!-- jstl -->
            <dependency>
                <groupId>javax.servlet.jsp.jstl</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
            <!-- jstl-api -->
            <dependency>
                <groupId>javax.servlet.jsp.jstl</groupId>
                <artifactId>jstl-api</artifactId>
                <version>1.2</version>
            </dependency>
            <!-- jstl-impl -->
            <dependency>
                <groupId>org.glassfish.web</groupId>
                <artifactId>jstl-impl</artifactId>
                <version>1.2</version>
            </dependency>
    
            <!--    spring-core-->
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>5.2.9.RELEASE</version>
            </dependency>
    
            <!--    webmvc-->
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.2.9.RELEASE</version>
            </dependency>
    
            <!--        spring-jdbc-->
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>5.2.9.RELEASE</version>
            </dependency>
    
            <!--    lombok-->
            <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.16</version>
            </dependency>
    
            <!--    gson-->
            <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.8.5</version>
            </dependency>
    
            <!--    aop依赖-->
            <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>1.9.6</version>
            </dependency>
    
            <!--        fileupload-->
            <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3.3</version>
            </dependency>
    
    
            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>2.3.23</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>4.3.13.RELEASE</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.14</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>3.14</version>
            </dependency>
    
        </dependencies>
    

    导入依赖之后,等maven下载完毕,在项目结构下的Artifacts创建lib文件夹,将maven中所有的包手动添加到lib下,不添加的话,后续整合到springMVC时会找不到对应包。

    根据自己的数据库,创建对应的实体类

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Admin {
        private Integer a_id;
        private String a_username;
        private String a_password;
        private String a_name;
        private String a_phone;
        private String a_power;
        private String a_describe;
    }
         ········
    

    整合MyBatis

    创建数据库配置文件

        jdbc.driver=com.mysql.cj.jdbc.Driver
        jdbc.url=jdbc:mysql://localhost:3306/dormitory?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
        jdbc.username=root
        jdbc.password=root
    

    创建mybatis-config.xml,有一些基础配置(如:驼峰命名、日志输出、别名),绑定mapper

    <?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>
            <!--        标准日志工厂-->
            <setting name="logImpl" value="STDOUT_LOGGING"/>
            <!--        <setting name="logImpl" value="LOG4J"/>-->
        </settings>
    
        <!--每个mapper都需要注册-->
        <mappers>
    <!--        每一个Dao接口都需要一个mapper对应-->
            <mapper resource="mapper/adminmapper.xml"/>
        </mappers>
    </configuration>
    

    创建spring-dao.xml,做一些连接池(c3p0)、DataSource、SqlSessionFactory、Dao接口自动注入的配置,并且绑定mybatis-config.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:c="http://www.springframework.org/schema/c"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd">
    
    <!--    引入数据库文件-->
        <context:property-placeholder location="classpath:db.properties"/>
    
    <!--    配置连接池-->
        <bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource">
            <property name="driverClass" value="${jdbc.driver}"/>
            <property name="jdbcUrl" value="${jdbc.url}"/>
            <property name="user" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
            
    <!--&lt;!&ndash;        最大连接池大小&ndash;&gt;-->
    <!--        <property name="maxPoolSize" value="30"/>-->
    <!--&lt;!&ndash;        最小连接池大小&ndash;&gt;-->
    <!--        <property name="minPoolSize" value="10"/>-->
    <!--&lt;!&ndash;        &ndash;&gt;-->
    <!--        <property name="autoCommitOnClose" value="false"/>-->
    <!--&lt;!&ndash;        最大连接时长&ndash;&gt;-->
    <!--        <property name="maxConnectionAge" value="10000"/>-->
    <!--&lt;!&ndash;        失败重试次数&ndash;&gt;-->
    <!--        <property name="acquireRetryAttempts" value="2"/>-->
        </bean>
    
    <!--    SqlSessionFactory-->
        <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactory">
            <property name="dataSource" ref="dataSource"/>
            <property name="configLocation" value="classpath:mybatis-config.xml"/>
        </bean>
    
    <!--&lt;!&ndash;    SqlSession&ndash;&gt;-->
    <!--    <bean class="org.mybatis.spring.SqlSessionTemplate" id="sqlSession">-->
    <!--        <constructor-arg index="0" ref="sqlSessionFactory"/>-->
    <!--    </bean>-->
    
    <!--    配置dao接口扫描包,自动注入到spring容器,不用手动写Bean注入-->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!--        注入sqlSessioFactory-->
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    <!--        要扫描包-->
            <property name="basePackage" value="com.lh.dao"/>
        </bean>
    </beans>
    

    整合Services层

    创建spring-services.xml文件,用于绑定services层所有类,并为业务逻辑增添事务管理器

    <?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:c="http://www.springframework.org/schema/c"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/aop
            https://www.springframework.org/schema/aop/spring-aop.xsd
            http://www.springframework.org/schema/tx
            https://www.springframework.org/schema/tx/spring-tx.xsd">
    
    
    <!--    扫描services-->
        <context:component-scan base-package="com.lh.services"/>
    
    <!--    注入services所有类-->
        <bean class="com.lh.services.impl.AdminServicesImpl" id="adminServices">
            <property name="adminMapper" ref="adminMapper"/>
        </bean>
    
    
    <!--    服务层应该有事务管理-->
        <bean  class="org.springframework.jdbc.datasource.DataSourceTransactionManager"  id="transactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
    
    <!--AOP织入事务管理器-->
        <tx:advice transaction-manager="transactionManager"  id="txTransactionManager">
            <tx:attributes>
                <tx:method name="*" propagation="REQUIRED"/>
            </tx:attributes>
        </tx:advice>
    
        <aop:config>
            <aop:pointcut id="pointcut" expression="execution(* com.lh.services.*.*(..))"/>
            <aop:advisor advice-ref="txTransactionManager" pointcut-ref="pointcut"/>
        </aop:config>
    
    
    
    </beans>
    

    为maven项目增加web支持

    整合springMVC

    创建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:c="http://www.springframework.org/schema/c"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc
            https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
        <!--    包扫描-->
        <context:component-scan base-package="com.lh.controller"/>
    
        <!--    注解驱动,解决响应乱码-->
        <mvc:annotation-driven/>
    
        <!--    静态资源过滤器-->
        <mvc:default-servlet-handler/>
    
    
        <!--    视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    
    </beans>
    

    在web.xml中,增加DispatcherServlet(将web项目交给spring管理,请求到达首先经过此servlet分发)、编码过滤器

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
    <!--    配置Dispatcherservlet-->
        <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:applicationContext.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>
    
    
    <!--    乱码过滤器-->
        <filter>
            <filter-name>encodingFilter</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>encodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        
    </web-app>
    

    创建applicationContext.xml,关联spring-dao.xml,spring-services.xml,spring-mvc.xml文件,成为一个完整的ssm项目

    <?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:c="http://www.springframework.org/schema/c"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd">
    
        <import resource="classpath:spring-dao.xml"/>
        <import resource="classpath:spring-services.xml"/>
        <import resource="classpath:spring-mvc.xml"/>
    
    
    
        <!--    GSON注入-->
        <bean id="gson" class="com.google.gson.Gson"/>
        
    <!--    文件上传下载-->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="defaultEncoding" value="utf-8"/>
            <property name="maxUploadSize" value="102400000"/>
            <property name="maxInMemorySize" value="40960"/>
        </bean>
    
    </beans>
    

    一个完整的SSM项目应该有controller层、services层、dao层、pojo(实体类)、utils(工具包)这样的结构

  • 相关阅读:
    DC中为什么要用Uniquify?
    hdu 1596 find the safest road
    hdu2112 HDU Today
    hdu 2066 一个人的旅行
    poj 3026 Borg Maze
    poj 1979 Red and Black
    poj 1321 棋盘问题
    hdu 1010 Tempter of the Bone
    hdu 4861 Couple doubi
    codeforces584B Kolya and Tanya
  • 原文地址:https://www.cnblogs.com/haheihei/p/13974342.html
Copyright © 2011-2022 走看看