准备工作:
1.请先保证正确的运行环境,Eclipse、JDK、Tomcat、Maven等内容的正确安装,如需要安装搭建过程,请查看其他文章。
2.Maven项目搭建SSM框架
搭建流程:
1:搭建SSM框架
1.1:搭建Spring
1.1.1:添加maven依赖 (pom.xml)
1.1.2:添加Spring配置文件 (applicationContext-public.xml 当前只有约束)
1.1.3: 添加bean id 为data;class 为java.util.Date,写这个只是为了以后进行测试 (applicationContext-public.xml)
1.1.4: 使用Junit4 进行测试,在 SpringIOC 中获取beanID 为date的对象进行输出 (测试类:TestSSM)
1.2:搭建MyBatis
1.2.1: 添加maven依赖 (pom.xml)
1.2.2:添加MyBatis配置文件 (mybatis-config.xml)
1.2.3:创建实体bean (model)
1.2.4:编写mapper文件,并添加到mybatis配置文件中 (SysUserMapper.java, mybatis-config.xml)
1.2.5:使用junit4进行测试
1.3:集成mybatis和spring
1.3.1:配置spring配置文件 (applicationContext-public.xml中进行配置)
1.3.1.1:添加数据源
1.3.1.2:添加sqlSessionFatory
1.3.1.3:添加事务管理其
1.3.1.4:aop切面表达式,输入事务
1.3.1.5:配置mybaits的mapper映射
1.4:集成SpringMVC
1.4.1:添加maven依赖
1.4.2:添加SpringMVC的配置文件 (applicationContext-mvc.xml 当前只有约束)
1.4.2.1:开启Spring注释扫描
1.4.2.2:开启SptingMVC注解驱动
1.4.2.3:配置信息转换器
1.4.2.4:配置视图解析器
1.4.3:配置web.xml,添加DispatcherServlet和Spring的ContextLoaderListener
1.4.4:创建Controller进行测试
1.5:集成shiro
1.5.1:示例在官方Demo--> shiro-root-1.3.2--> samples -->spring
1.5.1.1:赋值web.xml中的filter 为DelegatingFilterProxy
1.创建 Maven 项目
Working Sets 上右键,new Maven Project(没有的话,选择Others)
Create a simple project(Skip archetype selection)创建一个示例项目,
这里我们选择上图的这种,运用默认的本地空间,将项目建在“项目2017”的工作集中(可根据自己需要进行修改),
点击 next 继续。
如图进行选择,这个是 Maven 为我们提供的 Weabapp 的模版,选择 Next。
Group Id:组 Id(可以随便起),
Artifact Id:英文翻译为块 Id (这里指的是:项目的名称,今天搭建 SSM 框架,所以这里直接写成 SSM 了),
Version:版本号(不用处理),
Package:会自动生成(可根据需要进行修改),
点击 Finish 。
2.补全项目结构
这时候,可能创建的 SSM 项目会提示有错误,(错误包含在main-webapp-index.jsp中,先不用处理),
项目上右键 Build Path ,选择 Configure Build Path...,
我们会发现,有两个 missing 了,
首先介绍以下这三个,
main/java 我们通常用来放 java 代码,更通俗的说,这里可以存放 SSM 的 Controller、Service、Dao 层的代码;
main/resources 我们通常往这里放配置文件,包括 applicationContext-mvc.xml、applicationContext-public.xml、mybatis-config.xml、log4j.properties等等。
test/java 我们通常存放测试代码。
接下来,因为我们要搭建 SSM 框架,且要测试这个框架是否搭建成功,所以我们先将这几个文件夹补全。
补全方法:在指定的路径下,创建对应名称的文件夹。
1.1.1:添加maven依赖 (pom.xml)(通过 Maven 管理我们的 Jar 包)
接下来,简单介绍以下pom.xml,
这是 maven 中非常重要的一个文件,我们可以在这里进行 jar 包的配置。
4.0.0
com.ytzl
SSM1
war
0.0.1-SNAPSHOT
UTF-8
4.0.6.RELEASE
c3p0
c3p0
0.9.0
4.0.0
com.ytzl
SSM1
war
0.0.1-SNAPSHOT
UTF-8
4.0.6.RELEASE
c3p0
c3p0
0.9.0
这里只是为了看一下里面的结构,代码片段不完整,请勿直接获取。
需要什么 Maven 依赖,就去网上找,如 fstjson 的 maven,直接搜索 fastjson maven,找到你需要的版本。
直接将下面 Maven 中的代码复制到 pom.xml 中即可。
(选中项目 Ctrl + Shift + T 可以搜索 Java 类,我们搜索JSON,打开,我们会看到源码,
平时我们打的jar包是看不到的,但是通过Maven,他会自动下载,我们看源码会更方便)
项目发布一下,jar 包就会到 Tomcat 中,项目中 Maven Dependmencies 中可以看到我们添加的所有 jar 包。
我们这里指定JDK,我们可以看到以前的是 J2SE-1.5,我们要改成1.8的,之所以在这里配置,是因为一会再更新的时候如果没有这个配置,还会自动变回成原来的。
更新 Maven,用 Maven 构建出来的 JDK1.8。
项目右键 Maven - Update Project...
这里面我们注意下面的勾选,选择上更新我们的依赖,更新创建 pomx.xml,更新配置文件,清理项目。
点击 OK,完成该步的操作,此时我们会发现我们的JDK 变成 1.8 了。
以上为Jar 包的配置。
4.更新版本到3.0
接下来我们看一下 WEB-INF 下面的 Web.xml,这里面的结构和我们看的不太一样,比较老,要改成新一点的。
Archetype Created Web Application
以下是修改成 3.0之后的 web.xml
名称
index.jsp
我们找到项目所在路径下的 .settings 下的 org.eclipse.wst.common.project.facet.core.xml 文件,将里面的内容替换成
回到 Eclipse 刷新项目,这时,我们再查看版本,会发现,他已经变成 3.0 了。
1.1.2:添加Spring配置文件(applicationContext-public.xml)(1.1.2 - 1.1.3 都在 applicationContext-public.xml中进行配置)
//测试: Spring 是否配置成功(详见后面的完整测试类中的 test 方法,测试的时候下面这部分 bean 先不要写)
1.1.3:添加 bean,id 为 data(class 为 java.util.Date,写这个只是为了以后进行测试)
1.1.4:使用 Junit4 进行测试,在 Spring IOC 中获取 bean ID 为date对戏那个进行输出(编写测试类 TestSSM )
测试 Spring 是否搭建成功
package com.ytzl.ssm;//(随便起的包名,注意修改)
import java.util.Date;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)//只有用Junit4的时候才用这个
@ContextConfiguration("classpath*:applicationContext-*.xml")//去所有文件夹中查找这个文件
public class TestSSM {
//@Autowired
@Resource
protected Date date;//通过是否能够获取到值来判断是否Spring配置文件是否配置成功,在spring核心配置文件中添加一个bean
@Test
public void testSpring(){//测试spring是否配置成功,是否可以从核心配置文件中Bean获取util中的Date类
System.out.println(date);
}
}
在 testSpring 方法上右键,run - Junit test,如果显示时间(如下面图片琐事),表示 Spring 搭建成功。
1.2:搭建 MyBatis
1.2.1:搭建 Maven 依赖 (pom.xml)
1.2.2:搭建 MyBatis 陪hi文件(mybatis-config.xml)
新建一个数据库,编码格式选择 utf-8mb4,如果有线程的数据库 sql 文件,直接右键运行 sql 文件,进行导入,没有的话我们要自己创建,我i们这里测试用的是 sys_user 这张表。
接下来我们创建一个用户,选中数据库,点击用户,新建用户,我们设置一个只能操作这个数据库的用户,主机我们设置成 %,表示所有主机都可以,点击权限,我们选择刚刚就创建的这个数据库,人后设置他的权限,我这里勾选了所有,即该用户拥有数据库的所有权限,点击确定,完成设置。这时候在用户里面的对象中,就多了一个我们刚刚设置的,至此我们就完成了数据库用户的创建。(我这里用的数据库软件是 navicat)不同工具,操作相似,请根据具体情况进行设置。
1.2.3:创建爱你实体 bean (model)
这个不做延时了,例举其中一个实体类的文件,仅作参考
package com.ytzl.ssm.model;
/**
* SysUser entity. @author MyEclipse Persistence Tools
*/
public class SysUser implements java.io.Serializable {
// Fields
private Integer id;
private String userCode;
private String account;
private String name;
private String password;
private Integer sex;
private String phone;
private String email;
private Integer isUse;
// Constructors
/** default constructor */
public SysUser() {
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserCode() {
return this.userCode;
}
public void setUserCode(String userCode) {
this.userCode = userCode;
}
public String getAccount() {
return this.account;
}
public void setAccount(String account) {
this.account = account;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public String getPhone() {
return this.phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return this.email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getIsUse() {
return this.isUse;
}
public void setIsUse(Integer isUse) {
this.isUse = isUse;
}
}
如果直接导入的 java 文件,包名可能不同,这里介绍一种方法,直接替换.java文件中所有的包名:
先项目处Ctrl + A ,右键关闭所有项目,找到 Service 和你当前的项目,开启这两个,复制你正确的包名,然后随便打开一个你需要更改的类,选中你要修改的错误包名,选择 search,选择 File search,在 Containing text 中是你错误的包名,下面的 File name patterns 这里面设置你的搜索范围,我们要替换 java 类,所以我们这里直接填写 *.java,然后选择 Replace...,将我们的替换内容(要替换的包名)填写到里面的 With 中,点击 OK 完成。
1.2.3:编写 mapper 文件,并添加到 mybatis 配置文件中(SysUserMapper.java , mybatis-config.xml)
我们在 src/main/java 中创建一个包,叫 com.ytzl.ssm.mapper.xml 的包,这里面放我们的映射文件,之所以前面有一个 mapper,是因为我们在项目开发的时候会有一个 mapper 的包用来存放相应的接口。
为了测试方便,我们用了一个表,表名为 sys_user,对应的 mapper.xml 内容如下:
su.id id,
su.user_code userCode,
su.account account,
su.name name,
su.password password,
su.sex sex,
su.phone phone,
su.email email,
su.is_use isUse
1.2.5:使用 JUnit4 进行测试(这里直接截取了 TestSMM.java中的测试代码片段,注意导包,后面会有一个完整的测试类)
@Test
public void testMybatis() throws IOException{//测试MyBatis是否配置成功,是否能够从数据库查询到文件
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = build.openSession();
List sysUsers = session.selectList("com.ytzl.ssm.mapper.SysUserMapper.query");
for(Iterator iterator = sysUsers.iterator();iterator.hasNext();){
SysUser sysUser = (SysUser) iterator.next();
System.out.println(sysUser);
}
session.close();
}
1.3.1:配置 Spring 配置文件
1.3.1.1:添加数据源
1.3.1.2:添加 sqlSessionFactory
1.3.1.3:添加事务管理器
1.3.1.4:aop 切面表达式,植入事务
1.3.1.5:配置 MyBatis mapper 映射
配置文件见上面 applicationContext-public 中
下面的部分。
1.4:集成 SpringMVC
1.4.1:添加 Maven 依赖
1.4.2:添加 SpringMVC 配置文件
1.4.2.1:开启 Spring 注解扫描
1.4.2.2:开启 SpringMVC 注解驱动
1.4.2.3:配置消息转换器
1.4.2.4:配置视图解析器
该部分配置文件如下:
1.4.3:配置 web.xml 添加 DispatcherServlet 和 Spring 的 ContextLoaderListener
SSM
index.jsp
springMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:applicationContext-mvc.xml
1
springMVC
*.jhtml
contextConfigLocation
classpath:applicationContext-*.xml
org.springframework.web.context.ContextLoaderListener
1.4.4:创建 Controller 进行测试,这里的创建,要包含 Controlelr、Service、ServiceImpl、Mapper、Mapper.xml 的的编写。根据情况,可以分别在 Controller 和 ServiceImpl 这块提取出一个 BaseController 和 BaseServiceImpl。根据情况进行操作。
具体部分没有太多内容,我这里直接将自己的代码放到这里,仅供参考。
BaseController:
package com.ytzl.ssm.controller;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import com.ytzl.ssm.service.SysUserService;
@Controller
public class BaseController {
@Resource
protected SysUserService sysUserService;
}
Controller:
package com.ytzl.ssm.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/sysUser")/*实体类的名字首字母小写*/
public class SysUserController extends BaseController{
@RequestMapping("/query")
public String query(Model model){
model.addAttribute("sysUserList",sysUserService.query());
return "index";
}
@RequestMapping("/query1")
public String query1(Model model){
model.addAttribute("sysUserList",sysUserService.query());
return "redirect:/sysUser/query.jhtml";
}
}
package com.ytzl.ssm.service;
import java.util.List;
import com.ytzl.ssm.model.SysUser;
public interface SysUserService {
List query();
}
BaseServiceImpl:
package com.ytzl.ssm.service.impl;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.ytzl.ssm.mapper.SysUserMapper;
@Service("baseService")
public class BaseServiceImpl {
@Resource
protected SysUserMapper sysUserMapper;
}
ServiceImpl:
package com.ytzl.ssm.service.impl;
import java.util.List;
import org.springframework.stereotype.Service;
import com.ytzl.ssm.model.SysUser;
import com.ytzl.ssm.service.SysUserService;
@Service("sysUserService")/*接口名首字母小写*/
public class SysUserServiceImpl extends BaseServiceImpl implements SysUserService{
@Override
public List query(){
return sysUserMapper.query();
}
}
Mapper:
package com.ytzl.ssm.mapper;
import java.util.List;
import com.ytzl.ssm.model.SysUser;
public interface SysUserMapper {
/*查询所有*/
public List query();
}
Mapper.xml:
su.id id,
su.user_code userCode,
su.account account,
su.name name,
su.password password,
su.sex sex,
su.phone phone,
su.email email,
su.is_use isUse
以上是 Maven 搭建 SSM 框架的详细流程。(由于利用琐碎时间进行梳理,可能存在纰漏,仅供参考)。