SSM整合(搭建一个Web脚手架)
文章目录
- 引入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&autoReconnect=true&useUnicode=true&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脚手架)相关推荐
- go html vue,用Go+Vue.js快速搭建一个Web应用(初级demo)
Vue.js做为目前前端最热门的库之一,为快速构建并开发前端项目多了一种思维模式.本文给大家介绍用Go+Vue.js快速搭建一个Web应用(初级demo). 环境准备: 1. 安装go语言,配置go开 ...
- 搭建环境_maven: 搭建工程: ssm整合: 搭建测试:
2019独角兽企业重金招聘Python工程师标准>>> 搭建环境_maven: 搭建工程: ssm整合: 搭建测试: 搭建环境问题解决: 转载于:https://my.oschina ...
- 使用vue3 +vite + typeScript + elementPlus搭建一个项目脚手架
使用vue3 + vite + elementPlus搭建一个项目脚手架 这篇文章就教大家如何使用vue3+vite+ts+element-plus搭建一个项目,步骤详细,献给不爱看文档的诸位,希望这 ...
- 一步步学习SpringBoot(一) 快速搭建一个web
适应读者 前端工程师(java系的公司) 前端架构师(java系的公司) java工程师 测试工程师(java系的公司) 什么是SpringBoot? Spring Boot便是一个社区反馈推动的项目 ...
- idea+tomcat+struts2 搭建一个web实例
参考这个博客搭建: Struts2快速入门与使用IntelliJ IDEA创建第一个web项目 需要注意几点: 1)可能会遇到struts-default高亮变红的情况,其实是没有把struts-de ...
- CentOS 7使用ttyd搭建一个WEB共享终端(WebSSH)
点击蓝字关注这个神奇的公众号- ttyd 是一个简单的命令行工具,用于在 Web 上共享终端,简单点说就是可以实现在网页上使用SSH终端服务,并且该软件是免费开源的. 安装ttyd ttyd作者已经提 ...
- 【技术分享】Sanic+Amis:3天快速搭建一个web服务
前言 测试工作中,需要搭建一些生产力小工具来提高工作效率. 基于web的服务,无需终端可多人协作,易部署,成为第一选择. 问题:搭建web服务需要全栈知识,编写http服务和前端样式需要一定技术门槛. ...
- 快速搭建一个Web AR应用
AR是增强现实的缩写,可以在真实世界的映像中叠加额外的信息来增强对现实的表达能力.最出名的一个AR应用就是精灵宝可梦了,玩家用手机在现实世界中捕捉宝可梦小精灵. 通常AR应用可以根据不同的方式来对现实 ...
- 前端工程师: 我用gup4.0搭建一个前端脚手架
冬至时节, 程序员加油! 本文将会介绍如何使用gulp4来搭建项目脚手架,如果您还在使用gulp3或更老的版本,您也以通过本文的一些思想将之前的项目进行完善,更新.如果gulp不是你们团队的重点,也可 ...
最新文章
- 低潮过后,未来医疗可穿戴市场将如何发展?
- VUE安装依赖命令总结
- 未来ui设计的发展趋势_2025年的未来UI趋势?
- 线程与进程的控制原语对比
- esp32 coredump分析
- python安装详细步骤mac_Mac OS X10.12.4安装的Python2.7升级Python3.5步骤详解
- [转]详细易懂的Linux makefile教程(7)
- 你应该知道的 CSS 基础知识
- 神经网络常用激活函数总结
- 基于SSM框架的公交车调度管理系统
- MapGuide 安装
- ubuntu下adb的使用以及开启黑域
- astrolog php,如何在苹果MAC上使用Astrolog32 zet9等占星软件
- Python实现草莓熊手拿风车和鲜花
- DDR5 trainning
- iOS 15:如何翻译照片中的文本-「实况文本」
- P4043 [AHOI2014/JSOI2014]支线剧情(有源汇上下界最小费用可行流)
- mysql中高阶玩法系列(八)
- HIVE常见面试题以及实战练习(六)
- Pwn2Own:浏览器血雨腥风独活Chrome 智能手机波澜不惊单挂iphone