码迷,mamicode.com
首页 > 其他好文 > 详细

SSM框架环境配置

时间:2021-03-15 11:12:16      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:工具   时间间隔   mysqld   zone   serial   记录   密码   install   fast   

一、前置准备工作

(我的环境):附上百度云连接(密码为 k5lmSSM项目所需

  • IDE: IDEA 2020.1.3 (Ultimate Edition)
  • 项目管理工具: MAVEN 3.6.3
  • JAVA环境: JDK 1.8.0_271
  • Web服务器: Tomcat 9.0.41
  • 数据库: MySQL 8.0.22
  • 数据库管理工具: Navicat 12.1.16

1.1. jdk环境安装

下载地址:jdk8,环境变量的配置去网上搜一下,如windows环境中JDK环境变量配置
技术图片

1.2. MySQL安装

下载地址:MySQL,安装教程见MySQL下载与安装
技术图片

  1. 将 MySQL下的 bin 文件夹加入环境变量。
    技术图片

  2. 在 MySQL文件夹下 添加 data 文件夹和 mysql.ini配置文件。
    技术图片
    技术图片

  3. 打开cmd(或者powershell),不需要进入安装目录(∵之前配置过环境变量),输入下面命令,ps回车后并没有反应。

    mysqld --initialize-insecure --user=mysql
    
  4. 安装及启动

    mysqld install
    net start mysql
    
  5. 服务启动成功之后,需要登录的时候输入命令(第一次登录没有密码,直接按回车过)进入后 exit 退出。

    mysql -u root -p
    
  6. 修改密码(cd 至 bin 目录下),执行如下命令回车,enter password也回车,密码一般设置为root,方便记忆。之后 exit 退出。

    mysqladmin -u root -p password
    
  7. Navicat图形化界面连接mysql,新建连接
    技术图片

  8. 填写连接ip和密码,并测试连接
    技术图片

1.3. Tomcat安装

下载地址:Tomcat,下载完后直接解压到 D:\Program Files\apache-tomcat-9.0.41 下。

  • 这里我原先放在C:\Program Files\apache-tomcat-9.0.41下,但是在 IDEA 运行时会产生没有权限生成写入日志的错误,需要在去赋给权限,故这里推荐放在 D 盘。
    技术图片

1.4. Maven安装

下载地址:Maven,下载完成后解压到你想放的文件夹,接下来配置环境变量。

  1. 配置环境变量:MAVEN_HOME=“maven安装目录”; 配置 bin 目录。
    技术图片
    技术图片

  2. 配置 Maven

    • 配置本地仓库位置
      技术图片
    • 配置aliyun公共仓库,在mirrors标签下做如下配置
      技术图片
    <mirror>
       <id>alimaven</id>
       <name>aliyun maven</name>
       <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
       <mirrorOf>central</mirrorOf>        
     </mirror>
     <mirror>
         <id>nexus-osc</id>
           <mirrorOf>central</mirrorOf>
         <name>Nexus osc</name>
         <url>http://maven.oschina.net/content/groups/public/</url>
      </mirror>
      <mirror>
         <id>nexus-osc-thirdparty</id>
          <mirrorOf>thirdparty</mirrorOf>
          <name>Nexus osc thirdparty</name>
          <url>http://maven.oschina.net/content/repositories/thirdparty/</url>
      </mirror>
    
  3. 验证是否安装成功 mvn -v
    技术图片

1.5. IDEA安装

下载地址:Idea,直接安装就好,推荐最终版!

二、SSM项目搭建

多图介绍!

2.1. 创建项目

  1. 新建项目:①选择 Maven -> ②选择 JAVA 环境 -> ③选择 webapp.(记得勾选 Create from archtype
    技术图片

  2. 进入到项目名字配置和 GAV 名字配置界面:

    • Name:根据自己的需要填写项目名称
    • Location:同样是根据需要选择项目存放的位置
    • Artifact Coordinates:点击小三角即可出现 GAV 的配置,一般只需要配置 GroupId 和 ArtifactId
    • 注意:GroupId一般是公司域名的反写,就和 java 的 package 类似。ArtifactId 需要和设置的项目名称一样,否则会报错
      技术图片
  3. 设置Maven home directory,一般我们不选择idea自带的,因为太容易出错了。最重要的就是User settings file和Local repository这两项,需要改变记得勾上 Override。

    第一个是用户配置文件,在 settings.xml 文件里我们设置了仓库的路径,也设置了阿里云等国内的镜像仓库。我们不需要把maven安装目录里 conf 文件夹的 settings.xml 文件导入,maven会自己寻找这个 settings 配置文件(PS 如果不行的话还是手动导入吧)
    技术图片

  4. 成功创建后的项目列表,接下来完善项目。
    技术图片
    如果左下角出现以下问题那就重启一下 IDEA 吧!
    技术图片

  5. 新建 java 目录和 resources 目录
    技术图片
    我是分割线---
    技术图片

  6. 此时创建完毕目录如下,接下来配置 Tomcat
    技术图片

2.2. 配置Tomcat

  1. 添加 Tomcat
    技术图片
    我是分割线--- 之后其他配置不用动;
    技术图片
  2. Tomcat Deployment 配置完成 ok 就完事了
    技术图片
    我是分割线---
    技术图片
  3. 运行tomcat 右上角面板选择debug模式运行(也可以普通模式)
    技术图片
    我是分割线--- ps:8080端口后是在第1步时配置的
    技术图片

2.3. 配置spring容器等相关配置文件

1. poom.xml

在poom.xml(位置:项目的根目录下)中引入必要的poom依赖(其中包括了spring、springmvc、jdbc、mysql、druid连接池、mybatis、lombok插件、juni他、其他工具包 )

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.test</groupId>
    <artifactId>test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <properties>
        <org.springframework.version>4.3.7.RELEASE</org.springframework.version>
        <mybatis.version>3.5.0</mybatis.version>
    </properties>

    <dependencies>
        <!-- Spring最新的包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <!--Spring jdbc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${org.springframework.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.7.4</version>
        </dependency>

        <!-- mysql 8.0连接-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.17</version>
        </dependency>
 
        <!--数据库连接池druid mysql8-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.20</version>
        </dependency>

        <!-- mybatis依赖 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.2</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.1</version>
        </dependency>
        <!-- 事务的配置标签 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>

        <!-- json -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.5.0</version>
        </dependency>

        <!-- lombok插件通过@data注解 实现省略写getset方法 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.0</version>
        </dependency>

        <!-- json 包 fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.39</version>
        </dependency>

        <!--单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <!-- log日志  -->
        <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.14</version>
        </dependency>
        <dependency>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
          <version>1.2</version>
        </dependency>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.6.1</version>
        </dependency>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.6.1</version>
        </dependency>

        <!--文件上传下载 commons-->
        <!--<dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.2</version>
        </dependency>-->

    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <!--编译代码插件-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <!-- 设置JDK版本 -->
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <fork>false</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

2. 完事刷新。

技术图片

3. web.xml

(位置:webapp下的WEB-INF中)

  • tomcat启动时,会加载此文件,从而扫描加载其他的配置文件
  • 其中包括了编码过滤、监听器、springmvc配置、spring容器中其他配置包括mybatis等、log4j配置、项目访问默认欢迎页,如需添加自定义过滤器,也许在此配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

    <!-- 编码过滤器 -->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <async-supported>true</async-supported>
        <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>

    <!-- Spring监听器 监听加载相关配置文件-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!--防止Spring内存溢出监听器-->
    <listener>
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
    </listener>

    <!--spring的其他配置文件(包括mybatis配置文件) -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath*:spring-applicationContext.xml
        </param-value>
    </context-param>

    <!--log4j日志-->
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>
            classpath:log4j.xml
        </param-value>
    </context-param>

    <!--Spring MVC servlet-->
    <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-mvc.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>

    <!-- 访问根路径时的默认访问页面,从上到下匹配 -->
    <welcome-file-list>
        <welcome-file>/index.jsp</welcome-file>
        <welcome-file>/index.html</welcome-file>
        <welcome-file>/reg.html</welcome-file>
    </welcome-file-list>
</web-app>

4. 新建其他配置文件

(位置:resoures下) applicationContext.xml、springmvc.xml、mybatis.xml、jdbc.properties、日志配置(log4j.properties和log4j.xml二选一,我用的log4j.xml)
技术图片

4.1 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"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:task="http://www.springframework.org/schema/task"
       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/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/task
       http://www.springframework.org/schema/task/spring-task-3.0.xsd">

    <!--开启springMVC注解模式-->
    <mvc:annotation-driven />

    <aop:aspectj-autoproxy proxy-target-class="true"/>

    <!-- 自动扫描,完成bean创建和自动依赖注入-->
    <context:component-scan base-package="com.test" />

    <!--避免IE执行AJAX时,返回JSON出现下载文件 -->
    <bean id="mappingJacksonHttpMessageConverter"
          class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
            </list>
        </property>
    </bean>

    <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
                <ref bean="mappingJacksonHttpMessageConverter" />  <!-- JSON转换器 -->
            </list>
        </property>
    </bean>

    <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 查找视图页面的前缀和后缀 -->
        <property name="prefix" value="/" />
        <property name="suffix" value=".html" />
    </bean>

    <!--<!–对上传文件的支持,springMVC其实是用common-upload来实现 –>
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!–设置上传文件的最大值,这里是字节–>
        <property name="maxUploadSize" value="102400000"></property> <!– 100M –>
        <property name="defaultEncoding" value="utf-8"></property>
    </bean>-->

    <!-- 总错误处理-->
    <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <!--<property name="defaultErrorView">
            <value>/base/error</value>
        </property>-->
        <property name="defaultStatusCode">
            <value>500</value>
        </property>
        <property name="warnLogCategory">
            <value>org.springframework.web.servlet.handler.SimpleMappingExceptionResolver</value>
        </property>
    </bean>

    <!--静态资源配置-->
    <mvc:default-servlet-handler/>

    <!--定时器配置-->
    <task:executor id="executor" pool-size="5" />
    <task:scheduler id="scheduler" pool-size="10" />
    <task:annotation-driven executor="executor" scheduler="scheduler" />

</beans>

4.2 spring-applicationContext.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
    <!--mybatis配置-->
    <import resource="classpath*:spring-mybatis.xml"/>
</beans>

4.3 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:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">

    <!-- 自动扫描,Bean注入 -->
    <context:component-scan base-package="com.test"/>

    <!-- 读取配置文件信息 -->
    <context:property-placeholder ignore-unresolvable="true" location="classpath:jdbc.properties"/>

    <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <!-- 数据库基本配置 -->
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />

        <!-- 初始化连接数量 -->
        <property name="initialSize" value="${jdbc.initialSize}"/>
        <!-- 最大并发连接数量 -->
        <property name="maxActive" value="${jdbc.maxActive}"/>
        <!-- 最小空闲连接数 -->
        <property name="minIdle" value="${jdbc.minIdle}"/>
        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="${jdbc.maxWait}" />
        <!-- 超过时间限制是否回收 -->
        <property name="removeAbandoned" value="${jdbc.removeAbandoned}" />
        <!-- 超过时间限制多长 -->
        <property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}" />
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" />
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" />
        <!-- 用来检测连接是否有效的sql,要求是一个查询语句-->
        <property name="validationQuery" value="${jdbc.validationQuery}" />
        <!-- 申请连接的时候检测 -->
        <property name="testWhileIdle" value="${jdbc.testWhileIdle}" />
        <!-- 申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能 -->
        <property name="testOnBorrow" value="${jdbc.testOnBorrow}" />
        <!-- 归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能  -->
        <property name="testOnReturn" value="${jdbc.testOnReturn}" />
        <property name="logAbandoned" value="true" />
        <!-- 配置监控统计拦截的filters,wall用于防止sql注入,stat用于统计分析 -->
        <property name="filters" value="stat" />
    </bean>

    <!-- MyBatis SqlSessionFactoryBean 配置 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!-- 自动扫描Mapping.xml文件 -->
        <property name="mapperLocations" value="classpath:com/test/mapper/xml/*.xml"/>
        <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <!-- 扫描model包 xml中parameterType就可以使用类名,不用全路径 -->
        <property name="typeAliasesPackage" value="com.test.model"/>
    </bean>

    <!-- 加载 mapper.xml对应的接口 配置文件 -->
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 给出需要扫描mapper接口包 -->
        <property name="basePackage" value="com.test.mapper"/>
        <!-- 注入sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    </bean>

    <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager"/>

</beans>

4.4 mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--
 |   plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
 |   properties?, settings?,
 |   typeAliases?, typeHandlers?,
 |   objectFactory?,objectWrapperFactory?,
 |   plugins?,
 |   environments?, databaseIdProvider?, mappers?
 |-->
<configuration>
    <!--
     | 全局配置设置
     |
     | 可配置选项                   默认值,     描述
     |
     | aggressiveLazyLoading       true,     当设置为‘true’的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。
     | multipleResultSetsEnabled   true,     允许和不允许单条语句返回多个数据集(取决于驱动需求)
     | useColumnLabel              true,     使用列标签代替列名称。不同的驱动器有不同的作法。参考一下驱动器文档,或者用这两个不同的选项进行测试一下。
     | useGeneratedKeys            false,    允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。
     | autoMappingBehavior         PARTIAL,  指定MyBatis 是否并且如何来自动映射数据表字段与对象的属性。PARTIAL将只自动映射简单的,没有嵌套的结果。FULL 将自动映射所有复杂的结果。
     | defaultExecutorType         SIMPLE,   配置和设定执行器,SIMPLE 执行器执行其它语句。REUSE 执行器可能重复使用prepared statements 语句,BATCH执行器可以重复执行语句和批量更新。
     | defaultStatementTimeout     null,     设置一个时限,以决定让驱动器等待数据库回应的多长时间为超时
     | -->
    <settings>
        <!-- 这个配置使全局的映射器启用或禁用缓存 -->
        <setting name="cacheEnabled" value="true"/>
        <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载 -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="multipleResultSetsEnabled" value="true"/>
        <setting name="useColumnLabel" value="true"/>
        <setting name="defaultExecutorType" value="REUSE"/>
        <setting name="defaultStatementTimeout" value="25000"/>
        <!-- 让控制台打印sql语句,注释掉则没有 -->
        <setting name="logImpl" value="STDOUT_LOGGING" />
        <setting name="callSettersOnNulls" value="true" />
    </settings>
</configuration>

4.5 jdbc.properties

技术图片

#mysql数据库配置
jdbc.driver=com.mysql.cj.jdbc.Driver

jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=root

##Druid配置
#初始化大小
jdbc.initialSize=3
#连接池最大使用连接数量
jdbc.maxActive=1000
#连接池最小空闲
jdbc.minIdle=0
#最大建立连接等待时间
jdbc.maxWait=6000
#是否自动回收超时连接
jdbc.removeAbandoned=true
#超时时间(以秒数为单位)
jdbc.removeAbandonedTimeout=1800
#失效检查线程运行时间间隔,如果小于等于0,不会启动检查线程 (毫秒)
jdbc.timeBetweenEvictionRunsMillis=60000
#大于0 ,进行连接空闲时间判断,或为0,对空闲的连接不进行验证;默认30分钟 (毫秒)
jdbc.minEvictableIdleTimeMillis=25200000
#验证连接是否有效的SQL文
jdbc.validationQuery=select getdate()
#空闲时是否进行验证,检查对象是否有效,默认为false
jdbc.testWhileIdle=false
#取得对象时是否进行验证,检查对象是否有效,默认为false
jdbc.testOnBorrow=false
#返回对象时是否进行验证,检查对象是否有效,默认为false
jdbc.testOnReturn=false

4.6 log4j.xml

<?xml version="1.0" encoding="GB2312" ?>
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">

<log4j:configuration debug="true">

    <!--ConsoleAppender:输出到控制台-->
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <!--<param name="encoding" value="UTF-8"/>-->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %p - %m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <!-- 设置日志输出的最小级别 -->
            <param name="levelMin" value="DEBUG" />
            <!-- 设置日志输出的最大级别 -->
            <param name="levelMax" value="FATAL" />
            <!-- 设置日志输出的xxx,默认是false -->
            <param name="AcceptOnMatch" value="true" />
        </filter>
    </appender>

    <!--输出到日志文件-->
    <appender name="PROJECT" class="org.apache.log4j.DailyRollingFileAppender">
        <!-- 设置日志信息输出文件全路径名 -->
        <param name="file" value="${catalina.home}/logs/ceshi/info.log"/>
        <!--日志文件编码-->
        <param name="encoding" value="UTF-8"/>
        <!--此日志文件级别-->
        <param name="threshold" value="info"/>
        <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
        <param name="Append" value="true" />
        <!-- 设置保存备份回滚日志的最大个数 -->
        <param name="MaxBackupIndex" value="10" />
        <!-- 设置当日志文件达到此阈值的时候自动回滚,单位可以是KB,MB,GB,默认单位是KB -->
        <param name="MaxFileSize" value="50MB" />
        <!-- 设置日志输出的样式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%X{requestURIWithQueryString}] %-5p %c{2} - %m%n"/>
        </layout>
    </appender>

    <appender name="PROJECT-ERROR" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="${catalina.home}/logs/ceshi/error.log"/>
        <param name="append" value="true"/>
        <param name="encoding" value="UTF-8"/>
        <param name="threshold" value="error"/>
        <param name="MaxBackupIndex" value="10" />
        <param name="MaxFileSize" value="50MB" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%X{requestURIWithQueryString}] %-5p %c{2} - %m%n"/>
        </layout>
    </appender>

    <!--开发测试使用debug级别-->
    <appender name="PROJECT-DEBUG" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="${catalina.home}/logs/ceshi/debug.log"/>
        <param name="append" value="false"/>
        <param name="encoding" value="UTF-8"/>
        <param name="threshold" value="debug"/>
        <param name="MaxBackupIndex" value="10" />
        <param name="MaxFileSize" value="50MB" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%X{requestURIWithQueryString}] %-5p %c{2} - %m%n"/>
        </layout>
    </appender>

    <!--总的日志级别-->
    <root>
        <level value="DEBUG"/>
        <appender-ref ref="PROJECT"/>
        <appender-ref ref="PROJECT-DEBUG"/>
        <appender-ref ref="PROJECT-ERROR"/>
        <appender-ref ref="STDOUT"/>
    </root>
