一. @RequestMapping
1.概述
:
主要是设置SpringMVC请求的映射路径
所谓的映射路径,就是匹配请求路径和执行方法关系的路径.
2.请求路径和映射路径:
请求路径:http://localhost:8080/springmvc/method1
映射路径:@RequestMapping(value="/method1")
3.放置位置
用于贴在控制器的类上或者方法上面
1)如果是贴在控制器的类上面,那么在访问这个类的方法之前必须先加上类上的对应的名称
类似于 项目下面的 模块名称
2) 如果贴在方法上面,就是访问此方法的资源名称
@Controller
@RequestMapping("/request")//访问时必须加上,类似模块名称
public class HelloController {
@RequestMapping(value = "/demo01")//资源名称
public ModelAndView method01(){
ModelAndView mv = new ModelAndView();
mv.addObject("username","小明");
mv.setViewName("/hello.jsp");
return mv;
}
}
以上配置的话,访问路径是http://localhost:8080/springmvc/request/demo01
二.两种限制
SpringMVC支持对请求的限制.如果不满足限制的条件,就不让访问执行方法.
这样做,大大提高了执行方法的安全性.
主要的限制有两种:(method)方法限制,参数限制
1.方法限制
就是设置请求的method类型.如果发送过来的请求与方法设置的method不一样,就不能访问执行方法.
例如:
<form action="${pageContext.request.contextPath }/login.do" method="get">//请求的方法是get
<input type="submit" value="登录">
</form>
/**
* 接收的请求,必须是POST
* @return
*/
@RequestMapping(value="login",method=RequestMethod.POST)
public String login(){
System.out.println("-登录-");
return "/login.jsp";
}
前台发送的是GET请求,而方法限制是POST请求,所以请求无法执行方法
1.参数限制
1)就是请求里面必须包括哪些参数,或不包括哪些哪些.
2)参数包括哪些值,不包括哪些值
限制参数格式:
1.参数必须包括:params={“username”,“password”}
2.参数不能包括:params={"!userid"}
3参数值必须是指定的值:params={“username=zhangsan”})
4.参数值必须不是指定的值:params={“userid!=123”})
例子:
请求:没有后台方法指定的参数
<form action="${pageContext.request.contextPath}/request/login2" method="post">
账号:<input name="username"><br>
密码:<input type="password" name="pwd"><br>
<button type="submit">登录</button>
</form>
后台
//表示登录时必须包括用户名和密码
@RequestMapping(value = "/login2",params = {"username","password"})
public String method01(){
System.out.println("登录");
return "/login.jsp";
}
三.Spring方法参数可以注入的类型
SpringMVC的方法默认可以注入 JavaWeb开发常用的数据共享对象
HttpServletRequest
HttpServletResponse
HttpSession
获取这些共享对象以后,就可以向之前的Servlet一样,做任何数据共享以及页面跳转操作
/*
* Spring的方法默认可以注入 JavaWeb开发常用的数据共享对象
HttpServletRequest
HttpServletResponse
* HttpSession 以后开发 按需注入
*/
@RequestMapping(value = "/method0")
public void method0(HttpServletRequest req,
HttpServletResponse resp,
HttpSession session) {
//TODO
}