阿风啦的gravatar头像
阿风啦 2021-04-17 18:00:25
SSM环境搭建

Hello,大家好呀。我是阿风,一个学习Java还没离开象牙塔的学生。来自一个不出色的大学,我就不说那所大学了,读到文章的你只要是个本科,可以说就不比我差。所以,我并不出色,已经大三了,找工作的压力我感觉已经在我头顶,只是它还没真实的压到我的肩上。所以我开始努力学习,希望未来能够更好点儿,大家也可以参考我的学习顺序:

Java ——>Java Web ——>SSM框架 ——>Spring Boot——>Spring Cloud

目前Spring Cloud已经快被拿下了。我给自己沉淀一周的时间,写点小项目,总结一下自己学的东西。我是今年才开始努力的,因为我遇到了一位好老师,不是说我从他那里学到多少文化知识,他让我明白了一个道理,大学想出色,你就不能跟着老师学,因为老师的教学,就像工厂的生产机器,照着一个模子来的,你要想不一样,你就需要更多的雕琢。这个学习路径也是他告诉我的,之前我确实迷茫,我一个学后端的,都在网上买课学安卓了,因为我觉得做APP很酷,哈哈,其实有点跑偏。很少有老师说,你不要跟着我的节奏学,你要快速的把我教的学完,所以,恩师,不为过。

好了,闲话少说,希望对你有所启发,下面第一篇:

SSM环境搭建:

准备工作:JDK1.8 、IntelliJ IDEA、Maven、tomcat

SSM(Spring,SpringMVC,Mybatis)

1、Spring 是另一个主流的Java Web 开发框架,该框架是一个轻量级的应用框架,具有很高的凝聚力和吸引 力。Spring 框架因其强大的功能以及卓越的性能而受到众多开发人员的喜爱。Spring两大核心技术:控制 反转(Inversion of Control,Ioc)/依赖注入DI 和面向切面编程AOP

2、SpringMvc是非常出色的Web MVC框架,可以帮助我们构建像Spring那样灵活和低耦合的web应用程 序。实际就是对JSP/Servlet进行封装处理,由框架内的处理器配合各个环节的处理工具,以便控制web请求。

重要组件:①前端控制器(DispatcherServlet):由它接收Web请求,然后调用框架的其他组件完成处 理,最后返回响应结果。

②映射处理器 HandlerMapping:通过配置文件或者注解找到web请求路径对应的Handle。

③处理器 Handler:由开发人员编写,完成业务逻辑功能。

3、Mybatis:一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

那么如何整合呢,我将其分为两个部分:①整合Spring和MyBatis ②正常配置SpringMvc

导入Jar包

1、spring的jar包:11个

com.springsource.org.aopalliance-1.0.0.jar

com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

spring-aop-5.0.1.RELEASE.jar

spring-aspects-5.0.1.RELEASE.jar

spring-beans-5.0.1.RELEASE.jar

spring-context-5.0.1.RELEASE.jar

spring-core-5.0.1.RELEASE.jar

spring-expression-5.0.1.RELEASE.jar

spring-jcl-5.0.1.RELEASE.jar

spring-jdbc-5.0.1.RELEASE.jar

spring-tx-5.0.1.RELEASE.jar

2、MyBatis的jar包:

mybatis-3.4.2.jar

3、MyBatis和Spring整合的jar包:1个

mybatis-spring-1.3.1.jar

4、springmvc的jar包:2个

spring-web-5.0.1.RELEASE.jar

spring-webmvc-5.0.1.RELEASE.jar

我也已经全部在maven官网中拷贝下来了,每一块上面都有注解,我相信你需要的我都有。

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
  </dependency>
  <!--spring-->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.3</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.3.3</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>5.3.3</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>5.3.3</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.3</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>5.3.3</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>2.0.0-alpha0</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>5.3.3</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>5.3.3</version>
  </dependency>
  <dependency>
    <groupId>aopalliance</groupId>
    <artifactId>aopalliance</artifactId>
    <version>1.0</version>
  </dependency>
  <dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.9.5</version>
  </dependency>
  <!--springmvc-->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.3.3</version>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.3</version>
  </dependency>
  <!--MyBatis-->
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.3</version>
  </dependency>
  <!--mybatis整合Spring-->
  <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.3</version>
  </dependency>
  <!--数据驱动依赖-->
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
  </dependency>
  <!--数据源-->
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.2</version>
  </dependency>
  <!--JSTL-->
  <dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
  </dependency>
  <dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
  </dependency>
  <!--文件上传-->
  <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3</version>
  </dependency>
  <dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.2</version>
  </dependency>
  <!--使用HttPSession-->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
  </dependency>
  <!--自定义标签-->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
  </dependency>
  <!-- https://mvnrepository.com/artifact/javax.servlet/jsp-api -->
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
    <scope>provided</scope>
  </dependency>
  <!--解析data-->
  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.12.1</version>
  </dependency>
  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.12.1</version>
  </dependency>
  <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.1</version>
  </dependency>
  <!--文件上传-->
  <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3</version>
  </dependency>
  <dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.2</version>
  </dependency>