</log4j:configuration>

2.4. 编写测试代码

经过以上的步骤,SSM框架环境算是配好了,接下来我们用一个实例演示一下。
首先建立如图所示的文件结构
技术图片

1. TestController.java

接口逻辑层controller.

package com.test.controller;

import com.alibaba.fastjson.JSONObject;
import com.test.model.TpmTestLog;
import com.test.service.TpmTestLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class TestController {

    @Autowired
    private TpmTestLogService tpmTestLogService;

    @GetMapping("/test")
    public JSONObject test(){

        JSONObject jsonObject = new JSONObject();

        TpmTestLog tpmTestLog = new TpmTestLog();
        tpmTestLog.setSyscreatedate("asfasgags");
        tpmTestLog.setTestmainUuid("fdasgassfsarew");
        tpmTestLog.setOperation("新增");
        tpmTestLogService.ceshi(tpmTestLog);

        jsonObject.put("title", "测试成功" + tpmTestLog.getLogUuid());
        return jsonObject;
    }

}

2. TpmTestLogMapper.java

数据库交互层dao接口.

package com.test.mapper;

import com.test.model.TpmTestLog;

/**
 * @TpmTestLogMapper
 * @Mapper
 * @version : Ver 1.0
 */
public interface TpmTestLogMapper {

