zoukankan      html  css  js  c++  java
  • Spring MVC 复习笔记02

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

        1.1 非注解的处理器映射器

              处理器映射器:org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping

              另一个映射器:org.springframework.web.servlet.handler.SimpleUrlHandlerMapping

              

             多个映射器可以并存,前端控制器判断url能让哪些映射器映射,就让正确的映射器处理。

         1.2 非注解的处理器适配器

               org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter 要求编写的Handler实现 Controller接口。

               org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter 要求编写的Handler实现 HttpRequestHandler接口。

    2. DispatcherSerlvet.properties

        

        前端控制器从上边的文件中加载处理映射器、适配器、视图解析器等组件,如果不在springmvc.xml中配置,使用默认加载的。

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

        在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping注解映射器。

        在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器。

        在spring3.1之前使用org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter注解适配器。

        在spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter注解适配器。

        3.1 配置注解映射器和适配器。

             

            <!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置   mvc:annotation-driven默认加载很多的参数绑定方法,

              比如json转换解析器就默认加载了,如果使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter

              实际开发时使用mvc:annotation-driven -->

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

       3.2 开发注解Handler

             使用注解的映射器和注解的适配器。(注解的映射器和注解的适配器必须配对使用)         

    //使用Controller标识 它是一个控制器
    @Controller
    public class ItemsController3 {
        
        //商品查询列表
        //@RequestMapping实现 对queryItems方法和url进行映射,一个方法对应一个url
        //一般建议将url和方法写成一样
        @RequestMapping("/queryItems")
        public ModelAndView queryItems()throws Exception{
            
            //调用service查找 数据库,查询商品列表,这里使用静态数据模拟
            List<Items> itemsList = new ArrayList<Items>();
            //向list中填充静态数据
            
            Items items_1 = new Items();
            items_1.setName("联想笔记本");
            items_1.setPrice(6000f);
            items_1.setDetail("ThinkPad T430 联想笔记本电脑!");
            
            Items items_2 = new Items();
            items_2.setName("苹果手机");
            items_2.setPrice(5000f);
            items_2.setDetail("iphone6苹果手机!");
            
            itemsList.add(items_1);
            itemsList.add(items_2);
            
            //返回ModelAndView
            ModelAndView modelAndView =  new ModelAndView();
            //相当 于request的setAttribut,在jsp页面中通过itemsList取数据
            modelAndView.addObject("itemsList", itemsList);
            
            //指定视图
            modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
            
            return modelAndView;
            
        }
    View Code

       3.3 在spring容器中加载Handler         

    <!-- 对于注解的Handler可以单个配置
        实际开发中建议使用组件扫描
         -->
        <!-- <bean class="cn.itcast.ssm.controller.ItemsController3" /> -->
        <!-- 可以扫描controller、service、...
        这里让扫描controller,指定controller的包
         -->
        <context:component-scan base-package="cn.itcast.ssm.controller"></context:component-scan>
    View Code

    5. 入门程序小结

        通过入门程序理解springmvc前端控制器、处理器映射器、处理器适配器、视图解析器用法。

        前端控制器配置:

        第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析

        第二种:/,所以访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析使用此种方式可以实现 RESTful风格的url

        处理器映射器:对标记@Controller类中标识有@RequestMapping的方法进行映射。在@RequestMapping里边定义映射的url。使用注解的映射器不用在xml中配置url和Handler的映射关系。

        处理器适配器:注解处理器适配器和注解的处理器映射器是配对使用。理解为不能使用非注解映射器进行映射。

        视图解析器配置前缀和后缀:

         

         使用上面配置后程序中不用指定前缀和后缀: 

             

    6. springmvc和mybatis整合

        6.2 整合思路

           第一步:整合dao层

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

             使用mapper的扫描器自动扫描mapper接口在spring中进行注册。

          第二步:整合service层

             通过spring管理 service接口。

             使用配置方式将service接口配置在spring配置文件中。

             实现事务控制。

          第三步:整合springmvc

             由于springmvc是spring的模块,不需要整合。

       6.4 整合dao

             mybatis和spring进行整合。

            6.4.1 sqlMapConfig.xml

                       mybatis自己的配置文件。

                       

             6.4.2 applicationContext-dao.xml

                      配置:

                      数据源: SqlSessionFactory

                      mapper扫描器     

                      

         6.4.3 逆向工程生成po类及mapper(单表增删改查)

                  

             将生成的文件拷贝至工程 中。

          6.4.4 手动定义商品查询mapper

                   针对综合查询mapper,一般情况会有关联查询,建议自定义mapper

                   6.4.4.1 ItemsMapperCustom.xml

                               sql语句:SELECT * FROM items  WHERE items.name LIKE '%笔记本%'

                    

               6.4.4.2 ItemsMapperCustom.java

               

         6.5 整合service

              让spring管理service接口。

              6.5.1 定义service接口

              

              

             6.5.2 在spring容器配置service(applicationContext-service.xml)

                      创建applicationContext-service.xml,文件中配置service。

                      

             6.5.3 事务控制(applicationContext-transaction.xml)

                      在applicationContext-transaction.xml中使用spring声明式事务控制方法。

                      

         6.6 整合springmvc

               6.6.1 springmvc.xml

                        创建springmvc.xml文件,配置处理器映射器、适配器、视图解析器。

                        自动扫描:<context:component-scan base-package="cn.itcast.ssm.controller"></context:component-scan>

    <!-- 可以扫描controller、service、...
        这里让扫描controller,指定controller的包
         -->
        <context:component-scan base-package="cn.itcast.ssm.controller"></context:component-scan>
        
            
        <!--注解映射器 -->
        <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> -->
        <!--注解适配器 -->
        <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> -->
        
        <!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置
        mvc:annotation-driven默认加载很多的参数绑定方法,
        比如json转换解析器就默认加载了,如果使用mvc:annotation-driven不用配置上边的RequestMappingHandlerMapping和RequestMappingHandlerAdapter
        实际开发时使用mvc:annotation-driven
         -->
        <mvc:annotation-driven></mvc:annotation-driven>
        
    
        <!-- 视图解析器
        解析jsp解析,默认使用jstl标签,classpath下的得有jstl的包
         -->
        <bean
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <!-- 配置jsp路径的前缀 -->
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <!-- 配置jsp路径的后缀 -->
            <property name="suffix" value=".jsp"/>
        </bean>
    View Code

             6.6.2 配置前端控制器

                        参考入门程序。

              6.6.3 编写Controller(就是Handler)

               

           6.6.4 编写jsp

           

       6.7 加载spring容器

            将mapper、service、controller加载到spring容器中。

             

          建议使用通配符加载上边的配置文件。

          在web.xml中,添加spring容器监听器,加载spring容器

          

  • 相关阅读:
    家庭记账本1
    寒假福利5
    寒假福利4——定位功能
    寒假福利3——日期时间选择器
    寒假作业——家庭小账本1.6(总结)
    寒假作业——家庭小账本1.5
    寒假作业——家庭小账本1.4
    寒假作业——家庭小账本1.3
    寒假作业——家庭小账本1.2
    寒假作业——家庭小账本1.1
  • 原文地址:https://www.cnblogs.com/Jtianlin/p/5223904.html
Copyright © 2011-2022 走看看