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;

 

posted on 2017-01-10 22:04  有点懒惰的大青年  阅读(148)  评论(0编辑  收藏  举报