由于Spring MVC是Spring框架中的一个模块,所以Spring MVC与Spring之间不存在整合的问题,只要引入相应JAR包就可以直接使用。因此SSM框架的整合就只涉及到了Spring与MyBatis的整合,以及Spring MVC与MyBatis的整合.
在第10章讲解Spring与MyBatis框架的整合时,我们是通过Spring实例化Bean,然后调用实例对象中的查询方法来执行MyBatis映射文件中的SQL语句的,如果能够正确查询出数据库中的数据,那么我们就认为Spring与MyBatis框架整合成功。同样,整合之后,如果我们可以通过前台页面来执行查询方法,并且查询出的数据能够在页面中正确显示,那么我们也可以认为三大框架整合成功
要实现SSM框架的整合,首先要准备这三个框架的JAR包,以及其他整合所需的JAR包。在第10章讲解Spirng与MyBatis框架整合时,已经介绍了Spring与MyBatis整合所需要的JAR包,这里只需要再加入Spring MVC的相关JAR包即可,具体如下:
spring-web-4.3.6.RELEASE.jar
spring-webmvc-4.3.6.RELEASE.jar
根据上述整合需求,SSM框架整合所需要的基本JAR包如下图所示:
1.创建一个名为ssmchapter17的Web项目,将整合所需的JAR包添加到项目的lib目录中,并发布到类路径下。
2.创建一个名为config的源文件夹(Source Folder),在该文件夹中分别创建数据库常量配置文件db.properties、Spring配置文件applicationContext.xml,以及MyBatis的配置文件mybatis-config.xml
db.properties:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root
jdbc.maxTotal=30
jdbc.maxIdle=10
jdbc.initialSize=5
applicationContext.xml:
mybatis-config.xml:
3.在config文件夹中,创建Spring MVC的配置文件springmvc-config.xml
4.在web.xml中,配置Spring的文件监听器、编码过滤器以及Spring MVC的前端控制器等信息。
contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
encoding
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
encoding
*.action
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc-config.xml
1
springmvc
/
1.在src目录下,创建cn.lctvu.po包,并在包中创建持久化类Customer
/**
* 客户持久化类
*/
public class Customer {
private Integer id; // 主键id
private String username; // 客户名称
private String jobs; // 职业
private String phone; // 电话
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getJobs() {
return jobs;
}
public void setJobs(String jobs) {
this.jobs = jobs;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
2.在src目录下,创建一个cn.lctvu.dao包,并在包中创建接口文件CustomerDao以及对应的映射文件CustomerDao.xml,编辑后分别如下所示:
CustomerDao.java:
/**
* Customer接口文件
*/
public interface CustomerDao {
/**
* 根据id查询客户信息
*/
public Customer findCustomerById(Integer id);
}
CustomerDao.xml
小提示:在前面环境搭建时,已经在配置文件applicationContext.xml中使用包扫描的形式加入了扫描包com.itheima.dao,所以在这里完成DAO层接口及映射文件开发后,就不必再进行映射文件的扫描配置了。
3.在src目录下,创建cn.lctvu.service包,然后在包中创建接口文件CustomerService,并在CustomerService中定义通过id查询客户的方法:
CustomerService:
public interface CustomerService {
public Customer findCustomerById(Integer id);
}
4.在src目录下,创建一个cn.lctvu.service.impl包,并在包中创建CustomerService接口的实现类CustomerServiceImpl:
@Service
@Transactional
public class CustomerServiceImpl implements CustomerService {
//注解注入CustomerDao
@Autowired
private CustomerDao customerDao;
//查询客户
public Customer findCustomerById(Integer id) {
return this.customerDao.findCustomerById(id);
}
}
5.在src目录下,创建一个cn.lctvu.controller包,并在包中创建用于处理页面请求的控制类CustomerController:
@Controller
public class CustomerController {
@Autowired
private CustomerService customerService;
/**
* 根据id查询客户详情
*/
@RequestMapping("/findCustomerById")
public String findCustomerById(Integer id,Model model) {
Customer customer = customerService.findCustomerById(id);
model.addAttribute("customer", customer);
//返回客户信息展示页面
return "customer";
}
}
6.在WEB-INF目录下,创建一个jsp文件夹,在该文件夹下创建一个用于展示客户详情的页面文件customer.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
客户信息
编号
名称
职业
电话
${customer.id}
${customer.username}
${customer.jobs}
${customer.phone}
7.测试
http://localhost:8080/chapter17/findCustomerById?id=1