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"; } }
