• springMVC学习(2)


    一、使用注解的处理器映射器和适配器

    1)
    在这个下面的/org/springframework/web/servlet/DispatcherServlet.properties文件,从这个文件中加载处理器映射器、适配器、视图解析器等组件,如果不在springmvc.xml中配置,使用默认加载的。其中:
      默认加载的注解映射器:
    在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
     
    配置注解的适配器和映射器:
    注解的映射器和注解的适配器必须配对使用
    ItemsController3是Hander,交给spring初始化bean
    <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"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
            http://www.springframework.org/schema/mvc 
            http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
            http://www.springframework.org/schema/context 
            http://www.springframework.org/schema/context/spring-context-3.2.xsd 
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop-3.2.xsd 
            http://www.springframework.org/schema/tx 
            http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
        
        <bean class="com.cy.controller.ItemsController3"></bean>
        
        <!--注解映射器 -->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
        
        <!--注解适配器 -->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
    
        
        <!-- 视图解析器
            解析jsp视图,默认使用jstl标签,classpath下的得有jstl的包
         -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
    </beans>

    开发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>();
    		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/itemsList.jsp");
    		return modelAndView;
    	}
    }
    

    浏览器中访问:http://localhost:8080/springMVC/queryItems.action能看到列表;

    2)上面的程序中使用自动扫描:

    <!-- 对于注解的Handler可以单个配置 实际开发中建议使用组件扫描 -->
        <!-- 可以扫描controller、service、...这里让扫描controller,指定controller的包-->
        <context:component-scan base-package="com.cy.controller"></context:component-scan>
        
        <!--注解映射器 -->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
        
        <!--注解适配器 -->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
        
        <!-- 视图解析器
            解析jsp视图,默认使用jstl标签,classpath下的得有jstl的包
         -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>

    依然能访问;

    3)上面的程序使用 注解驱动配置: 代替上面的注解映射器和注解适配器:

    <!-- 对于注解的Handler可以单个配置 实际开发中建议使用组件扫描 -->
        <!-- 可以扫描controller、service、...这里让扫描controller,指定controller的包-->
        <context:component-scan base-package="com.cy.controller"></context:component-scan>
        
        <!-- mvc:annotation-driven默认加载很多的参数绑定方法,比如json转换解析器就默认加载了,实际开发时使用mvc:annotation-driven-->
        <mvc:annotation-driven></mvc:annotation-driven>
        
        <!-- 视图解析器
            解析jsp视图,默认使用jstl标签,classpath下的得有jstl的包
         -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>

    http://localhost:8080/springMVC/queryItems.action   访问ok

     4)上面的视图解析器配置视图名的前缀、后缀:
    <!-- 视图解析器
            解析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>

    controller中view的返回就这样:

    //指定视图
            modelAndView.setViewName("itemsList");
            return modelAndView;
  • 相关阅读:
    ME05 黑匣子思维
    F06 《生活中的投资学》摘要(完)
    ME03 关于运气要知道的几个真相
    ME02 做一个合格的父母To be good enough parent
    ME02 认知之2017罗胖跨年演讲
    F03 金融学第三定律 风险共担
    F05 敏锐的生活,让跟多公司给你免单
    ML04 Accord 调用实现机器算法的套路
    D02 TED Elon Mulsk The future we're building — and boring
    ML03 利用Accord 进行机器学习的第一个小例子
  • 原文地址:https://www.cnblogs.com/tenWood/p/6271003.html
Copyright © 2020-2023  润新知