继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

springmvc+mybatis

皈依舞
关注TA
已关注
手记 99
粉丝 13
获赞 37

springmvc基础知识

什么是springmvc?

springmvc框架原理

    处理器映射器、处理器适配器、视图解析器

springmvc入门程序

    目的:对前端控制器、处理器映射器、处理器适配器、视图解析器

    非注解的处理器映射器、处理器适配器

    注解的处理器映射器、处理器适配器

什么是springmvc?

Springmvc是spring框架的一个模块,是一个基于mvc的web框架

什么是mvc?

mvc是一个设计模式

用户请求  (request请求)-> C(控制器)Controller  

           response响应<-                       请求模型进行处理

                                                处理结果返回

渲染视图(将模型数据填充至request域)    M(模型)pojo、action、service、dao

                    V(视图)jsp、freemarker、work、pdf

什么是springmvc?

用户请求 (request请求)  ->  前端控制器(DispatcherServlet)   (请求查找handler)->   处理器映射器(HandlerMapping)

                                                                <-(返回一个执行链

                                                                    HandlerExcecutionChain{

                                                                        HandlerInterceptor

                                                                        Handler

                                                                    }

                                                                )

                                        请求处理器适配器执行Handler

                                        返回ModelAndView

                        请求进行视图解析

                        返回view

        视图渲染

        视图              视图解析器                                          Handler 处理器

(jsp、freemarker...)                                                      (事实是一个Controller)

                                                                            执行Hanler

                                                                            返回ModelAndView

                                        处理器适配器(HandlerAdapter)执行Handler

步骤:

1.发出请求到前端控制器DispatcherServlet

2.前端控制器请求HandlerMapping查找Handler(可以根据xml配置、注解进行查找)

3.处理器映射器HandlerMapping向前端控制器返回Handler

4.前端控制器调用处理器适配器执行Handler

5.处理器适配器执行Handler

6.处理器给处理器适配器返回ModelAndView

7.处理器适配器向前端控制器返回ModelAndView

8.前端控制器请求视图解析器解析(根据逻辑视图名解析成真正的视图)

9.视图解析器向前端控制器返回view

10.前端控制器渲染view(渲染视图(将模型数据填充至request域))

11.前端控制器向用户响应

springmvc入门

1.配置环境

jdk1.8 eclipse

2.springmvc版本4.2

3.非注解的处理器映射器和处理器适配器

3.1.处理器设配器

3.1版本之前用org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

3.1版本之后用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

3.2.处理器映射器

3.1版本之前用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping

3.1版本之后用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping

4.注解的处理器映射器和处理器适配器

4.1.<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />

<!--使用mvc:annotation-driven代替上邊註解映射器和註解適配器配置

    mvc:annotation-driven默認加載很多的參數綁定方法,比如json轉換解析器就默認加載了,

    如果使用mvc:annotation-driven不用配置上邊的RequestMappingHandlerAdapter和RequestMappingHandlerMapping

    實際開發時使用mvc:annotation-driven

-->

<mvc:annotation-driven></mvc:annotation-driven>

4.2.在spring容器中加载handler

<!-- 可以掃描controller、service,指定controller的包名 -->

<context:component-scan base-package="com.app.chx.controller"></context:component-scan>

4.3.在handler中使用注解

@Controller

public class GoodsController {

    @RequestMapping(value = "queryGoods")

    public ModelAndView queryGoods() {

        ModelAndView modelAndView = new ModelAndView();

        modelAndView.addObject("value", "數據");

        modelAndView.setViewName("/WEB-INF/jsp/items/items_controller.jsp");

        return modelAndView;

    }

}

5.源码跟踪

通过前端控制器源码分析springmvc的执行过程

1.前端控制器接收请求

执行doDispatch

2.前端控制器请求HandlerMapping查找Handler

getHandler();获取HandlerExecutionChain

3.调用处理器适配器执行handler,得到ModelAndView

