springmvc注解开发handler

来源:互联网 发布:美国非农数据最新消息 编辑:程序博客网 时间:2024/05/27 08:13

在springmvc3.1版本以前,

会默认加载一个注解映射器:org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping

和一个注解适配器:org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

在3.1版本之后,它们已经不被建议使用了。现在建议使用如下的注解映射器和适配器来代替它们:

mapping:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping

adapter:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

下面介绍下使用注解开发handler的步骤:

1、配置注解映射器

<!-- 注解映射器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

2、配置注解适配器

<!-- 注解适配器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

注意:该适配器不要求实现任何接口,但它需要与RequestMappingHandlerMapping注解映射器配对使用;

  在handler中使用@Controller标识此类是一个handler控制器

  使用@RequestMapping指定handler中的方法所对应的url

3、开发handler

package com.js.springmvc01;import java.util.ArrayList;import java.util.List;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import com.js.po.Items;/** * 第3个controller * 适配:RequestMappingHandlerAdapter,注解方式开发 * 该适配器不要求实现任何接口 * 该适配器要求与RequestMappingHandlerMapping搭配使用 * 入门程序:商品列表的查询 * @author jiangs * */@Controllerpublic class ItemController03 {/** * @RequestMapping中的url我们建议和方法名一致,但这不是强制要求 * @param request * @param response * @return */@RequestMapping("/query")public ModelAndView queryItem(){//使用静态数据把商品列表显示在jsp页面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 = new ModelAndView();modelAndView.addObject("itemsList", itemsList);modelAndView.setViewName("/WEB-INF/jsp/itemsList.jsp");return modelAndView;}}

4、配置handler:

<bean class="com.js.springmvc01.ItemController03"/>

虽然在handler中配置的RequestMapping中路径为“/query”,但是由于我在web.xml中DispatcherServlet配置如下:

<servlet-mapping>  <servlet-name>springmvc</servlet-name>  <!--  可以配置/,此工程所有的请求全部由springmvc解析,此种方式可以实现RESTful 方式,需要特殊处理静态文件的解析,不能由springmvc解析  可以配置*.do或*.action,所有请求的扩展名为.do或.action时,由springmvc来解析,此种方法常用  不可以配置/*,如果配置/*,返回jsp也由springmvc解析,会再次经过springmvc处理,这是不对的   -->  <url-pattern>*.action</url-pattern>  </servlet-mapping>

所以在浏览器中访问/query.action方可访问到结果。


另外,当大量使用注解方式开发handler时,建议使用如下的spring组件扫描来代替繁琐的手动配置handler:

<context:component-scan base-package="com.js.springmvc01"></context:component-scan>