第一个知识点:@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. Ampersand.js - 模块化的 JS 应用程序开发框架

    Ampersand.js 是一个高度模块化,松耦合,用于构建先进的 JavaScript 应用程序的框架.通过良好定义的方法,结合了一系列微小的 CommonJS 模块.条理清晰,没有多余的冗余代码. ...

  2. sap去除后缀0方法

    原贴地址:http://fuhesap.com/SAP/179.html SHIFT str LEFT DELETING LEADING '0'.如果要在layout显示不出前面的0 格式: & ...

  3. clang编译mysql(Ubuntu10 64位)

    编译安装mysql(Ubuntu10 64位) http://www.cnblogs.com/2018/p/3482259.html 这个介绍了gcc形式编译安装mysql 那我们使用clang进行编 ...

  4. switch-枚举

    在swift中,如果switch的枚举,可以不写default,因为系统知道有多少种情况,如果不是枚举,必须要写default enum WBComposeToolBarButtonType:Int ...

  5. jquery非空验证功能

    <script type="text/javascript">                $(function(){          /************* ...

  6. git 和 github 关系?

    1.git 和 github 是什么关系? git是一种版本控制系统.跟svn.cvs是同级的概念. github是一个网站,给用户提供git服务.这样你就不用自己部署git系统,直接用注册个账号,用 ...

  7. 【代码笔记】iOS-饼图

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @class QuizChartView; @interf ...

  8. 【Android】魅族Flyme OS 3摄像头无法预览的问题

    错误代码: 12-12 14:28:34.692: E/AndroidRuntime(1524): java.lang.RuntimeException: startPreview failed 12 ...

  9. Android源码分析之SharedPreferences

    在Android的日常开发中,相信大家都用过SharedPreferences来保存用户的某些settings值.Shared Preferences 以键值对的形式存储私有的原生类型数据,这里的私有 ...

  10. .net开发windows服务小结

        今天学习了在.net下创建一个windows服务,总结一下学习心得.     开发环境:visual studio 2012   一.编写程序 (1)创建一个空解决方法 (2)添加一个控制台应 ...