文章目录

  • 引入Maven依赖
  • Mybatis配置
  • Spring
  • SpringMVC
  • 集成三个配置文件
  • 配置WEB
  • Controller例子

SSM基础在这里了
MyBatis笔记(从零到一)
Spring5笔记(配置和零配置)
SpringMVC笔记(从零搭建一个web项目)

引入Maven依赖

<dependencies><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope><version>4.12</version></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.17</version></dependency><!--数据库连接池--><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.5</version></dependency><!--mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.4</version></dependency><!--mybatis和spring整合包--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.4</version></dependency><!--使用Spring管理事务需要这个包--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.5.RELEASE</version></dependency><!--SpringMVC等--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.9.RELEASE</version></dependency><!--织入包--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.10</version></dependency><!--lombok,偷懒用--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12</version></dependency><!--文件上传包--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.3</version></dependency><!--servlet jsp--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!--jackson--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.10.0</version></dependency>
</dependencies>

c3p0连接池最后没有使用,不知道为什么用c3p0一直连接数据库超时,不设置超时和重试次数就一直没有反应
配置maven构建的静态资源导入,让配置文件和mapper.xml能正常build到编译后的文件夹中

<!--静态资源导出问题--><build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources></build>

Mybatis配置

mybatis-config.xml文件,其实整合到Spring后完全可以不需要这个了,给mybatis留个面子留这个配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--配置数据源,交给Spring去做--><settings><!--开启驼峰命名映射--><setting name="mapUnderscoreToCamelCase" value="true"/></settings><!--设置别名--><typeAliases><package name="com.jxw.pojo"/></typeAliases>
</configuration>

··
spring-dao.xml,这里数据库的配置本来使用的是 database.properties 文件获取来的,但是始终超时,查了半天也没有查到为什么,就直接写在这个配置文件中了

<?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/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd"><!--关联数据库配置文件--><context:property-placeholder location="classpath:database.properties"/><!--连接池c3p0:自动化操作(自动加载配置文件,并且可以自动设置到对象中)dbcp:半自动化操作,不能自动链接druid:阿里开源的连接池,性能高hikari:--><!--配置c3p0数据源--><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="com.mysql.cj.jdbc.Driver"/><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/MybatisStudy?useSSL=true&amp;autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF8"/><property name="user" value="root"/><property name="password" value="123456"/><!--最大最小连接池设置--><property name="maxPoolSize" value="30"/><property name="minPoolSize" value="10"/><!--关闭链接后是否自动提交--><property name="autoCommitOnClose" value="true"/><!--获取链接超时时间--><property name="checkoutTimeout" value="10000"/><property name="acquireRetryAttempts" value="2"/></bean><!--配置sqlSessionFactory--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><!--绑定Mybatis配置文件--><property name="configLocation" value="classpath:mybatis-config.xml"/></bean><!--配置dao层自动扫描--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!--配置sqlSessionFactory--><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/><!--配置要扫描的包--><property name="basePackage" value="com.jxw.mapper"/></bean>
</beans>

这里Mybatis配置完自动扫描后在Mapper的接口上使用@Repository注解,便可以直接在service层使用@Autowired注入了,不再需要我们处理任何sqlSession相关的东西了,写个例子

UserMapper.java

@Repository
public interface UserMapper {//查询全部的用户List<User> getAllUser();//查询一个用户User getUserById(@Param("id") Integer id);//增加一个用户Integer addUser(User user);//删除一个用户Integer deleteUser(Integer id);//修改一个用户Integer updateUser(User user);
}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jxw.mapper.UserMapper"><select id="getAllUser" resultType="User">select * from user;</select><select id="getUserById" resultType="User" parameterType="int">select * from user where id = #{id}</select><insert id="addUser" parameterType="User">insert into user(name ,password,create_time,is_deleted)values (#{name},#{password},#{createTime},#{isDeleted})</insert><update id="updateUser" parameterType="User">update user set name=#{name},password=#{password},modify_time=#{modifyTime},is_deleted=#{isDeleted}where id = #{id}</update><delete id="deletedUser" parameterType="int">delete from user where id = #{id}</delete>
</mapper>

UserServiceImpl.java
这里直接使用@Autowired注解就能注入了,然后直接使用就可以,不再需要在代码中管理任何SqlSession相关的东西了

@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;public List<User> getAllUser() {return userMapper.getAllUser();}public User getUserById(Integer id) {return userMapper.getUserById(id);}public Integer addUser(User user) {return userMapper.addUser(user);}public Integer deleteUser(Integer id) {return userMapper.deleteUser(id);}public Integer updateUser(User user) {return userMapper.updateUser(user);}
}

