springmvc(3) 使用注解的处理器映射器和处理器适配器

17 篇文章 0 订阅

 

在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注解适配器。

配置注解映射器和适配器

<!-- 使用 mvc:annotation-driven代替上边注解映射器和注解适配器配置

   mvc:annotation-driven默认加载很多的参数绑定方法,

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

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

    -->

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

开发注解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;
		
	}

在spring容器中加载Handler

<!-- 对于注解的Handler可以单个配置

   实际开发中建议使用组件扫描

    -->

   <!-- <bean class="cn.itcast.ssm.controller.ItemsController3" /> -->

   <!-- 可以扫描controllerservice...

   这里让扫描controller,指定controller的包

    -->

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

springmvc.xml可简化成

<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 ">
							
<mvc:annotation-driven></mvc:annotation-driven>							
							
<context:component-scan base-package="com.pro.ssm.controller"/> 
<!-- 视图解析器 
 解析jsp视图  默认使用jstl标签  classpath得有jstl包-->							
	<!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>		 -->
</beans>

经过测试视图解析器也可以不配置 

测试http://localhost:8080/springmvc/queryItems.action

发生异常

java.lang.IllegalArgumentException at org.springframework.asm.ClassReader.(Unknown Source)

再往上找到答案 很抓狂

主要是因为spring版本与Java版本以对应导致的,我刚才前面提到的我一开始手痒在升级tomcat的时候对jdk也做了升级,就是这个操作导致了这个错误,这个地方需要记住两点 
spring 3.X版本支持到java7 
spring 4.X版本支持Java8最低支持到Java6

将spring3.x的jar包换成4.2的jar包 运行正常。

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值