zoukankan      html  css  js  c++  java
  • springMVC(1)---@RequestMapping详解

    @RequestMapping详解

            RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。这句话,太熟悉了。

     一. RequestMapping路径详解                                      

       (1)首先springmvc.xml配置

    <!-- 定义跳转的文件的前后缀 ,视图模式配置-->  
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
            <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->  
            <property name="prefix" value="/WEB-INF/jsp/" />  
            <property name="suffix" value=".jsp" />  
        </bean> 

    (2)Controller 类

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    @Controller
    @RequestMapping("/jsp")
    public class RequestController {
    
        public static final String  SUCCESS="success";    
        
        @RequestMapping("/login1")    
        public void hello(){
            System.out.println("hello world");
        }
    
        /*第一点
         *1:@RequestMapping定义在类上,那就相当于根目录
         *2:@RequestMapping定义在方法上,那就相当于相对于类定义处的URL。
         * 上面代码在类定义处指定映射为"/jsp",在hello()方法处指定为"/login1"。
         * 那么hello()方法的URL映射地址为:http://localhost:8080/ssm/jsp/login1
         * ssm指的是你项目的名称
         */
    
        /*第二点
         * 1.@RequestMapping在类上定义不是必须的,如上如果我只在方法上定义@RequestMapping("/jsp/login1")
         * 那么它同样能访问上面的URL映射地址。
         * 2.@RequestMapping的默认属性为value,所以@RequestMapping(value="/login1")和@RequestMapping("/login1")是等价的。
         */
    
        @RequestMapping("/login2")    
        public String getModel(){
            System.out.println("hello world");
            return SUCCESS;
        }
        /*第三点:需要返回界面
         *1.这个return success;加上springMVC配置的路径 
         * 那么它返回的路径是:
         * http://localhost:8080/ssm/WEB-INF/jsp/success.jsp
         */
    
        @RequestMapping(value="/jsp/login3")
        public ModelAndView paramBind(){        
            ModelAndView modelAndView = new ModelAndView(); 
            //传到界面的数据
            modelAndView.addObject("date", "nihao");
            modelAndView.setViewName(SUCCESS);  
            return modelAndView;
        }
        
        /*第四点:返回界面同时带上数据
         * 1.好多时候,我们要的不是跳转界面,而是能够把后台的数据传到前端去
         * modelAndView.addObject放的就是你要传的数据
         * modelAndView.setViewName返回路径名称
         * 所以它的返回路径和上面一样
         */
        
        /*第五点:void类型无返回值跳转
         * 1.根据上面无返回值那么它最终会跳转到
         * http://localhost:8080/ssm/WEB-INF/jsp/jsp/login1.jsp
         * 原则:
         * prefix+类路径(类级别的mapping注解)+方法路径(方法级别的mapping注解)+prefix
         */
        
    }

    二.RequestMapping参数详解                                     

        请求参数的作用是使得请求的映射更加精细。

        RequestMapping注解有六个属性,下面我们把她分成三类进行说明

           value:定义处理方法的请求的 URL 地址。(重点)

      method:定义处理方法的 http method 类型,如 GET、POST 等。(重点)

      params:   定义请求的 URL 中必须包含的参数。或者不包含某些参数。(了解)

      headers: 定义请求中 Request Headers 必须包含的参数。或者不包含某些参数。(了解)

      下面也用个Controller 类来说明

      1.  Controller 

    @Controller
    @RequestMapping("/hello")
    public class TestController {
        
        public static final String  SUCCESSS="successs";            
        
            /**
             * post动作请求的测试
             */
            @RequestMapping(method=RequestMethod.POST,value="/login1")
            public String testMethodPost(){
              
                return SUCCESSS;
            }
            
            /**
             * 测试url中带参数(未测试请求头信息)
             */
          //url http://localhost:8080/ssm/hello/login2?username=zhangsan&password=123&sex=2
            @RequestMapping(value="/login2",
                    params={"username","sex!=1","password=123"},
                    method=RequestMethod.GET)
            public String testHeadersAndParams(){
         
                return SUCCESSS;
            }
           
            /**
             * PathVariable 映射 URL 绑定占位  ( 映射URL路径里面的变量)
             * 
             * 用Integer会比int严谨
             */
            //http://localhost:8080/ssm/hello/login3/5
            @RequestMapping(value="/login3/{id}",method=RequestMethod.GET)
            public String testPathVariable(@PathVariable("id") Integer id){
             
                System.out.println("id:"+id);
         
                return SUCCESSS;
            }
    
            // http://localhost:8080/ssm/hello/login4/str
            @RequestMapping(value="/login4/{name}",method=RequestMethod.GET)
            public String testPathVariable2(@PathVariable("name") String name){
                System.out.println("name :"+name);
               
              return SUCCESSS;
            }
    
            
            /**
             * 如果在方发上@RequestMapping()没有任何参数,那它就代表类上的value请求地址
             * 
             */
           // http://localhost:8080/ssm/hello.jsp
            @RequestMapping()
            public String test(){
                 return SUCCESSS;
            }
    }

       有关RequestMapping就先讲这么多。

    想的太多,做的太少,中间的落差就是烦恼,要么去做,要么别想 少尉【9】

  • 相关阅读:
    Servlet的数据库访问
    Servlet 网页重定向
    Intellij idea创建javaWeb以及Servlet简单实现
    Tomcat
    QQ简易版
    单例
    centos7 jdk安装
    centos7 allure安装
    centos中执行apt-get命令提示apt-get command not found
    centos mysql使用踩过的坑
  • 原文地址:https://www.cnblogs.com/qdhxhz/p/8093006.html
Copyright © 2011-2022 走看看