    Long insert(TpmTestLog tpmTestLog);

}

3. TpmTestLogMapper.xml

数据库交互对应的xml.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.mapper.TpmTestLogMapper">

    <resultMap type="com.test.model.TpmTestLog" id="mTpmTestLog" autoMapping="true">
    </resultMap>

    <sql id="mTpmTestLogSql">
        LOG_UUID AS logUuid,
        TESTMAIN_UUID AS testmainUuid,
        OPERATION AS operation,
        SYSCREATEDATE AS syscreatedate
    </sql>

    <insert id="insert" parameterType="TpmTestLog" useGeneratedKeys="true" keyProperty="logUuid">
      INSERT INTO TPM_TEST_LOG (LOG_UUID,
                                          TESTMAIN_UUID,
                                          OPERATION,
                                          SYSCREATEDATE)
              VALUES   (#{logUuid},
                          #{testmainUuid},
                          #{operation},
                          #{syscreatedate})
    </insert>
</mapper>

4. TpmTestLog.java

实体模型.

package com.test.model;

import lombok.Data;

import java.io.Serializable;

/**
 * @TpmTestLog
 * @(TPM_TEST_LOG)
 * @version : Ver 1.0
 */
@Data
public class TpmTestLog implements Serializable {


    /**
     * @备注: 主键
     * @字段:LOG_UUID bigint
     */
    private Long logUuid;


    /**
     * @备注:
     * @字段:TESTMAIN_UUID CHAR(32)
     */
    private String testmainUuid;


    /**
     * @备注:
     * @字段:OPERATION VARCHAR(20)
     */
    private String operation;

    /**
     * @备注:
     * @字段:SYSCREATEDATE VARCHAR(25)
     */
    private String syscreatedate;

    public Long getLogUuid() {
        return logUuid;
    }

    public void setLogUuid(Long logUuid) {
        this.logUuid = logUuid;
    }

    public String getTestmainUuid() {
        return testmainUuid;
    }

    public void setTestmainUuid(String testmainUuid) {
        this.testmainUuid = testmainUuid;
    }

    public String getOperation() {
        return operation;
    }

    public void setOperation(String operation) {
        this.operation = operation;
    }

    public String getSyscreatedate() {
        return syscreatedate;
    }

    public void setSyscreatedate(String syscreatedate) {
        this.syscreatedate = syscreatedate;
    }


}

5. TpmTestLogService.java

业务层接口类sercice.

package com.test.service;

import com.test.model.TpmTestLog;

/**
 * @TpmTestLogService
 * @Service
 * @version : Ver 1.0
 */
public interface TpmTestLogService{

    Long ceshi(TpmTestLog tpmTestLog);
}

6. TpmTestLogServiceImpl.java

业务层的实现类impl.

package com.test.service.impl;

import com.test.mapper.TpmTestLogMapper;
import com.test.model.TpmTestLog;
import com.test.service.TpmTestLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * @TpmTestLogServiceImpl
 * @ServiceImpl
 * @version : Ver 1.0
 */
@Service
@Transactional
public class TpmTestLogServiceImpl implements TpmTestLogService {

    @Autowired
    private TpmTestLogMapper tpmTestLogMapper;

    @Override
    public Long ceshi(TpmTestLog tpmTestLog) {
        return tpmTestLogMapper.insert(tpmTestLog);
    }
}

7. 数据库表建立

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
--  Table structure for `TPM_TEST_LOG`
-- ----------------------------
DROP TABLE IF EXISTS `TPM_TEST_LOG`;
CREATE TABLE `TPM_TEST_LOG` (
  `LOG_UUID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘主键‘,
  `TESTMAIN_UUID` varchar(32) COLLATE utf8_bin DEFAULT NULL,
  `OPERATION` varchar(20) COLLATE utf8_bin DEFAULT NULL,
  `SYSCREATEDATE` varchar(25) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`LOG_UUID`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

SET FOREIGN_KEY_CHECKS = 1;

技术图片

8. 测试接口

技术图片

9. 附上可能的XML乱码问题解决

技术图片

2.5. 测试前端页面和接口交互测试

  1. 改动 index.jsp
<html>
<body>
<h2>Hello World!</h2>

<script>
    window.onload = function () {
        //步骤一:创建异步对象
        let ajax = new XMLHttpRequest();
        //步骤二:设置请求的url参数,参数一是请求的类型,参数二是请求的url,可以带参数,动态的传递参数starName到服务端
        ajax.open(‘get‘, ‘/final01_war_exploded/api/test‘);
        //步骤三:发送请求
        ajax.send();
        //步骤四:注册事件 onreadystatechange 状态改变就会调用
        ajax.onreadystatechange = function () {
            if (ajax.readyState == 4 && ajax.status == 200) {
                //步骤五 如果能够进到这个判断 说明 数据 完美的回来了,并且请求的页面是存在的
                console.log(ajax.responseText);//输入相应的内容
                console.log(JSON.parse(ajax.responseText).title);
                console.log(document.getElementsByTagName("h2")[0])
                document.getElementsByTagName("h2")[0].innerText = JSON.parse(ajax.responseText).title;
            }
        }
    }
</script>
</body>
</html>
  1. 运行测试
    技术图片

三、参考

SSM框架环境配置

标签:工具   时间间隔   mysqld   zone   serial   记录   密码   install   fast   

原文地址:https://www.cnblogs.com/seigann/p/14528551.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!