SSM整合(详细步骤)
整合ssm框架,首先第一步就是创建maven环境,导入相关依赖,搭建整体包结构。
实体类
package com.dyh.pojo;
/**
* 用户实体类
*/
public class User {
private Integer id; //用户编号
private String name; //姓名
private Integer age; //年龄
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
UserDao接口
package com.dyh.dao;
import com.dyh.pojo.User;
import java.util.List;
/**
* 用户dao层接口
*/
public interface UserDao {
/**
* 查询所有用户信息
*
* @return 用户信息集合
*/
List<User> findAllUsers();
/**
* 保存用户信息
*
* @param user 用户信息
*/
void saveUser(User user);
}
UserService接口和实现类
//------------------------------------接口------------------------------------
package com.dyh.service;
import com.dyh.pojo.User;
import java.util.List;
/**
* 用户service层接口
*/
public interface UserService {
/**
* 查询所有用户信息
*
* @return 用户信息集合
*/
List<User> findAllUsers();
/**
* 保存用户信息
*
* @param user 用户信息
*/
void saveUser(User user);
}
//-----------------------------------实现类-----------------------------------
package com.dyh.service.impl;
import com.dyh.pojo.User;
import com.dyh.service.UserService;
import java.util.List;
/**
* 用户service层接口实现
*/
public class UserServiceImpl implements UserService {
/**
* 查询所有用户信息
*
* @return 用户信息集合
*/
@Override
public List<User> findAllUsers() {
return null;
}
/**
* 保存用户信息
*
* @param user 用户信息
*/
@Override
public void saveUser(User user) {
}
}
UserController
package com.dyh.controller;
import com.dyh.pojo.User;
/**
* 用户Controller层功能实现
*/
public class UserController {
/**
* 获取所用用户信息
*
* @return 用户信息集合
*/
public String findAllUsers() {
return null;
}
/**
* 保存用户信息
*
* @param user 用户信息
* @return 返回保存成功字符串
*/
public String save(User user) {
return null;
}
}
搭建spring环境
首先配置spring环境,毕竟spring是轻量级一站式框架,可以整合几乎所有的框架。
首先创建applicationContext.xml用于配置spring环境。
随后实现ioc依赖注入和事务配置
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--开启注解扫描-->
<context:component-scan base-package="com.dyh"/>
</beans>
在service实现类和controller类上加上@Service和@Controller注解,交给spring管理。随后在UserService里打印一句话,在测试类中加载spring环境调用UserController下的service层方法,可以正确输出
//-----------------------service层的findAllUsers方法-----------------------
@Override
public List<User> findAllUsers() {
System.out.println("整合测试");
return null;
}
//-----------------------ontroller层方法-----------------------
@Autowired
private UserService userService;
/**
* 获取所用用户信息
*
* @return 用户信息集合
*/
public String findAllUsers() {
userService.findAllUsers();
return null;
}
测试类
import com.dyh.controller.UserController;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestDemo {
@Test
public void test01(){
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserController userController = app.getBean(UserController.class);
userController.findAllUsers();
}
}
运行结果
能过正常输出,说明service层已经交个spring管理了。
整合spring-mvc
接下来就可以整合spring-mvc了。首先先从web.xml开始配置。总共需要配置前端控制器,字符集过滤器。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<!--前端控制器-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--字符集过滤器-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
web.xml配置好以后就可以配置spring-mvc相关的配置了,虽然spring-mvc可以和spring无缝配置,但是从功能来说,我们尽量还是将spring配置和spring-mvc的配置分开成两个文件进行配置。
创建spring-mvc.xml配置文件,配置视图解析器,开启mvc相关注解驱动,开始释放静态资源,
spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--开启mvc相关注解-->
<mvc:annotation-driven/>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!--开启释放静态资源-->
<mvc:default-servlet-handler/>
</beans>
随后在applicationContext.xml中加上这句话用来关联spring-mvc配置文件
<!--关联spring-mvc配置文件-->
<import resource="classpath:spring-mvc.xml"/>
在controller的findAllUsers()方法上加上@RequestMapping("/findAll")指定访问路径,配置好tomcat,启动测试
可以正常启动tomcat,访问http://localhost:8080/findAll 后控制台也打印出测试数据
到这里springmvc也整合完毕
整合mybatis
最后整合mybatis也是因为mybatis操作是最复杂的,涉及的依赖也是最多的。
我们先在applicationContext.xml中增加以下配置
<!--导入数据库配置文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--配置数据源连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!--配置mybatis整合-->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.dyh.pojo"/>
</bean>
<!--配置接口映射-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.dyh.dao"/>
</bean>
<!--配置事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--配置事务具体配置-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<!--配置事务aop增强-->
<aop:config>
<aop:advisor advice-ref="txAdvice" pointcut="execution(* com.dyh.service.impl.*.*(..))"/>
</aop:config>
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring
jdbc.username=root
jdbc.password=root
配置UserDao的xml映射sql配置
UserDao.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--用户dao接口映射文件-->
<mapper namespace="com.dyh.dao.UserDao">
<!--查询所有用户信息-->
<select id="findAllUsers" resultType="user">
select * from user
</select>
<!--插入用户信息-->
<update id="saveUser" parameterType="user">
insert into user values (null ,#{name},#{age})
</update>
</mapper>
在service注入dao层依赖,controller层注入service层依赖,并调用对应方法。
UserService实现类
package com.dyh.service.impl;
import com.dyh.dao.UserDao;
import com.dyh.pojo.User;
import com.dyh.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 用户service层接口实现
*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
/**
* 查询所有用户信息
*
* @return 用户信息集合
*/
@Override
public List<User> findAllUsers() {
return userDao.findAllUsers();
}
/**
* 保存用户信息
*
* @param user 用户信息
*/
@Override
public void saveUser(User user) {
userDao.saveUser(user);
}
}
UserController
package com.dyh.controller;
import com.dyh.pojo.User;
import com.dyh.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
/**
* 用户Controller层功能实现
*/
@Controller("userController")
public class UserController {
@Autowired
private UserService userService;
/**
* 获取所用用户信息
*
* @return 用户信息集合
*/
@RequestMapping("/findAll")
public String findAllUsers(Model model) {
List<User> userList = userService.findAllUsers();
model.addAttribute("userList",userList);
return "list";
}
/**
* 保存用户信息
*
* @param user 用户信息
* @return 返回保存成功字符串
*/
@ResponseBody
@RequestMapping(value = "/save",produces = "text/plain;charset=utf-8")
public String save(User user) {
userService.saveUser(user);
return "保存成功!";
}
}
list.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<table>
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
</tr>
<c:forEach items="${userList}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.age}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
随后启动服务器,打开postman
在来试试保存用户的接口
查看数据库中数据,也成功插入。
至此ssm整合完成。