</dependencies>

配置SpringMvc.xml

首先在web.xml配置前端控制器

<!--前端控制器-->
<servlet>
  <servlet-name>dispatcherServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-*.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>dispatcherServlet</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>
<!--解决中文乱码的过滤器-->
<filter>
  <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

在资源问价夹创建spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context= "http://www.springframework.org/schema/context"
       xmlns:ixsi= "http://www.w3.org/2001/XMLSchema-instance"
       ixsi: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">
​
    <!--开启注解扫描-->
    <context:component-scan base-package="com.zl.hrm.**.controller"/>
    <!--配置视图解析器-->
    <bean id="internalResourceViewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <!-- 对静态资源文件的访问 -->
    <mvc:default-servlet-handler />
    <!--配置拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <!--拦截的路径-->
            <mvc:mapping path="/**"/>
            <!-- 不进行拦截 -->
            <mvc:exclude-mapping path="/index.jsp,/,/user/logout"/>
            <!--启用拦截路径-->
            <bean class="com.zl.hrm.utils.MyIntercepor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>
    <!--文件上传-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--指定编码方式-->
        <property name="defaultEncoding" value="utf-8"/>
        <!--指定上传文件最大值,单位是字节,-1表示无限制-->
        <property name="maxUploadSize" value="100000000"/>
    </bean>
​
    <!--开启SpringMVC注解的支持-->
    <mvc:annotation-driven/>
</beans>

Spring和MyBatis的整合

mybatis文件与之前不同,之前实在mybatis-config.xml中配置数据库连接的,现在要把这些放在spring的配置文件中,所以mybatis配置文件中只写类的别名和引用的Mapper(当然,这个文件也可以不写,直接指出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>
    <typeAliases>
        <!--批量定义别名-->
        <package name="com.zl.hrm.**.bean"/>
    </typeAliases>
​
</configuration>

然后我们首先需要配置数据源,方便修改,建议配置:jdbc.properties

druid.driverClassName=com.mysql.jdbc.Driver 
druid.url=jdbc:mysql://127.0.0.1:3306/hrm?useUnicode=true&characterEncoding=UTF-8
druid.username=root
druid.password=123456

1、Spring中配置数据源

2、sqlSessionFactory对象

3、UserMapper对象

为了方便区分,最好将Spring分开,例如 Spring-dao.xml;Spring-service.xml

最后上代码:spring-dao.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"
       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">
    <!-- 配置整合mybatis过程 -->
    <!-- 1.配置数据库相关参数properties的属性:${url} -->
    <context:property-placeholder location="classpath:jdbc.properties" />
​
    <!-- 配置数据源 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
          init-method="init" destroy-method="close">
        <!-- 数据库基本信息配置 -->
        <property name="url" value="${druid.url}" />
        <property name="username" value="${druid.username}" />
        <property name="password" value="${druid.password}" />
        <property name = "driverClassName" value = "${druid.driverClassName}"/>
    </bean>
​
    <!-- 3.配置SqlSessionFactory对象 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入数据库连接池 -->
        <property name="dataSource" ref="dataSource" />
        <!-- 扫描sql配置文件:mapper需要的xml文件 -->
        <property name="mapperLocations" value="classpath:mapper/*.xml" />
        <!-- 指定mybatis全局配置文件的位置 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>
​
    <!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 注入sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        <!-- 给出需要扫描Dao接口包 -->
        <property name="basePackage" value="com.zl.hrm.**.dao" />
    </bean>
</beans>

spring-service.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"
       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">
    <!-- 扫描service包下所有使用注解的类型 -->
    <context:component-scan base-package="com.zl.hrm.**.service" />
​
    <!-- 配置事务管理器 -->
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 注入数据库连接池 -->
        <property name="dataSource" ref="dataSource" />
    </bean>
​
    <!-- 配置基于注解的声明式事务 -->
    <tx:annotation-driven transaction-manager="transactionManager" />
</beans>

 

最后看一下结构:

SSM环境搭建

记得把spring-service、dao、mvc里全部改成自己的路径,数据库也更改

来一个mapper小例子,路径记得改哟

<?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.zl.hrm.dept.dao.DeptDao">
    <!--删除部门-->
    <delete id="delDepts">
        delete from dept_inf where id in
        <foreach collection="array" item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>
    </delete>
</mapper>

希望对你有所帮助


打赏

已有2人打赏

暮色留白的gravatar头像 最代码官方的gravatar头像
最近浏览
longking  LV1 2023年2月3日
szy0077  LV4 2022年9月14日
lixiaoc  LV1 2022年4月30日
一脚踩在大腚上  LV7 2022年4月28日
ssy552  LV10 2022年4月24日
流眼泪  LV1 2022年3月24日
常态 2022年3月19日
暂无贡献等级
叮当想玲儿 2021年12月24日
暂无贡献等级
jessie_fancy  LV1 2021年12月8日
孙纪龙啊  LV10 2021年12月5日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友