Mybatis的配置就基本完成了,下面进行Spring的配置

Spring

Spring整合Mybatis,除了Bean的自动注入,SqlSession交给Spring之外,还要将事务交给Spring来管理

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:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--启动自动扫描service层--><context:component-scan base-package="com.jxw.service"/><!--声明式事务--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean>
</beans>

Service层的例子在上面已经给出了,就不再写一遍了

SpringMVC

SpringMVC与Spring天然集成,使用SpringMVC集成Spring甚至不需要引入额外的包

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"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--启动自动扫描--><context:component-scan base-package="com.jxw.controller"/><!--开启注解--><mvc:annotation-driven><!--使返回值序列化成Json,并处理Json乱码问题--><mvc:message-converters register-defaults="true"><bean class="org.springframework.http.converter.StringHttpMessageConverter"><constructor-arg value="UTF-8"/></bean><bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="objectMapper"><bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"><property name="failOnEmptyBeans" value="false"/><!--设置日期格式化类型--><property name="simpleDateFormat" value="yyyy-MM-dd HH:mm:ss"/>
<!--                        <property name="DateFormat">-->
<!--                            <bean class="java.text.SimpleDateFormat">-->
<!--                                <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss"/>-->
<!--                            </bean>-->
<!--                        </property>--></bean></property></bean></mvc:message-converters></mvc:annotation-driven><!--静态资源过滤--><mvc:default-servlet-handler/><!--视图解析器:DispatcherServlet给他的ModelAndView--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver"><!--前缀--><property name="prefix" value="/WEB-INF/jsp/"/><!--后缀--><property name="suffix" value=".jsp"/></bean><!--文件上传配置--><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!--请求的编码格式,必须和JSP的pageEncoding属性一致,以便正确读取表单的内容,默认为IOS-8859-1--><property name="defaultEncoding" value="utf-8"/><!--上传文件大小限制,单位为字节(10485760 = 10M)--><property name="maxUploadSize" value="10485760"/><!--最大内存缓存阈值,低于此值,保留在内存里,超过此值,生成硬盘上的临时文件--><property name="maxInMemorySize" value="40960"/></bean><!--配置拦截器--><mvc:interceptors><!--<bean class="com.ma.interceptor.CustomeInterceptor" />--><!--拦截器1--><mvc:interceptor><!--配置拦截器的作用路径--><mvc:mapping path="/**"/><!--不拦截的路径--><mvc:exclude-mapping path="/user/**"/><!--定义在<mvc:interceptor>下面的表示匹配指定路径的请求才进行拦截--><bean class="com.jxw.interceptor.MyInterceptor"/></mvc:interceptor><!--拦截器2--><mvc:interceptor><mvc:mapping path="/hello"/><bean class="com.jxw.interceptor.MyInterceptor2"/></mvc:interceptor></mvc:interceptors></beans>

在这个配置文件中拦截器的配置只是写了一个例子,如果配置的话需要根据自己的需求来进行配置

集成三个配置文件

将三个配置文件都 import 到这个文件中
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"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd"><import resource="classpath:spring-mvc.xml"/><import resource="classpath:spring-service.xml"/><import resource="classpath:spring-dao.xml"/>
</beans>

配置WEB

web.xml

   <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><!--启动级别 1--><load-on-startup>1</load-on-startup></servlet><!--匹配的请求--><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--配置过滤器来解决乱码问题--><filter><filter-name>encoding</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>encoding</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--设置session超时时间--><session-config><session-timeout>15</session-timeout></session-config>

这里主要是将 DispatcherServlet 配置成拦截所有请求的servlet,然后配置一个编码过滤器来解决乱码问题

Controller例子

因为上面已经给dao层、service层的例子了,所以这里直接写一个Controller的例子

@Controller
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("users")@ResponseBodypublic List<User> getAllUser(){return userService.getAllUser();}@PostMapping("user")@ResponseBodypublic String addUser(User user){int count = userService.addUser(user);return count > 0 ? "添加成功" : "添加失败";}
}

SSM整合(搭建一个Web脚手架)相关推荐

  1. go html vue,用Go+Vue.js快速搭建一个Web应用(初级demo)

    Vue.js做为目前前端最热门的库之一,为快速构建并开发前端项目多了一种思维模式.本文给大家介绍用Go+Vue.js快速搭建一个Web应用(初级demo). 环境准备: 1. 安装go语言,配置go开 ...

  2. 搭建环境_maven: 搭建工程: ssm整合: 搭建测试:

    2019独角兽企业重金招聘Python工程师标准>>> 搭建环境_maven: 搭建工程: ssm整合: 搭建测试: 搭建环境问题解决: 转载于:https://my.oschina ...

  3. 使用vue3 +vite + typeScript + elementPlus搭建一个项目脚手架

    使用vue3 + vite + elementPlus搭建一个项目脚手架 这篇文章就教大家如何使用vue3+vite+ts+element-plus搭建一个项目,步骤详细,献给不爱看文档的诸位,希望这 ...

  4. 一步步学习SpringBoot(一) 快速搭建一个web

    适应读者 前端工程师(java系的公司) 前端架构师(java系的公司) java工程师 测试工程师(java系的公司) 什么是SpringBoot? Spring Boot便是一个社区反馈推动的项目 ...

  5. idea+tomcat+struts2 搭建一个web实例

    参考这个博客搭建: Struts2快速入门与使用IntelliJ IDEA创建第一个web项目 需要注意几点: 1)可能会遇到struts-default高亮变红的情况,其实是没有把struts-de ...

  6. CentOS 7使用ttyd搭建一个WEB共享终端(WebSSH)

    点击蓝字关注这个神奇的公众号- ttyd 是一个简单的命令行工具,用于在 Web 上共享终端,简单点说就是可以实现在网页上使用SSH终端服务,并且该软件是免费开源的. 安装ttyd ttyd作者已经提 ...

  7. 【技术分享】Sanic+Amis:3天快速搭建一个web服务

    前言 测试工作中,需要搭建一些生产力小工具来提高工作效率. 基于web的服务,无需终端可多人协作,易部署,成为第一选择. 问题:搭建web服务需要全栈知识,编写http服务和前端样式需要一定技术门槛. ...

  8. 快速搭建一个Web AR应用

    AR是增强现实的缩写,可以在真实世界的映像中叠加额外的信息来增强对现实的表达能力.最出名的一个AR应用就是精灵宝可梦了,玩家用手机在现实世界中捕捉宝可梦小精灵. 通常AR应用可以根据不同的方式来对现实 ...

  9. 前端工程师: 我用gup4.0搭建一个前端脚手架

    冬至时节, 程序员加油! 本文将会介绍如何使用gulp4来搭建项目脚手架,如果您还在使用gulp3或更老的版本,您也以通过本文的一些思想将之前的项目进行完善,更新.如果gulp不是你们团队的重点,也可 ...

最新文章

  1. 低潮过后,未来医疗可穿戴市场将如何发展?
  2. VUE安装依赖命令总结
  3. 未来ui设计的发展趋势_2025年的未来UI趋势?
  4. 线程与进程的控制原语对比
  5. esp32 coredump分析
  6. python安装详细步骤mac_Mac OS X10.12.4安装的Python2.7升级Python3.5步骤详解
  7. [转]详细易懂的Linux makefile教程(7)
  8. 你应该知道的 CSS 基础知识
  9. 神经网络常用激活函数总结
  10. 基于SSM框架的公交车调度管理系统
  11. MapGuide 安装
  12. ubuntu下adb的使用以及开启黑域
  13. astrolog php,如何在苹果MAC上使用Astrolog32 zet9等占星软件
  14. Python实现草莓熊手拿风车和鲜花
  15. DDR5 trainning
  16. iOS 15:如何翻译照片中的文本-「实况文本」
  17. P4043 [AHOI2014/JSOI2014]支线剧情(有源汇上下界最小费用可行流)
  18. mysql中高阶玩法系列(八)
  19. HIVE常见面试题以及实战练习(六)
  20. Pwn2Own:浏览器血雨腥风独活Chrome 智能手机波澜不惊单挂iphone

热门文章

  1. mysql查询每门课程成绩最好的前两名学生id和姓名
  2. python文件怎么另存为_python+pywin32处理另存为弹出框保存文件
  3. 磁盘在计算机没显示win10,win10机械硬盘检测不到怎么解决?
  4. 编译、汇编、翻译原理知识概括
  5. CoreData里的增删改查
  6. 半监督语义分割_paper reading part2
  7. 包装设计模式-Decorator
  8. Edge出现无法访问此页面xxxxxx已拒绝连接。
  9. JAVA程序设计:救生艇(LeetCode:881)
  10. 集成科大讯飞语音合成