URL地址映射配置
@RequestMapping
通过注解 @RequestMapping 将请求地址与方法进行绑定,可以在类级别和方法级别声明。类级别的注解负责将一个特定的请求路径映射到一个控制器上,将 url 和类绑定;通过方法级别的注解可以细化映射,能够将一个特定的请求路径映射到某个具体的方法上,将 url 和类的方法绑定。
映射单个 URL
@RequestMapping("") 或 @RequestMapping(value="")
package com.xxxx.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
/**
* URL地址映射配置
* @RequestMapping("映射地址")
* 声明在方法上,表示请求路径与类中的方法绑定
* 声明在类级别,表示请求的路径与类绑定
*
* 常用形式
* 方法路径 /方法路径
* 类路径+方法路径 /类路径/方法路径
*/
@Controller
public class UrlController {
/**
* @RequestMapping 声明在方法上面,映射单个 URL
* 访问地址:(如果有类路径需要写在方法路径前面)
* http://ip:port/springmvc01/url01
* @return
*/
@RequestMapping("url01")
public ModelAndView url01(){
ModelAndView mv = new ModelAndView();
//设置模型数据
mv.addObject("hello","url01");
mv.setViewName("hello");
return mv;
}
/**
* 路径开头是否加 斜杠"/" 均可
* @RequestMapping("/请求路径") 与 @RequestMapping("请求路径")均可
* 建议加上,如:@RequestMapping("/url02")
* 访问地址:(如果有类路径需要写在方法路径前面)
* http://ip:port/springmvc01/url02
* @return
*/
@RequestMapping("/url02")
public ModelAndView url02(){
ModelAndView mv = new ModelAndView();
//设置模型数据
mv.addObject("hello","url02");
mv.setViewName("hello");
return mv;
}
}
映射多个 URL
@RequestMapping({"",""}) 或 @RequestMapping(value={"",""})
package com.xxxx.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class UrlController {
/**
* @RequestMapping 声明在方法上面,映射多个 URL
* 支持一个方法绑定多个 url 的操作
* 访问地址:(如果有类路径需要写在方法路径前面)
* http://ip:port/springmvc01/url03_01
* http://ip:port/springmvc01/url03_02
* @return */
@RequestMapping({
"/url03_01","/url03_02"})
// @RequestMapping(value = {"/url03_01","/url03_02"})
public ModelAndView test03(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("hello","url03");
modelAndView.setViewName("hello");
return modelAndView;
}
}
映射 URL 在控制器上
用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
package com.xxxx.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("url")
public class UrlController {
/**
* @RequestMapping 声明在类上面,类中的的方法都是以该地址作为父路径
* 声明级别:
* 类级别 + 方法级别 (/类路径/方法路径)
* 访问地址: http://ip:port/springmvc/url/url04
* @return */
@RequestMapping("/url04")
public ModelAndView url04(){
ModelAndView mv = new ModelAndView();
//设置模型数据
mv.addObject("hello","url04");
mv.setViewName("hello");
return mv;
}
}
设置 URL 映射的请求方式
默认没有设置请求方式,在HTTP 请求中最常用的请求方法是 GET、POST,还有其他的一些方法,如:DELETE、PUT、HEAD 等。
可以通过 method 属性设置支持的请求方式,如 method=RequestMethod.POST;如设置多种请求方式,以大括号包围,逗号隔开即可。
package com.xxxx.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("url")
public class UrlController {
/**
* 设置请求方式
* 通过 method 属性设置方法支持的请求方式,默认 GET请求和 POST等请求都支持。
* 设置了请求方式,则只能按照指定的请求方式请求。
* 访问地址:(只能使用POST请求访问)
* http://ip:port/springmvc01/url/url05
* @return
*/
@RequestMapping(value = "url05",method = RequestMethod.POST)
public ModelAndView url05(){
ModelAndView mv = new ModelAndView();
//设置模型数据
mv.addObject("hello","url05");
mv.setViewName("hello");
return mv;
}
}
浏览器默认使用Get请求方式。
PostMan测试Get请求
PostMan测试Post请求
通过参数名称映射 URL
package com.xxxx.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("url")
public class UrlController {
/**
* 通过参数名称访问
* 通过参数的形式访问
* 访问地址:http://ip:port/springmvc01/url?url06
* @return
*/
@RequestMapping(params = "url06")
public ModelAndView url06(){
ModelAndView mv = new ModelAndView();
//设置模型数据
mv.addObject("hello","url06");
mv.setViewName("hello");
return mv;
}
}