SSM整合

SSM整合

经过一段时间的学习,MyBatis、Spring、SpringMVC已经告一段落,下面将根据学习的内容,进行整合,制作一个最基础的SSM网站后端结构
下面是构建其的步骤:

一、构建数据库表

二、建立项目,导入所需依赖

三、建立MVC层次结构

  • dao层——操作数据库
  • service层——业务逻辑层,调用dao层,被controller调用,用于书写业务
  • controller层——控制层,负责页面跳转,数据传输
  • pojo——存放表的实体类
  • util——工具层
  • 。。。。。。

在这里插入图片描述

四、建立数据库表对应的实体类

五、配置文件

1.web.xml

作用:
(1)用于拦截前端发来的请求,转发至前端控制器——DispatcherServlet,并配置其加载优先级、关联的配置文件
​(2)设置spring内置的过滤器

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>springmvc</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>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
<!--  spring过滤器  -->
    <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>
</web-app>

2.applicationContext.xml

作用:

  1. mvc:annotation-driven默认会帮我们注册两个类:DefaultAnnotationHandlerMapping 和
    AnnotationMethodHandlerAdapter,分别为HandlerMapping的实现类和HandlerAdapter的实现类
    • HandlerMapping:手动注册bean:识别id;扫描包注册:识别@RequestMapping 注解;并注册到请求映射表

    • HandlerAdapter:处理请求的适配器,确定调用哪个类的哪个方法,并且构造方法参数,返回值

  2. mvc:default-servlet-handler:对于所有对静态资源的请求全部不进行处理
  3. context:component-scan:扫描包,将扫描到的组件注册到spring容器中
  4. InternalResourceViewResolver: 视图解析器,跳转加前缀和后缀(重定向和请求转发不走试图解析器)
<?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
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--  扫描包  -->
    <context:component-scan base-package="com.mvc.controller"/>
<!--  注解驱动  -->
    <mvc:annotation-driven/>
<!--  静态资源过滤  -->
    <mvc:default-servlet-handler/>
<!--  视图解析器  -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

3.db.properties、spring-dao.xml

(1)数据库连接配置文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mvcbooks?useSSL=true&amp;userUnicode=true&amp;characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456

(2)dao层配置文件

引入外部资源文件、加载c3p0连接池(也可用JDBC)生成SqlSessionFactory,通过自动注入的方式,动态注入到dao层的指定Mapper文件中

<?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
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--  引入外部配置资源  -->
    <context:property-placeholder location="db.properties"/>
<!--  配置c3p0连接  -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="jdbc.driver"/>
        <property name="jdbcUrl" value="jdbc.url"/>
        <property name="user" value="jdbc.username"/>
        <property name="password" value="jdbc.password"/>
<!--    设置连接数    -->
        <property name="maxPoolSize" value="50"/>
        <property name="minPoolSize" value="5"/>
    </bean>
<!--  获取SqlSessionFactory  -->
    <bean id="bean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--    传入连接池    -->
        <property name="dataSource" ref="dataSource"/>
        <!-- Mybatis配置文件 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>

<!--  Dao扫描包,动态注入SqlSession  -->
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--注入SessionFactory-->
        <property name="sqlSessionFactoryBeanName" value="bean"></property>
        <!--扫描包-->
        <property name="basePackage" value="com.mvc.dao"/>
    </bean>
</beans>

4.mybatis-config.xml

可使用spring配置文件完全替代,但为使其层次分明,在此配置这几项专用配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--  setting设置  -->
    <settings>
        <!--    缓存    -->
        <setting name="cacheEnabled" value="true"/>
    </settings>
<!--  别名  -->
    <typeAliases>
        <package name="com.mvc.pojo"/>
    </typeAliases>
<!-- 注册 -->
    <mappers>
        <mapper class="com.mvc.dao.UserMapper"/>
    </mappers>
</configuration>

5.spring-service.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">
<!--  配置service,针对事务配置  -->

<!--  1.扫描包  -->
    <context:component-scan base-package="com.mvc.service"/>
</beans>

六、后端业务建立

顺序:从底层忘高层进行编写

1.Dao层:Mapper接口、Mapper查询语句

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mvc.dao.UserMapper">
    <select id="selectAll" resultType="user">
        select * from `user`;
    </select>
<!--  查询单个用户  -->
    <select id="selectOne" resultType="user">
        select `user_name`,`password` from `user` where `user_name`=#{userName};
    </select>
</mapper>
public interface UserMapper {
    //查询单个用户
    User selectOne(@Param("userName") String name);
}

2.service层,编写业务逻辑

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserMapper userMapper;
    @Override
    public User selectOne(String name) {
        return userMapper.selectOne(name);
    }
}

3.controller层/测试

controller层可以使用注解@autowird,自动注入UserServiceImpl进行使用

@Controller
public class Test {
    @Autowired
    UserService userService;
    @RequestMapping("/test")
    public String test(@RequestParam("username") String name,Model model){
        ......
    }
}

测试类使用ApplicationContext从容器中取出对象

public class Testt {
    @Test
    public void test01(){
        ApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext.xml");
        BooksService bean = ioc.getBean("booksServiceImpl", BooksService.class);
		......
    }
}

至此,整合完成

总结:SSM框架极大的简化了我们开发一个网站的流程,其建立的基础,Mybatis、Spring、SpringMVC

优点:简化开发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值