用法1: 多个URL路径映射到同一个Handler(同一个方法)
- index.jsp页面
<fieldset>
<h4>用法1: 多个URL路径映射到同一个Handler(同一个方法)</h4>
<a href="http://localhost:8080/gotoResultURL1.do">测试路径1</a>
<a href="${pageContext.request.contextPath}/gotoResultURL2.do">测试路径2</a>
</fieldset>
- DefaultController控制器
public class DefaultController {
//用法1: 多个URL路径映射到同一个Handler(同一个方法)
@RequestMapping(value={"gotoResultURL1","gotoResultURL2"})
public ModelAndView gotoResultURL(ModelAndView modelAndView){
//封装数据
modelAndView.addObject("nowDate", new Date() +"====Default===gotoResultURL");
//指定页面
modelAndView.setViewName("result");
return modelAndView;
}
}
用法2:RequestMapping注解作用在类上,实现对请求路径的分类管理,限定类中方法访问的前缀
- index.jsp页面
<fieldset>
<h4>用法2:RequestMapping注解作用在类上,实现对请求路径的分类管理,限定类中方法访问的前缀</h4>
<a href="http://localhost:8080/default/gotoResultURL1.do">测试Default路径</a>
<a href="${pageContext.request.contextPath}/user/gotoResultURL1.do">测试User路径</a>
</fieldset>
- DefaultController控制器
@Controller
//用法2:RequestMapping注解作用在类上,实现对请求路径的分类管理,限定类中方法访问的前缀
@RequestMapping("default")
public class DefaultController {
//用法1: 多个URL路径映射到同一个Handler(同一个方法)
@RequestMapping(value={"gotoResultURL1","gotoResultURL2"})
public ModelAndView gotoResultURL(ModelAndView modelAndView){
//封装数据
modelAndView.addObject("nowDate", new Date() +"====Default===gotoResultURL");
//指定页面
modelAndView.setViewName("result");
return modelAndView;
}
}
}
- UserController控制器
@Controller
@RequestMapping("user")
public class UserController {
//用法1: 多个URL路径映射到同一个Handler(同一个方法)
@RequestMapping(value={"gotoResultURL1","gotoResultURL2"})
public ModelAndView gotoResultURL(ModelAndView modelAndView){
//封装数据
modelAndView.addObject("nowDate", new Date() +"===User===gotoResultURL");
//指定页面
modelAndView.setViewName("result");
return modelAndView;
}
}
用法3 method属性限定请求方法: 请求的handler相同,请求方式不同进入不同方法处理
method属性限定请求方法,请求的handler相同,请求方式不同进入不同方法处理,访问的url是一样的(Handler名字是一样的),但是我根据你不同的请求方式(get/post)进入不同的方法处理,请求的url一样,但是请求方式不一样(get/post)
- index.jsp
<fieldset>
<h4>用法3 method属性限定请求方法: 请求的handler相同,请求方式不同进入不同方法处理</h4>
<a href="http://localhost:8080/default/gotoResultMethod.do">Get方式测试</a>
<form action="http://localhost:8080/default/gotoResultMethod.do" method="post">
<input type="submit" value="Post方式测试">
</form>
</fieldset>
- DefaultController控制器
/**
* url相同,但是请求方式为GET
* @RequestMapping注解属性method
*/
@RequestMapping(value = "gotoResultMethod",method = RequestMethod.GET)
public ModelAndView gotoResultMethodGet(ModelAndView modelAndView){
modelAndView.addObject("nowDate",new Date()+"Method=GET");
modelAndView.setViewName("index");
return modelAndView;
}
/**
* url相同,但是请求方式为POST
* @RequestMapping注解属性method
*/
@RequestMapping(value = "gotoResultMethod",method = RequestMethod.POST)
public ModelAndView gotoResultMethodPost(ModelAndView modelAndView){
modelAndView.addObject("nowDate",new Date()+"Method=POST");
modelAndView.setViewName("index");
return modelAndView;
}
用法4 params属性限定请求参数 : 支持简单的表达式语法,url一样,根据携带参数的不同进入不同的方法处理
params属性限定请求参数,支持简单的表达式语法,url一样,根据携带参数的不同进入不同的方法处理,url相同,请求方式相同,请求参数不同进入不同hanlder方法处理
- index.jsp页面
<fieldset>
<h4>用法4 params属性限定请求参数 : 支持简单的表达式语法,url一样,根据携带参数的不同进入不同的方法处理</h4>
<a href="http://localhost:8080/user/login.do?type=user">普通用户</a>
<a href="http://localhost:8080/user/login.do?type=admin">管理员</a>
<a href="http://localhost:8080/user/login.do?type=vip">VIP</a>
</fieldset>
- UserController控制器
@Controller
@RequestMapping("user")
public class UserController {
//普通用户
@RequestMapping(value={"login"}, params = {"type=user"})
public ModelAndView loginUser(ModelAndView modelAndView){
//封装数据
modelAndView.addObject("nowDate", new Date() +"===user");
//指定页面
modelAndView.setViewName("result");
return modelAndView;
}
//管理员
@RequestMapping(value={"login"}, params = {"type=admin"})
public ModelAndView loginAdmin(ModelAndView modelAndView){
//封装数据
modelAndView.addObject("nowDate", new Date() +"===admin");
//指定页面
modelAndView.setViewName("result");
return modelAndView;
}
//VIP
@RequestMapping(value={"login"}, params = {"type=vip"})
public ModelAndView loginVIP(ModelAndView modelAndView){
//封装数据
modelAndView.addObject("nowDate", new Date() +"===VIP");
//指定页面
modelAndView.setViewName("result");
return modelAndView;
}
/*
* url相同,请求方式相同,请求参数不同
* @RequestMapping注解属性params
* id:表示请求必须包含名为 id 的请求参数
* 演示: http://localhost:8080/user/gotoResultParamsURL.do?id=11
* !id:表示请求不能包含名为 id 的请求参数
* 演示: http://localhost:8080/user/gotoResultParamsURL?id=123
* id=100:表示请求包含名为 param1 的请求参数,但其值不能为 100
* 演示: http://localhost:8080/user/gotoResultParamsURL.do?id=100
*{“id!=100”, “name”}:请求必须包含名为 id 和 name 的两个请求参数,
* http://localhost:8080/user/gotoResultParamsURL.do?id=123
*/
@RequestMapping(value={"gotoResultParamsURL"}, params = {"id!=100","name"})
public ModelAndView gotoResultParamsURL (ModelAndView modelAndView){
//封装数据
modelAndView.addObject("nowDate", new Date() +"===gotoResultParamsURL");
//指定页面
modelAndView.setViewName("result");
return modelAndView;
}
}