第一个知识点:@Controller注解,用于标识这个类是一个后端控制器(类似struts中的action),
主要作用就是接受页面的参数,转发页面。
中间的业务逻辑是调用业务类处理的这个就是MVC设计模式的思路。
我们来看下这个注解的源码:

package org.springframework.stereotype;

import java.lang.annotation.Annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
// 表明只能定义在类上面
@Target({java.lang.annotation.ElementType.TYPE})
//保留策略是RUNTIME,在JVM加载类时,会把注解加载到JVM内存中(它是唯一可以用反射来读取注解的策略)
@Retention(RetentionPolicy.RUNTIME)
//@Documented用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。Documented是一个标记注解,没有成员。
@Documented
//spring框架规定当一个类不好归类(service、dao、controller)的时候可以使用这个注解,由此可见即便好归类内部还是使用的@Component注解
@Component
public @interface Controller
{
public abstract String value();//默认值可以是组件名称,一般不写(看上面英文解释)
}

第二个知识点:@RequestMapping注解,同上面一样,这个注解的作用目标就跟@Controller不一样了,这个注解可以定义在类上面也可以定义在方法上面。

例如:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
@RequestMapping("/springmvc")
public class Test01_RequestMapping {
/**
* 1.@RequestMapping :除了修饰方法,还可以修饰类 *
* 2.类定义处:提供初步的请求信息映射.相对于WEB应用的根目录(窄化请求) * 3.方法处:提供进一步的细分映射信息。相对于类定义处的URL。 *
* 若类定义处为标注@RequestMapping,则方法出的URL相对于WEB应用的根目录 * @return
*/
@RequestMapping("/testRequestMapping")
public String testRequestMapping() {
System.out.println("@RequestMapping注解的作用目标");
return "success";
}
}

来看一下注解的源码说明:

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
String[] value() default {};//默认值可以是多个
RequestMethod[] method() default {};//限制请求方式
String[] params() default {};//要求请求的URL包含指定的参数
。。。
}

示例代码:

/*
* @Title: testRequestMappingAttrMethodPost
* @Description: TODO (限制请求方式只能是POST请求)
* @return
*/
@RequestMapping(value = "/testRequestMappingAttrMethodPost", method = { RequestMethod.POST })
public String testRequestMappingAttrMethodPost() {
System.out.println("@RequestMaping注解的属性:method RequestMethod[]{RequestMethod.POST}");
return "success";
} /**
* @Title: testRequestMappingAttrMethodGet
* @Description: TODO (限制请求方式只能是GET请求)
* @return *
*/
@RequestMapping(value = "/testRequestMappingAttrMethodGet", method = { RequestMethod.GET })
public String testRequestMappingAttrMethodGet() {
// 请求url
// "${pageContext.request.contextPath}/springmvc/testRequestMappingAttrParams?username=hanson&age=11"
System.out.println("@RequestMaping注解的属性:method RequestMethod[]{RequestMethod.GET}");
return "success";
}

这个注解还支持Ant风格的请求:

Ant风格资源地址支持3种匹配符:
?:匹配文件中的一个字符
*:匹配文件中任意字符
**:**匹配多层路径
@RequestMapping 支持 Ant 风格的 URL :
/user/*/createUser : 匹配 –/user/aaa/createUser、/user/bbb/createUser 等 URL
/user/*/createUser : 匹配 –/user/aaa/createUser、/user/bbb/createUser 等 URL
/user/**/createUser : 匹配 –/user/createUser、/user/aaa/bbb/createUser 等 URL
/user/createUser?? : 匹配 –/user/createUseraa、/user/createUserbb 等 URL

例如:下面这种请求:
href="${pageContext.request.contextPath}/springmvc/testAntStyleURL/ccccc/abc"
示例代码:

@RequestMapping("testAntStyleURL/*/abc")
public String testAntStyleURL(){
System.out.println("AntStyleURL:testAntStyleURL/*/abc");
return "success";
}
学完这一章你应该知道@Controller注解的作用范围,表示的类是一个后端控制器。
@RequestMapping注解的作用范围,在类上和在目标方法上的区别以及作用,以及能够限制请求方式等。
作者:
HansonQ

链接:http://www.imooc.com/article/4299
来源:慕课网

学完这一章你应该知道@Controller注解的作用范围,表示的类是一个后端控制器。
@RequestMapping注解的作用范围,在类上和在目标方法上的区别以及作用,以及能够限制请求方式等。

SpringMVC从入门到精通第三章

作者: HansonQ
链接:http://www.imooc.com/article/4299
来源:慕课网

