本文适合SSM新手玩家,同样作为作者SSM搭建过程的中文记录。
Maven官方文档
Maven依赖搜索
这里仅给出macOS系统的安装方式:
homebrew —— 一条命令完成下载安装以及环境变量的配置
brew install maven
将 /usr/local/Cellar/maven/3.5.3/libexec/conf/setting.xml 文件拷贝至Users/你的用户名/.m2目录
(该文件配置将优先于前者)
推荐一些源(在.m2/setting.xml文件里面配置)
UK
central
UK Central
http://uk.maven.org/maven2
repo1
central
Human Readable Name for this Mirror.
http://repo1.maven.org/maven2/
repo2
central
Human Readable Name for this Mirror.
http://repo2.maven.org/maven2/
alimaven
central
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
nexus-osc
*
Nexus osc
http://maven.oschina.net/content/groups/public/
GroupId和ArtifactId“坐标”,保证项目唯一性,在maven本地仓库,根据这两个id去查找。
GroupID对应项目组织唯一的标识符, main目录里java的目录结构, 第一段为域,第二段为公司名称,第三段为项目名, 常见的域org为非营利组织,com为商业组织. cn为中国。
ArtifactID对应Maven项目(模块)的唯一的标识符, 项目根目录的名, 如果是模块用项目名作为前缀比较好。
该行指定下载archetype元数据,目的是加快Maven项目创建时的数据下载速度,根据实际情况添加,我的网络环境测试结果为无差别。
该配置文件主要分为三个区域:
按照固定的格式,向项目添加对应的依赖(jar)和插件,属性是针对于Maven的。
了解它们的作用,用时再添加。
2. mysql-connector-java(jdbc连接mysql驱动)
官网地址
根据自己mysql版本选择合适的Connector/J
目前最新版为5.1.46
加入依赖如下:
mysql
mysql-connector-java
5.1.46
在 main/resources目录下创建 .properties文件, 我的命名为jdbc.properties,基本配置代码如下
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/1806_mall?autoReconnect=true&useSSL=false
jdbc.username=root
jdbc.password=
Mybatis下载地址
Mybatis官方文档
下载release(发布)版本,同时可以下载Source code(源码)其中包含一些示范代码。
确定即可
前面简单的体验一下一般的安装方式,这里推荐maven安装,在pow.xml中加入如下依赖配置即可maven会帮助你,一步到位。
org.mybatis
mybatis
3.4.6
如未自动下载可点击右下角图标,弹出窗口点击import Changes,也可选择自动引入。
若有实战需求可参考以下视频,重在感受mybatis的使用
通过自动回复机器人学Mybatis---基础版
在src/main/resources/mybatis中创建SqlMapConfig.xml文件。
该配置并非必要的,SSM项目中连接数据库的文件并不是它。
官方文档
中文文档
这里我选择使用Maven通过插件运行Mybatis-generator的方式
org.mybatis.generator
mybatis-generator-maven-plugin
${mybatis-generator.version}
Generate MyBatis Artifacts
generate
这个应该是会自动扫描的,可放在resources目录下任意处
mapper.xml累加,其他会覆盖。
遇到问题如下: [WARNING] The specified target project directory .\src\main\java does not exist
解决方法:先用绝对路径运行,再改回相对路径(这个坑有点奇怪额。。。)
逆向工程大大提升了我们编写程序的效率,自动生成的文件可以基本满足前期的开发需求。
如果将前面的这段代码:
改为:
mapper文件夹将在target目录里面生成。
mybatis-spring官方文档
mybatis-spring中文文档
druid数据库连接池下载地址
org.mybatis
mybatis-spring
1.3.2
com.alibaba
druid
${druid.version}
相对于单纯的使用mybatis,这里实现了动态实现Dao接口注入到spring容器。
org.springframework
spring-context
${spring.version}
org.springframework
spring-core
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-*.xml
1
true
SpringMVC
/
package cn.yang.ssm.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @program: ssm
* @description: 静态页面测试控制
* @author: yangxinyu
* @create: 2018-07-17 11:33
**/
@Controller
@RequestMapping("/admin")
public class TestController {
@RequestMapping("/login")
public String test(){
return "login";
}
}
WEB-INF是客户端无法访问,只有服务端可以访问的目录。
webapp是根目录,若index.jsp放在该目录下,通过http://127.0.0.1:8080/index.jsp可以访问。
验证WEB-INF为安全目录的方法:
http://127.0.0.1:8080/WEB-INF/views/admin/login/login.jsp 浏览器显示404
AdminlLTE后台模版使用MIT协议
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/springmvc-*.xml
1
SpringMVC
/
http://localhost:8080/admin/login
junit
junit
4.11
test
javax.servlet
javax.servlet-api
3.0.1
test
在需要建立单元测试的类中点击快捷键command+shift+t(command很多情况下相当于windows系统的ctrl键)
package cn.yang.ssm.controller;
import org.junit.Test;
import static org.junit.Assert.*;
public class LoginControllerTest {
@Test
public void test1() throws Exception{
LoginController controller = new LoginController();
assertEquals("/admin/login/login",controller.test());
}
}
package cn.yang.ssm.controller;
import org.junit.Test;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;
public class LoginControllerTest {
@Test
public void test1() throws Exception {
LoginController controller = new LoginController();
MockMvc mockMvc =
standaloneSetup(controller).build();
mockMvc.perform(get("/admin/login"))
.andExpect(view().name("/admin/login/login"));
}
}