焦点

ssm项目实战完整教程

时间:2010-12-5 17:23:32  作者:焦点   来源:休闲  查看:  评论:0
内容摘要:搭一个SSM项目,最耗时间的不是写业务代码,是配环境。我见过太多人卡在第一步——Maven依赖下载不下来,或者Spring和MyBatis的版本对不上,光这两个问题就能耗掉一整个下午。所以这篇教程不讲

搭一个SSM项目,目实最耗时间的战完整教不是写业务代码,是目实配环境。我见过太多人卡在第一步——Maven依赖下载不下来,战完整教或者Spring和MyBatis的目实版本对不上,光这两个问题就能耗掉一整个下午。战完整教所以这篇教程不讲虚的目实,直接从建表开始,战完整教把每个环节的目实坑标出来。

先明确要做什么

用一个图书管理系统当案例。战完整教功能很简单:查书、目实加书、战完整教改书、目实删书。战完整教数据库两张表就够——book表存书籍信息,目实user表做登录校验。别小看这个体量,SSM该有的东西一样不少:Controller收请求,Service处理逻辑,Mapper操作数据库,Spring管对象,SpringMVC管路由,MyBatis管SQL。

项目骨架和依赖

IDEA里新建Maven Web项目,pom.xml是关键。Spring用5.3.x,MyBatis用3.5.x,mybatis-spring用2.0.x。这三个版本搭配比较稳,别追最新版,容易踩兼容性问题。数据库连接池用Druid,日志用Log4j2。JSON处理加Jackson。

<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.30</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.7</version> </dependency>

打包方式设成war,不然Tomcat跑不起来。

配置文件别写乱

SSM有三套配置要整合:web.xml、spring.xml(或者叫applicationContext.xml)、springmvc.xml。很多人搞混它们的分工,这里说清楚。

web.xml干两件事:注册ContextLoaderListener加载Spring容器,注册DispatcherServlet加载SpringMVC容器。两个容器是父子关系,Spring管Service和Mapper,SpringMVC管Controller。

spring.xml里配数据源、SqlSessionFactory、Mapper扫描、事务管理。数据源那块,Druid的配置直接贴:

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/library?useSSL=false&serverTimezone=Asia/Shanghai"/> <property name="username" value="root"/> <property name="password" value="123456"/> </bean>

springmvc.xml里开注解驱动、配视图解析器、扫描Controller包。视图解析器前缀写/WEB-INF/jsp/,后缀写.jsp。

MyBatis的Mapper要细心

实体类字段和数据库列名对不上是高频错误。比如数据库里是book_name,实体类里是bookName,要么在SQL里用别名,要么开mapUnderscoreToCamelCase。我习惯在mybatis-config.xml里直接开这个设置,省事。

Mapper接口和XML文件的路径必须严格对应。接口在com.xxx.mapper包下,XML就放在resources/com/xxx/mapper目录下。名字一模一样,差一个字母都报BindingException。

Controller和页面

Controller用@Controller和@RequestMapping。返回JSON就加@ResponseBody,返回页面就返回字符串视图名。分页查询用PageHelper插件,在Service层调PageHelper.startPage(pageNum, pageSize),紧跟着的那条查询自动分页。

JSP页面用JSTL遍历数据。表单提交用POST,删除用GET或者DELETE都行,但要在web.xml里配HiddenHttpMethodFilter才能把POST转成DELETE。

几个容易翻车的地方

事务不生效——检查@Transactional加在public方法上,且Spring配置里开了<tx:annotation-driven/>。中文乱码——在web.xml里加CharacterEncodingFilter,forceEncoding设true。静态资源404——springmvc.xml里加<mvc:default-servlet-handler/>。

最后说一句:SSM整合的核心就一句话——让Spring把MyBatis的Mapper接口变成可以注入的Bean,让SpringMVC的Controller能调到Service。把这条线捋顺了,剩下的都是查文档能解决的问题。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap