ssm基础

ssm基础

简介:

这是一个简单的ssm框架,一步步的带你搭建并且理解ssm框架,最后还有一个总结
这是一个maven项目,不会的请看maven基础知识

pom文件

spring相关

首先引入spring的核心jar包

1
2
3
4
5
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>

接着引入springmvc需要的jar包

1
2
3
4
5
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>

这是项目里边的jar包关系如下图

jar包关系图

涉及的相关jar包

spring-core spring核心包,spring一切功能的基础
spring-beans spring容器包,容器相关功能就在这个包中
spring-context spring上下文,Application什么之类的
spring-jdbc spring对数据库连接的支持,图中没有,见下面介绍
spring-tx spring对事务回滚的支持,图中没有,见下面介绍
spring-web spring对web相关技术的支持
spring-aop spring对切面的支持
spring-jcl spring日志框架, 这是从spring5.0开始才有的一个jar包,内部日志实现是logback,日志门面是slf4j,之前spring框架日志的
实现是既有log4j又有commons-logging的,本身包含在spring-core包中
spring-expression Spring表达式语言,好吧,我承认我是第一次知道还有这玩意,不知道具体功能

相关jar包关系梳理(图上能够看见的就省略了)

spring-jdbcspring-txspring-context-support
spring-context-support中已经包含的jar包不需要再maven中再次导入了

mybatis相关

mybatis的jar包

1
2
3
4
5
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>

mybatis和spring连接的jar包

1
2
3
4
5
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>

上面两个jar包版本对应关系的问题

直接去maven仓库中搜索mybatis-spring-boot-starter,选择任意一个版本,看其中对这两个jar包之间依赖的关系
例如mybatis-spring-boot-starter2.1.1版本依赖mybatis3.5.3版本和mybatis-spring2.0.3版本

数据库相关

数据库连接驱动(jdbc是java database connection的缩写)

此处已mysql为例,同时需要注意不是越新越好,需要和mysql版本相对应
mysql8.0之后需要只需要与你使用的数据库版本对应就好
mysql8.0之前只需要两者前面的大版本号对应就可以了,实际上两者也是不对应的
mysql8.0之前和mysql8.0之后在配置配置文件时也有些许差别,请参照后面的配置文件

1
2
3
4
5
6
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
<scope>runtime</scope>
</dependency>

数据库连接池

这里说两点:
1.甄别一个误区,就是没有数据连接池,整个项目也是可以跑起来的
2.别找其他的数据连接池,面前最好用的就是druid,配置也是大同小异

1
2
3
4
5
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version></version>
</dependency>

其他的一些工具包

1
2


web.xml配置相关

web.xml中常用的三个配置

暂时不拓展,以后等我了解透彻了再说

  • 监听器(listener)
  • 过滤器(filter)
  • 服务(servlet)

    web.xml配置文件

    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
    <?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">

    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring/applicationContext-*.xml</param-value>
    </context-param>

    <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>

    <!--<filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>com.hwl.transaction.filter.LoginFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>LoginFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>-->

    <servlet>
    <servlet-name>DruidStatView</servlet-name>
    <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>DruidStatView</servlet-name>
    <url-pattern>/druid/*</url-pattern>
    </servlet-mapping>


    <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/spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
    </servlet>

    <servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <url-pattern>/</url-pattern>
    </servlet-mapping>

    <filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <!-- 备注,这边的名称必须和配置'springmvc'的servlet名称一样 -->
    <servlet-name>springMVC</servlet-name>
    </filter-mapping>

    <!-- 配置SESSION超时,单位是分钟 -->
    <session-config>
    <session-timeout>120</session-timeout>
    </session-config>


    </web-app>
坚持原创技术分享,您的支持将鼓励我继续创作!