32.SSM框架整合

1.整合环境搭建

1.1 整合思路

由于Spring MVC是Spring框架中的一个模块,所以Spring MVC与Spring之间不存在整合的问题,只要引入相应JAR包就可以直接使用。因此SSM框架的整合就只涉及到了Spring与MyBatis的整合,以及Spring MVC与MyBatis的整合.
在第10章讲解Spring与MyBatis框架的整合时,我们是通过Spring实例化Bean,然后调用实例对象中的查询方法来执行MyBatis映射文件中的SQL语句的,如果能够正确查询出数据库中的数据,那么我们就认为Spring与MyBatis框架整合成功。同样,整合之后,如果我们可以通过前台页面来执行查询方法,并且查询出的数据能够在页面中正确显示,那么我们也可以认为三大框架整合成功

1.2 准备所需JAR包

要实现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包如下图所示:
32.SSM框架整合_第1张图片

1.3 编写配置文件

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
	
	/

2.整合应用测试

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

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