• 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"; 
        }
    学完这一章你应该知道@Controller注解的作用范围,表示的类是一个后端控制器。
    @RequestMapping注解的作用范围,在类上和在目标方法上的区别以及作用,以及能够限制请求方式等。
    作者: HansonQ
    链接:http://www.imooc.com/article/4299
    来源:慕课网

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

    SpringMVC从入门到精通第三章


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

    快乐生活,享受编程
  • 相关阅读:
    session生命周期
    解决安装sql server 需要重启问题
    myeclipse + tomcat 项目自动部署
    JSP页面转向方式
    关于Response.redirect()方法
    MyEclipse修改项目名称后,部署到tomcat问题
    为Eclipse安装主题插件
    MyEclipse自定义快捷键
    如何查看JSP和Servlet版本
    Wannafly挑战赛2 C.Butterfly(线段树优化枚举)
  • 原文地址:https://www.cnblogs.com/kevin1990/p/6132847.html
Copyright © 2020-2023  润新知