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】

  • 相关阅读:
    HDU 1025 Constructing Roads In JGShining's Kingdom (DP+二分)
    HDU 1158 Employment Planning
    HDU 2059 龟兔赛跑
    Csharp 简单操作Word模板文件
    Csharp windowform datagridview Clipboard TO EXCEL OR FROM EXCEL DATA 保存datagridview所有數據
    Csharp 讀寫文件內容搜索自動彈出 AutoCompleteMode
    Csharp windowform controls clear
    CSS DIV大图片右上角叠加小图片
    Csharp DataGridView自定义添加DateTimePicker控件日期列
    Csharp 打印Word文件默認打印機或選擇打印機設置代碼
  • 原文地址:https://www.cnblogs.com/qdhxhz/p/8093006.html
Copyright © 2011-2022 走看看