ha.handler(processedRequest, response, mappedHandler.getHandler());

4.视图渲染,将model数据填充到request域

视图解析,得到view

view = resolveViewName(mv.getViewName(), mv.getModelInternal(), locale, request);

调用view的渲染方法,将model数据填充到request域

渲染方法:

view.render(mv.getModelInternal(), request, response);

执行了exposeModelAsRequestAttributes方法遍历model的map集合将key-value填充至request中

入门程序

1.配置view前缀和后缀

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" >

    <property name="prefix" value="/WEB-INF/jsp/" />

    <property name="suffix" value=".jsp" />

</bean>

2.搭建工程

com.itcast.ssm.controller 表现层

com.itcast.ssm.mapper dao层(mybatis)

com.itcast.ssm.po 

com.itcast.ssm.service.impl 接口和实现

springmvc和mybatis整合

springmvc和mybatis的系统架构

表现层(handler)

springmvc

业务层(service接口)                          spring将各层进行整合,通过spring管理持久层的mapper(相当于dao接口)

spring                                       通过spring管理业务层service,service中可以调用mapper接口,通过spring管理表现层handler,

                                             handler可以调用service接口,mapper、service、handler都是javabean

持久层(mapper)

mybatis

数据库

mysql

3.整合dao

spring和mybatis整合,通过spring管理mapper接口

使用mapper的扫描器自动扫描mapper接口

3.1.在config文件夹创建包名为:mybatis->sqlMapConfig.xml

<?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配置,根据需要添加(二级缓存) -->

    <!-- 配置别名 -->

    <typeAliases>

        <!-- 批量扫描别名 -->

        <package name="com.itcast.ssm.po" />

    </typeAliases>

    <!-- 配置mapper

        由于使用spring和mybatis的整合包进行mapper扫描,这里不需要配置了.

        必须遵循:mapper.xml和mapper.java文件同名且在同一个目录

     -->

    <!-- <mappers>

        

    </mappers> -->

</configuration>

3.2.在config文件夹创建包名为:spring->springApplication-dao.xml

配置springApplication-dao.xml文件的步骤:

3.2.1.加载db.properties文件中的内容

3.2.2.配置数据源

3.2.3.配置session工厂

3.2.4.自动扫描所有的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:tx="http://www.springframework.org/schema/tx"

    xmlns:aop="http://www.springframework.org/schema/aop" 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

        http://www.springframework.org/schema/tx

        http://www.springframework.org/schema/tx/spring-tx.xsd

        http://www.springframework.org/schema/aop

        http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!-- 加载db.properties文件中的内容,db.properties文件中key命名要有一定的特殊规则 -->

    <context:property-placeholder location="classpath:db.properties" />

    <!-- 配置数据库,dbcp -->

    <!-- 配置数据源 -->

    <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource"

        destroy-method="close">

        <property name="driverClassName" value="${jdbc.driverClass}" />

        <property name="url" value="${jdbc.jdbcUrl}" />

        <property name="username" value="${jdbc.user}" />

        <property name="password" value="${jdbc.password}" />

        <property name="maxActive" value="30" />

        <property name="maxIdle" value="5" />

    </bean>

    <!-- 配置session工厂 -->

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

        <property name="dataSource" ref="datasource"></property>

        <!-- 加载mybatis.cfg.xml文件 -->

        <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml"></property>

        <!-- 自动扫描需要定义类别名的包,将包内的JAVA类的类名作为类别名 -->

        <!-- <property name="typeAliasesPackage" value="com.app.entity"></property> -->

    </bean>

    <!-- 自动扫描所有的Mapper接口与文件 -->

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

        <!-- 扫描包路径,如果需要扫描多个包,中间使用半角逗号,隔开 -->

        <property name="basePackage" value="com.itcast.ssm.mapper"></property>

        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />

    </bean>

</beans>

4.整合service

原文链接:http://www.apkbus.com/blog-810021-61733.html

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP