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>
最后看一下结构:
记得把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>
希望对你有所帮助