[劉陽Java]_Spring MVC中@RequestMapping用法_第2講


1. SpringMVC中的@RequestMapping是一個用來處理請求地址映射的注解,可用於類或方法上。用於類則表示所有響應請求的方法都以該地址作為父路徑

@RequestMapping("/test")
public class TestController {
  @RequestMapping("/m01")
  public String m01() {
    return "m01";
  }
}

如果上面在類上配置了@RequestMapping,則整個URL訪問的路徑 http://localhost:8080/項目名/test/m01.do

2. @RequestMapping常用用法

  • 方法級別上的用法
package com.gxa.spmvc.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.gxa.spmvc.entity.Student;

/**
 * SpringMVC的控制器(業務控制器)
 * 定義的方法就是一個請求處理的方法
 * @author caleb
 *
 */
@Controller
public class TestController {
    
    /**
     * @RequestMapping主要是定義用戶的url請求
     * @RequestMapping("/m01"), http://localhost:8080/springmvc/m01.do
     * 返回指就是一個邏輯視圖名, 它遵循springmvc-web.xml視圖解析器去尋找物理視圖名(m01.jsp)
     * @return
     */
    @RequestMapping("/m01")
    public String m01() {
        return "m01";
    }
        
}
  •  方法參數綁定的用法
package com.gxa.spmvc.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.gxa.spmvc.entity.Student;

/**
 * SpringMVC的控制器(業務控制器)
 * 定義的方法就是一個請求處理的方法
 * @author caleb
 *
 */
@Controller
public class TestController {
    
    /**
     * 如果業務控制器的方法有參數,則方法中的參數就是可以接收url的傳參
     * http://localhost:8080/springmvc/m02.do?id=123
     * @RequestParam
     * 1. required:是否必須要有這個參數
     * 2. value: 定義url的參數名稱
     * 3. defaultValue:定義參數的默認值
     * @param id
     * @return
     */
    @RequestMapping("/m02")
    public String m02(@RequestParam(required=true,value="sid",defaultValue="100") String id) {
        System.out.println("id = " + id);
        return "m02";
    }
    
}
  • 獲取實體對象的用法,即:通過方法能夠將表單提交的參數自動封裝成JavaBean對象
  • package com.gxa.spmvc.controller;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    
    import com.gxa.spmvc.entity.Student;
    
    /**
     * SpringMVC的控制器(業務控制器)
     * 定義的方法就是一個請求處理的方法
     * @author caleb
     *
     */
    @Controller
    public class TestController {
        
        /**
         * 表單數據提交傳遞給Spring MVC可以利用JavaBean來接收數據
         * SpringMVC一鍵封裝JavaBean
         * 關鍵點:表單中參數名稱和JavaBean的屬性一樣
         * @param student
         * @return
         */
        @RequestMapping("/m03")
        public String m03(Student student) {
            System.out.println(student.getId());
            System.out.println(student.getSname());
            System.out.println(student.getT_id());
            return "m03";
        }
        
    }
  • 回調Servlet API用法
package com.gxa.spmvc.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.gxa.spmvc.entity.Student;

/**
 * SpringMVC的控制器(業務控制器)
 * 定義的方法就是一個請求處理的方法
 * @author caleb
 *
 */
@Controller
public class TestController {
    
    /**
     * 讓SpringMVC框架回調Servlet API接口
     * 在請求處理的方法上加入對應的Servlet API接口作為方法參數就可以了
     * @param request
     * @param response
     * @return
     * @throws IOException 
     */
    @RequestMapping("/m04")
    public void m04(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String id = request.getParameter("id");
        String sname = request.getParameter("sname");
        String t_id = request.getParameter("t_id");
        PrintWriter out = response.getWriter();
        out.println(id + "  " + sname + "  " + t_id);
        out.flush();
        out.close();
    }
    
}
  •  REST風格參數用法
package com.gxa.spmvc.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.gxa.spmvc.entity.Student;

/**
 * SpringMVC的控制器(業務控制器)
 * 定義的方法就是一個請求處理的方法
 * @author caleb
 *
 */
@Controller
public class TestController {
    
    /**
     * 
     * @RequestMapping("/m01"), http://localhost:8080/springmvc/m01/123
     * URL最后面的參數123可以直接賦值給id,REST風格參數讓URL傳參更加優美
     * @return
     */
    @RequestMapping("/m01/{id}")
    public String m05(@PathVariable String id) {
    System.out.println("id = " + id);
        return "m01";
    }
        
}

 源碼地址下載:https://pan.baidu.com/s/1eSDZwFg


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM