本文介绍: 创建名称为JdbcConfig的类,用于获取数据库连接信息并定义创建数据源的对象方法,并定义getDataSource()方法,用于创建DruidDataSource对象。id=1,页面显示效果如图所示。6.创建名称为BookService的业务层接口,在BookService接口中定义findBookById()方法,通过id获取对应的Book信息。4.创建名称为BookMapper的持久层接口,在BookMapper接口中定义findBookById()方法,通过图书id获取对应的图书信息。

Java后端开发——SSM整合实验

一、常用方式整合SSM框架

1.搭建数据库环境:MySQL数据库中创建一个名称为ssm的数据库,在该数据库中创建一个名称为tb_book的表

CREATE DATABASE ssm;
USE ssm;
CREATE TABLE `tb_book`  ( 
  `id` int(11) ,
  `name` varchar(32) ,
  `press` varchar(32) ,
  `author` varchar(32) ); 
INSERT INTO `tb_book` VALUES 
(1, 'Java EE企业级应用开发教程', '人民邮电出版社', '黑马程序员');

在这里插入图片描述
在这里插入图片描述
2.引入项目SSM依赖库
在这里插入图片描述
3.创建实体类:创建名称为Book的实体类

package com.javaweb.domain;

public class Book {
private Integer id; //图书id
private String name; //图书名称
private String press; //出版社
private String author; //作者
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 String getPress() {
return press;
}
public void setPress(String press) {
this.press = press;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
} 
}

在这里插入图片描述
4.创建名称为BookMapper的持久层接口,在BookMapper接口中定义findBookById()方法,通过图书id获取对应的图书信息。

package com.javaweb.dao;

import com.javaweb.domain.Book;

public interface BookMapper {
public Book findBookById(Integer id);
}

在这里插入图片描述
5.创建BookMapper接口对应的映射文件BookMapper.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">
<mapper namespace="com.javaweb.dao.BookMapper">
<!--根据id查询图书信息 -->
<select id="findBookById" parameterType="int" resultType="com.javaweb.domain.Book">
select * from tb_book where id = #{id}
</select>
</mapper>

在这里插入图片描述
6.创建名称为BookService的业务层接口,在BookService接口中定义findBookById()方法,通过id获取对应的Book信息。

package com.javaweb.service;

import com.javaweb.domain.Book;

public interface BookService {
public Book findBookById(Integer id);

}

在这里插入图片描述
7.建BookService接口的业务层实现类BookServiceImpl。BookServiceImpl类实现BookService接口的findBookById()方法。

package com.javaweb.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.javaweb.dao.BookMapper;
import com.javaweb.domain.Book;
import com.javaweb.service.BookService;

@Service
public class BookServiceImpl implements BookService {
	
	@Autowired
	private BookMapper bookMapper;


	@Override
	public Book findBookById(Integer id) {
		return bookMapper.findBookById(id);
	}

}

在这里插入图片描述
8.创建名称为BookController的类。在BookController类中注入一个BookService对象,并且定义一个名称为findBookById()的方法。

package com.javaweb.controller;

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 com.javaweb.domain.Book;
import com.javaweb.service.BookService;

@Controller
public class BookController {
	@Autowired
	private BookService bookService;
	
	
	@RequestMapping("/book")
	public String findBookById(Integer id,Model model) {
		Book book = bookService.findBookById(id);
		model.addAttribute("book", book);
		return "book";
	}
}

在这里插入图片描述
9.在src/main/java下面创建application.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">
<!-- 1.开启注解扫描, 扫描包 -->
<context:component-scan base-package="com.javaweb" />
<!-- 2.引入属性文件 -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 3.数据源 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!--4.创建SqlSessionFactory对象 -->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
</bean>
<!--5.扫描Dao包,创建动态代理对象, 会自动存储到spring IOC容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--指定要扫描的dao的包 -->
<property name="basePackage" value="com.javaweb.dao" />
</bean>
</beans>

在这里插入图片描述
10.创建数据源属性文件jdbc.properties

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
jdbc.username=root
jdbc.password=root

在这里插入图片描述
11.在项目的web.xml文件中配置Spring的监听器来加载Spring容器及Spring的配置文件。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
id="WebApp_ID" version="4.0">
<display-name>ssm</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>default.htm</welcome-file>
</welcome-file-list>

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:application.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<filter>
<filter-name>encoding</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>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

</web-app>

在这里插入图片描述
12.在项目的srcmainresources目录下创建Spring MVC的配置文件spring-mvc.xml。spring-mvc.xml文件配置完成之后,在web.xml中配置Spring MVC的前端控制器,并在初始化前端控制器时加载Spring MVC的配置文件。

