SpringMVC从入门到精通之第四章
第一个知识点:@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";
}
@RequestMapping注解的作用范围,在类上和在目标方法上的区别以及作用,以及能够限制请求方式等。
作者:
HansonQ
链接:http://www.imooc.com/article/4299
来源:慕课网
学完这一章你应该知道@Controller注解的作用范围,表示的类是一个后端控制器。
@RequestMapping注解的作用范围,在类上和在目标方法上的区别以及作用,以及能够限制请求方式等。
作者: HansonQ
链接:http://www.imooc.com/article/4299
来源:慕课网
SpringMVC从入门到精通之第四章的更多相关文章
- SpringMVC从入门到精通之第三章
上一章节中首先讲解前端控制器DispatcherServlet的配置包括加载springmvc文件.拦截什么样的请求等还有两个组件:分别是适配器和映射器(另外再补充一组) 非注解的处理器映射器 处理器 ...
- #Python编程从入门到实践#第四章笔记
#Python编程从入门到实践#第四章笔记 操作列表 1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...
- ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第四章_入门案例分析 - ArcGIS知乎-新一代ArcGIS问答社区 1 入门案例分析 在第一章里,我们已经对ArcGIS系列软件的体系结构有了一 ...
- D3.js的v5版本入门教程(第四章)—— 理解Update、Enter、Exit
D3.js的v5版本入门教程(第四章) Update.Enter.Exit是D3.js中很重要的概念,下面来讲一下它们到底是什么?(当你看完后.你就会知道如果数据集个数和选择集个数不匹配的情况下使用d ...
- SpringMVC从入门到精通之第二章
这一章原本我是想写一个入门程序的,但是后来仔细想了一下,先从下面的图中的组件用代码来介绍,可能更效果会更加好一点.第一节:开发准备介绍之前先说下我的开发调试环境:JDK 1.7的64位 .Eclips ...
- SpringMVC从入门到精通之第一章
第一节 简介:SpringMVC是Spring框架的一个模块,Spring和SpringMVC无需通过中间整合层进行整合.SpringMVC是基于MVC的WEB框架.MVC设计模式在B/S下的应用: ...
- python编程:从入门到实践----第四章>操作列表
一.遍历整个列表 1-1.假设有一个魔术师名单,需要将其中每个魔术师的名字都打印出来. # 用for循环来打印魔术师名单中的名字 magicians=['alice','david','carolin ...
- 《SpringMVC从入门到放肆》四、SpringMVC配置式开发(处理器映射器)
上一篇我们讲解了DispatcherServlet的url-pattern配置详解,今天我们来真正对SpringMVC进行配置式开发.所谓配置式开发是指“处理器类是程序员自己定义的.实现了特定接口的类 ...
- Python:从入门到实践--第四章--列表操作--练习
#1.想出至少三种你喜欢的水果,将其名称存储在一个列表中,再使用for循环将每种水果的名称都打印出来. #要求:(1)修改这个for循环,使其打印包含名称的句子,而不是仅仅是水果的名称.对于每种水果, ...
随机推荐
- Ampersand.js - 模块化的 JS 应用程序开发框架
Ampersand.js 是一个高度模块化,松耦合,用于构建先进的 JavaScript 应用程序的框架.通过良好定义的方法,结合了一系列微小的 CommonJS 模块.条理清晰,没有多余的冗余代码. ...
- sap去除后缀0方法
原贴地址:http://fuhesap.com/SAP/179.html SHIFT str LEFT DELETING LEADING '0'.如果要在layout显示不出前面的0 格式: & ...
- clang编译mysql(Ubuntu10 64位)
编译安装mysql(Ubuntu10 64位) http://www.cnblogs.com/2018/p/3482259.html 这个介绍了gcc形式编译安装mysql 那我们使用clang进行编 ...
- switch-枚举
在swift中,如果switch的枚举,可以不写default,因为系统知道有多少种情况,如果不是枚举,必须要写default enum WBComposeToolBarButtonType:Int ...
- jquery非空验证功能
<script type="text/javascript"> $(function(){ /************* ...
- git 和 github 关系?
1.git 和 github 是什么关系? git是一种版本控制系统.跟svn.cvs是同级的概念. github是一个网站,给用户提供git服务.这样你就不用自己部署git系统,直接用注册个账号,用 ...
- 【代码笔记】iOS-饼图
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @class QuizChartView; @interf ...
- 【Android】魅族Flyme OS 3摄像头无法预览的问题
错误代码: 12-12 14:28:34.692: E/AndroidRuntime(1524): java.lang.RuntimeException: startPreview failed 12 ...
- Android源码分析之SharedPreferences
在Android的日常开发中,相信大家都用过SharedPreferences来保存用户的某些settings值.Shared Preferences 以键值对的形式存储私有的原生类型数据,这里的私有 ...
- .net开发windows服务小结
今天学习了在.net下创建一个windows服务,总结一下学习心得. 开发环境:visual studio 2012 一.编写程序 (1)创建一个空解决方法 (2)添加一个控制台应 ...