首页 > 代码库 > SpringMVC从入门到精通之第四章
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="http://www.mamicode.com/${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
来源:慕课网
@RequestMapping注解的作用范围,在类上和在目标方法上的区别以及作用,以及能够限制请求方式等。
作者: HansonQ
链接:http://www.imooc.com/article/4299
来源:慕课网
学完这一章你应该知道@Controller注解的作用范围,表示的类是一个后端控制器。
@RequestMapping注解的作用范围,在类上和在目标方法上的区别以及作用,以及能够限制请求方式等。
SpringMVC从入门到精通第三章
作者: HansonQ
链接:http://www.imooc.com/article/4299
来源:慕课网
SpringMVC从入门到精通之第四章
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。