<?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"
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/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan
base-package="com.javaweb.controller" /> <!-- 声明注解扫描 -->
<mvc:default-servlet-handler /> <!-- 启用默认Servlet处理静态资源 -->
<mvc:annotation-driven /> <!-- 开启 SpringMVC 的注解模式 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 视图解析器 -->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>

在这里插入图片描述
13.整合测试
(1)在webapps/WEB-INF/jsp下创建名称为book.jsp的文件,用于展示处理器返回的图书信息。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>图书信息查询</title></head><body>
<table border="1">
<tr><th>图书id</th><th>图书名称</th>
       <th>出版社</th><th>作者</th></tr>
<tr><td>${book.id}</td><td>${book.name}</td>
        <td>${book.press}</td>
        <td>${book.author}</td></tr>
</table></body>
</html>

在这里插入图片描述
将项目部署到Tomcat中,启动项目,在浏览器中访问地址http://localhost:8080/ssm/book?id=1来进行图书查询,页面显示效果如图所示。
在这里插入图片描述
在这里插入图片描述
从图中所示的信息可以看出,程序成功查询到了id为1的图书信息。表明Controller层成功将Service层获取的图书信息返回给页面了,由此可以得出SSM框架整合成功。

二、纯注解方式整合SSM框架

接下来,将项目中的XML配置文件删除,使用纯注解的配置类依次替换对应的XML文件内容,以完成
纯注解的SSM框架整合。具体实现步骤如下所示。
创建名称为JdbcConfig的类,用于获取数据库连接信息并定义创建数据源的对象方法,并定义getDataSource()方法,用于创建DruidDataSource对象。

@PropertySource("classpath:jdbc.properties")
public class JdbcConfig {
    // 下面为使用注入的形式。定义dataSource的bean,省略
    @Value("${jdbc.driverClassName}")	private String driver;
    @Value("${jdbc.url}")	private String url;
    @Value("${jdbc.username}")	private String userName;
    @Value("${jdbc.password}")	private String password;
}

在这里插入代码片在这里插入图片描述
创建名称为MyBatisConfig的类,在MyBatisConfig类中定义getSqlSessionFactoryBean()方法,用于创建SqlSessionFactoryBean对象并返回。

public class MyBatisConfig {
    // 定义MyBatis的核心连接工厂bean
    @Bean
    public SqlSessionFactoryBean getSqlSessionFactoryBean(
                                       @Autowired DataSource dataSource){
        SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
        ssfb.setDataSource(dataSource); return ssfb;	}
    // 定义MyBatis的映射扫描,省略
}

创建名称为SpringConfig的类作为项目定义Bean的源头,并扫描Service层对应的包。

@Configuration
@Import({MyBatisConfig.class,JdbcConfig.class})
// 等同于<context:component-scan base-package="com.itheima.service">
@ComponentScan(value = "com.itheima.service")
// 将MyBatisConfig类和JdbcConfig类交给Spring管理
public class SpringConfig {
}

创建名称为SpringMvcConfig的类作为Spring MVC的配置类,在配置类中指定Controller层的扫描路径。

package com.javaweb.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
//等同于<context:component-scan base-package="com.itheima.controller"/>
@ComponentScan("com.javaweb.controller")
//等同于<mvc:annotation-driven/>,还不完全相同
@EnableWebMvc
public class SpringMvcConfig {
}

在这里插入图片描述
创建名称为ServletContainersInitConfig的类,继承AbstractAnnotationConfigDispatcherServletInitializer抽象类,重写抽象类的方法。用于替代之前web.xml文件配置的信息 ,初始化Servlet容器时加载指定初始化的信息。

public class ServletContainersInitConfig extends
                AbstractAnnotationConfigDispatcherServletInitializer {
    // 加载Spring配置类中的信息,初始化Spring容器
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};	}
    // 加载Spring MVC配置类中的信息,初始化Spring MVC容器
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class}; }
    // 配置DispatcherServlet的映射路径
    protected String[] getServletMappings() { return new String[]{"/"}; }}

启动chapter14项目,在浏览器中访问图书信息查询地址,地址为http://localhost:8080/book?id=1,页面显示效果如图所示。
在这里插入图片描述
在这里插入图片描述
从图中所示的信息可以看出,程序成功查询到了id为1的图书信息。表明Controller将Service获取的图书信息成功返回给页面了,由此可以得出纯注解的SSM框架整合成功。

原文地址:https://blog.csdn.net/Myx74270512/article/details/135454288

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_53390.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注