SpringMVC从入门到精通之第四章的更多相关文章

  1. SpringMVC从入门到精通之第三章

    上一章节中首先讲解前端控制器DispatcherServlet的配置包括加载springmvc文件.拦截什么样的请求等还有两个组件:分别是适配器和映射器(另外再补充一组) 非注解的处理器映射器 处理器 ...

  2. #Python编程从入门到实践#第四章笔记

    #Python编程从入门到实践#第四章笔记   操作列表 ​​​1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...

  3. ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 入门案例分析 在第一章里,我们已经对ArcGIS系列软件的体系结构有了一 ...

  4. D3.js的v5版本入门教程(第四章)—— 理解Update、Enter、Exit

    D3.js的v5版本入门教程(第四章) Update.Enter.Exit是D3.js中很重要的概念,下面来讲一下它们到底是什么?(当你看完后.你就会知道如果数据集个数和选择集个数不匹配的情况下使用d ...

  5. SpringMVC从入门到精通之第二章

    这一章原本我是想写一个入门程序的,但是后来仔细想了一下,先从下面的图中的组件用代码来介绍,可能更效果会更加好一点.第一节:开发准备介绍之前先说下我的开发调试环境:JDK 1.7的64位 .Eclips ...

  6. SpringMVC从入门到精通之第一章

    第一节 简介:SpringMVC是Spring框架的一个模块,Spring和SpringMVC无需通过中间整合层进行整合.SpringMVC是基于MVC的WEB框架.MVC设计模式在B/S下的应用: ...

  7. python编程:从入门到实践----第四章>操作列表

    一.遍历整个列表 1-1.假设有一个魔术师名单,需要将其中每个魔术师的名字都打印出来. # 用for循环来打印魔术师名单中的名字 magicians=['alice','david','carolin ...

  8. 《SpringMVC从入门到放肆》四、SpringMVC配置式开发(处理器映射器)

    上一篇我们讲解了DispatcherServlet的url-pattern配置详解,今天我们来真正对SpringMVC进行配置式开发.所谓配置式开发是指“处理器类是程序员自己定义的.实现了特定接口的类 ...

  9. Python:从入门到实践--第四章--列表操作--练习

    #1.想出至少三种你喜欢的水果,将其名称存储在一个列表中,再使用for循环将每种水果的名称都打印出来. #要求:(1)修改这个for循环,使其打印包含名称的句子,而不是仅仅是水果的名称.对于每种水果, ...

随机推荐

  1. Hexo - 快速,轻量,强大的 Node.js 博客框架

    Hexo 是一个快速,轻量,强大的 Node.js 博客框架.带给你难以置信的编译速度,瞬间生成静态文件:支持 Markdown,甚至可以在 Hexo 中集合 Octopress 插件:只需要一个命令 ...

  2. 小白的CSS基础学习

    CSS定义: CSS全称为“层叠样式表 (Cascading Style Sheets)”,它主要是用于定义HTML内容在浏览器内的显示样式. CSS代码语法: css样式选择组成部分:选择符+声明( ...

  3. 【初探移动前端开发03】jQuery Mobile(上)

    前言 到目前为止,我打了几天酱油了,这几天落实了工作,并且看了一部电视连续剧(陈道明-手机),我很少看连续剧了,但是手机质量很高啊,各位可以看看. 我们今天先学习一下jquery mobile的基础知 ...

  4. 《Javascript高级程序设计》:创建对象

    工厂模式 function createPerson(name,age, job){ var o = new Object(); o.name = name; o.age = age; o.job = ...

  5. 将PostGIS转化为GeoJSON

    #!/usr/bin/env python # -*- coding: utf-8 -*- import psycopg2 import json from geojson import loads, ...

  6. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q19-Q20)

    Question 19 You are designing a custom SharePoint 2010 solution package. It will include a feature t ...

  7. -[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object' 解决方法

    -[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object' 解决方法: 错误:NSMutableD ...

  8. NSString和SwiftString的区别和使用场景

    当下Swift项目已经越来越多,可能会经常见到  str as NSString 或者 str as String 字符串在这两者之间的来回切换,因为有些操作用OC字符串比较方便,而有些操作则相反,熟 ...

  9. Android对话框

    这周过的实在是艰辛,自打这周二起我的本本就开始闹"罢工",最后还是重装系统了事. . .   只是可怜了我的那些被格了的软件(悲伤辣么大)!  往事不要再提,人生几度风雨... 简 ...

  10. XMLA ODBO 以及OLAP服务提供者自定义的协议,我们如何选择

    参考 SAP给他的客户的帮助<ODBO, BAPI and XMLA - Sap>   SAP BW 提供的查询接口: 接口 查询语言 调用接口 OS平台 客户端开发 ODBO MDX C ...