使用 Spring + Spring MVC +MyBatis 搭建一个服务端
想直接看项目源码的,请移步https://gitee.com/spencercjh/shouers
第一次在微信公众号给大家写技术文章,就写最傻瓜最萌新的SSM使用教程吧。
这里只有使用方法,你可以直接复制黏贴地开始搭建自己的SSM环境,具体的实现理论我不再赘述,自己看书研究吧。但我会介绍每个文件是干什么的。
环境准备(我自己的环境)
Intelij IDEA 2018.1.1 (IDE)Java8 1.8.0_152 (JDK)Apache Maven 3.5.0 (Maven)MySQL 5.7.17 (DataBase)Tomcat 8.5 (Local Sever)
开始
1 Create New Project
单击Next。
Type里你可以选择是Maven Project还是Gradle Projcet,Maven和Gradle简单说都是管理dependency(没有这些东西我们需要下载jar包并导入)。
Language选择Java。(但你也可以了解了解Kotlin呢【安利】)
Packaging选择War包,本人才疏学浅还只会部署war包到服务器上,还并不了解jar包怎么使用。
Java Version选择8。
Version一般不改。
Name可以改成Artifact名
单击Next。
Description可以简单写写,我从来没试过在这里写中文,我建议你也别尝试。
Package 就是包名,会根据Group+Artifact自动生成,你当然可以自己改,所以我所有的建议都是针对萌新,当你不知道会发生什么事情的时候,就要谨慎行事。
接下来选择Dependencies,制作一个我们是给网站/App/小程序/公众号做服务端,你要根据需要去勾选:我的项目非常简单,所以只勾了:Web、MySQL,JDBC,MyBatis。你仔细看上面会发现还要选择Spring Boot的版本,这个不用管它,我们不用Spring Boot,我们会在后面的Maven Pom文件中把项目改回我们要的样子,对熟悉自己在做什么事情的人来说,怎么创建SSM项目都行。(在New Project中选择Spring而不选择Spring Initializr,或者只创建Maven/Gradle项目自己手动添加Spring有关的配置,或者自己手写一个Spring框架【笑】)
单击Next。
Project Name,我建议你用Artifact名,到现在你应该一直都是小写它的。
Project Location,项目的物理位置。我建议你不要在C盘的User目录下,或者program files目录里放工程项目。(经常会因为C盘的写入权限或者文件系统让你头皮发麻的)
别的都不用你操心了。
单击Finish。
2 开始复制黏贴我的代码吧
我会介绍每个文件是干嘛的。
2.1 pom.xml
你会发现你刚刚的设置其实都体现在pom.xml里了,你可以在这里修改以颠覆刚刚的设置,改完了以后要import changes。
2.2 webapp/*(eclipse里默认叫这个名,idea都不会默认创建)
在src中New->Directory,取名webapp。
打开Project Structure,在左边Modules中看有没有Web,没有就添加。
在Web Resources Directories中添加webapp这个路径。
在webapp中添加文件夹(根据你的开发习惯),我添加了resources,static,WEB-INF;在static中再添加css,js,images;在WEB-INF中添加jsp,和web.xml
2.2.1 webapp/WEB-INF/web.xml
做过JSP+Servlet+JavaBean等其他Java Web的人都知道这个web.xml是干嘛的。
你会发现这里面有些代码指向的类,文件,目录都不存在,但我想告诉你做服务端的时候Error并不会影响什么(除非不让你run了)
2.3 src/resouces/*
你可以把里面原来的东西全部删掉。
2.3.1 eneratorConfig.xml
SSM中dao,model,mapping都是靠这个生成出来的,具体怎么操作去生成后面会介绍。
2.3.2 jdbc.properties
这个文件是给mybatis的配置文件看的
2.3.3 log4j.properties
这个文件是维护日志的,对大规模的服务端来说,日志是很重要的。
2.3.4 spring-mvc.xml
这是Spring MVC的配置文件,你需要修改里面的包名,我建议你用ctrl-F,ctrl-R来做这些事情。
2.3.5 spring-mybatis.xml
mybatis就是在这里被配置的,和刚刚一样你需要修改包名,我再次建议你认真仔细地改,否则后面会出各种你看不懂的错误。
2.4 java
你应该知道SSM有以下文件结构:controller,dao,model,mapping,model,service,serviceimpl,一般的工程还会有util(工具包),common等等。建好文件目录后你还要把默认存在的Spring Boot的启动类删掉
2.4.1 使用mybatis-generator:generate
在IDEA中你不new一种运行项目的方式的话默认是不能运行的。
在这之前你应该先建好数据库了!
添加Maven运行方式。
Name随便取。
Command line里填写如下指令mybatis-generator:generate -e
具体怎么生成,都写在generatorConfig.xml中了。
运行。
你会发现dao、mapping、model中有东西了。
如果数据库被修改了,这些文件应该都会跟着变动,这个时候你要先把它们都删了,再生成一次,而不是直接运行生成插件!
2.4.2 编写service和serviceimpl
这里就举一个完整的例子:(这个例子中我已经扩充过一些SQL操作,并不是刚生成后的)
2.4.2.1 UserMapper .java
2.4.2.2 UserMapper.xml
2.4.2.3 User.java
2.4.2.4 UserKey.java
2.4.2.5 UserService.java
2.4.2.6 UserServiceImpl.java
2.4.2.7 user表
2.4.3 编写controller
controller里会负责网页的路由和接收请求接口,这里也举一个例子:(据说这里面也有争议,有些人不喜欢把大量的业务逻辑写在这里)
2.4.3.1 LoginController.java
3 尝试运行
3.1 准备一个index.jsp
按照我的配置,被路由的网页jsp都放在webapp/WEB-INF/jsp中
3.2 写一个默认路由
3.2.1 HomeController.java
3.3 添加运行方法
Run/Debug Configuration中添加Tomcat。
Name随便取。
Application Sever配置一下。
Deployment中把项目添加进来,应该是demo:war。Application context默认是“/”,也就是访问localhost:8080/就能进入,但在eclipse中默认是localhost:8080/demo。我也没研究过怎么在eclipse中改动这个。
单击OK。
Run。
3.4 可能出现的问题
我简单列举几个。
3.4.1 服务器并没有在跑项目,而是空跑
你一定要看到这句话,否则你的服务器运行配置就没有配置好。
3.4.2 mapping,sql等字样的错误信息
你的mapping文件系统被没有找到,观察target/classes/包名/中是否有mapping文件夹和对应的xml文件,我在pom中已经加入相关插件解决了IDEA不会在编译过程中自动把mapping文件放入taget的问题。
3.4.3 not mapping found for HTTP…………
路由写好,写对了吗?
4 总结
按照我这样配置一般不会出什么岔子的。希望你能在使用SSM的过程中理解Spring IOC容器的DI(依赖注入),Spring MVC的MVC架构,MyBatis的实现过程与原理以及和Hibernate的区别。
领取专属 10元无门槛券
私享最新 技术干货