您的位置:首页 > 编程语言 > Java开发

springmvc注解配置详解及其demo代码下载

2016-02-25 09:25 603 查看
原文:springmvc注解配置详解及其demo代码下载

源代码下载地址:http://www.zuidaima.com/share/1751863912057856.htm

一、概述

SpringMVC在2.5版本后新增了注解功能,2.5版本以前的基本通过继承Controller体系来开发业务控制器,2.5版本后Controller体系中

BaseCommandController及其子类AbstractCommandController、AbstractFormController、AbstractWizardFormController、

SimpleFormController、CancellableFormController等都已经被标示为@Deprecated,建议不再使用。

相比传统的继承Controller体系中某些类的方式,SpringMVC的注解具有以下优点:

1、Controller不再需要继承某个特定类,只是简单的POJO。

2、请求映射的配置非常方便灵活。

3、参数绑定机制非常方便丰富。

4、可以根据不同的http方法或者参数,细粒度处理不同的http请求

二、示例

下面通过对SpringMVC注解的详细介绍来看一下上述优点。

首先需要在应用的dispatcher-servlet.xml 启动注解机制

<context:annotation- config />
<!-- 设置注解驱动 -->
<mvc:annotation - driven />
<!-- 设置扫描的包 -->
<context:component - scan base - package=" com.demo.web.controller " />
<bean class=" org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping " />
<bean class= " org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter " />


注:虽然我们的Controller不需要再继承任何类,但出于规范,我们仍然命名为***Controller.java,并统一放在 com.demo.web.controller包中。

1、@Controller注解

 

简单示例

package com.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
class IndexController {
@RequestMapping( " /index " )
String index() {
return " index " ;
}
}


在一个POJO上面使用 @Controller 就可以标注该POJO是一个Controller,就这么简单。 @Controller注解定义在org.springframework.steretype包中。

使用方式: @Controller 或者 @Controller("indexController)。 org.springframework.steretype包中还包含 @Componenet @Service @Respository

三个注解。@Component是通用标注,@Controller标注web控制器,@Service标注Servicec层的服务,@Respository标注DAO层的数据访问。

2、使用@RequestMapping注解处理请求映射

    SpringMVC中注解基本都包含在 org.springframework.web.bind.annotation 包中。先看一下 @RequestMapping 注解的源码。

@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @ interface RequestMapping {

/**
* 指定映射的URL.可以在类层次和方法层次使用。方式如下:
* @RequestMapping("/add_")或 @RequestMapping(value="/add")
* 支持Ant风格的URL映射,如 @RequestMapping("/myPath/*.htm")
* 在类层次指定了映射后,可以在方法层次再指定相对路径
*/
String[] value() default {};

/**
* 指定HttpRequest的方法, 如:GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE.
* 使用举例: @RequestMapping(value="/add_activity", method=RequestMethod.GET)
*/
RequestMethod[] method() default {};

/**
* 指定HttpRequest中包含的参数,使用方式如下:
* @RequestMapping(value="/something",params="myParam")请求包含myParam参数
* @RequestMapping(value="/something",params="myParam=myValue")请求包含myParam参数,并且该参数值为myValue
* @RequestMapping(value="/something",params="!myParam")请求不包含myParam参数
*/
String[] params() default {};

/**
* 指定HttpRequest中包含的头部信息,使用方式如下:
* @RequestMapping(value="/something", headers="content-type")请求包含该头部
* @RequestMapping(value="/something", headers="content-type=text/*")请求包含特定值的头部
* @RequestMapping(value="/something", headers="!content-type")请求不包含该头部
*/
String[] headers() default {};

}

注:如果在类层次指定了映射,则方法层次上都将继承类层次的映射

3、获取HttpRequest中得参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息