Maven搭建SSM框架(详解)

准备工作:

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)

Maven搭建SSM框架(详解)_第1张图片

Create a simple project(Skip archetype selection)创建一个示例项目,

这里我们选择上图的这种,运用默认的本地空间,将项目建在“项目2017”的工作集中(可根据自己需要进行修改),

点击 next 继续。

Maven搭建SSM框架(详解)_第2张图片

如图进行选择,这个是 Maven 为我们提供的 Weabapp 的模版,选择 Next。

Maven搭建SSM框架(详解)_第3张图片

Group Id:组 Id(可以随便起),

Artifact Id:英文翻译为块 Id (这里指的是:项目的名称,今天搭建 SSM 框架,所以这里直接写成 SSM 了),

Version:版本号(不用处理),

Package:会自动生成(可根据需要进行修改),

点击 Finish 。

2.补全项目结构

这时候,可能创建的 SSM 项目会提示有错误,(错误包含在main-webapp-index.jsp中,先不用处理),

项目上右键 Build Path ,选择 Configure Build Path...,

Maven搭建SSM框架(详解)_第4张图片

我们会发现,有两个 missing 了,

首先介绍以下这三个,

main/java 我们通常用来放 java 代码,更通俗的说,这里可以存放 SSM 的 Controller、Service、Dao 层的代码;

main/resources 我们通常往这里放配置文件,包括 applicationContext-mvc.xml、applicationContext-public.xml、mybatis-config.xml、log4j.properties等等。

test/java 我们通常存放测试代码。

接下来,因为我们要搭建 SSM 框架,且要测试这个框架是否搭建成功,所以我们先将这几个文件夹补全。

补全方法:在指定的路径下,创建对应名称的文件夹。

Maven搭建SSM框架(详解)_第5张图片

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搭建SSM框架(详解)_第6张图片

直接将下面 Maven 中的代码复制到 pom.xml 中即可。

(选中项目 Ctrl + Shift + T 可以搜索 Java 类,我们搜索JSON,打开,我们会看到源码,

平时我们打的jar包是看不到的,但是通过Maven,他会自动下载,我们看源码会更方便)

项目发布一下,jar 包就会到 Tomcat 中,项目中 Maven Dependmencies 中可以看到我们添加的所有 jar 包。

Maven搭建SSM框架(详解)_第7张图片

我们这里指定JDK,我们可以看到以前的是 J2SE-1.5,我们要改成1.8的,之所以在这里配置,是因为一会再更新的时候如果没有这个配置,还会自动变回成原来的。

更新 Maven,用 Maven 构建出来的 JDK1.8。

项目右键 Maven - Update Project...

Maven搭建SSM框架(详解)_第8张图片

这里面我们注意下面的勾选,选择上更新我们的依赖,更新创建 pomx.xml,更新配置文件,清理项目。

点击 OK,完成该步的操作,此时我们会发现我们的JDK 变成 1.8 了。

Maven搭建SSM框架(详解)_第9张图片

以上为Jar 包的配置。

4.更新版本到3.0

接下来我们看一下 WEB-INF 下面的 Web.xml,这里面的结构和我们看的不太一样,比较老,要改成新一点的。




  Archetype Created Web Application


这里还是2.3的,我这里用的是3.0,(项目右键 Properties - Project Facets 可以看到版本,一会我们会修改成3.0)

以下是修改成 3.0之后的 web.xml



  名称
  
  	index.jsp
  

我们直接把之前有错的 index.jsp 删掉,在 webapp 下面新建一个 file 叫 index.jsp 即可。此时我们可以运行一下,这个index的页面,就可以正常访问了。

我们找到项目所在路径下的 .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中进行配置)




1.1.3:添加 bean,id 为 data (class 为 java.util.Date,写这个只是为了进行后面的测试)


	
	//测试: 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:集成 MyBatis 和Spring

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";
		
	}

}

Service:

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 框架的详细流程。(由于利用琐碎时间进行梳理,可能存在纰漏,仅供参考)。


你可能感兴趣的:(框架)