Spring请求响应
@RequestMapping
@RequestMapping注解主要是设置SpringMVC请求的映射路径
所谓的映射路径,就是匹配请求路径和执行方法关系的路径.
请求路径:http://localhost:8080/springmvc/method1.do
映射路径:@RequestMapping(value="/method1")
@RequestMapping 用于贴在控制器的类上或者方法上面
如果是贴在控制器的类上面,那么在访问这个类的方法之前必须先加上类上的对应的名称
类似于 项目下面的 模块名称
如果贴在方法上面,就是访问此方法的资源名称
@Controller
@RequestMapping("/request") //访问时候必须加上,类似模块名称
public class RequestController {
@RequestMapping(value="/method1") //资源名称
public void method1() {
}
}
访问地址 : http://localhost:8080/springmvc/request/method1.do
两种限制
SpringMVC支持对请求的限制.如果不满足限制的条件,就不让访问执行方法.
这样做,大大提高了执行方法的安全性.
主要的限制有两种:(method)方法限制,参数限制
方法限制
就是设置请求的method类型.如果发送过来的请求与方法设置的method不一样,就不能访问执行方法.
请求method : GET , POST
<form action="${pageContext.request.contextPath }/login.do" method="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请求,所以请求无法执行方法
方法限制可以配置多个参数
@RequestMapping(value="login",method={RequestMethod.GET,RequestMethod.POST})
public String login(){
System.out.println("-登录-");
return "/login.jsp";
}
参数限制
1.就是请求里面必须包括哪些参数,或不包括哪些哪些.
2.参数包括哪些值,不包括哪些值
限制参数格式:
1.参数必须包括:params={“username”,“password”}
2.参数不能包括:params={"!userid"}
3参数值必须是指定的值:params={“username=zhangsan”})
4.参数值必须不是指定的值:params={“userid!=123”})
请求:没有后台方法指定的参数
<h4>登录页面</h4>
<form action="${pageContext.request.contextPath}/request/method1.do" method="post">
账号:<input name="username"><br>
密码:<input type="password" name="pwd"><br>
<button type="submit">登录</button>
</form>
后台代码
/**
* 需求:登录时必须包括用户名,密码
* @return
*/
@RequestMapping(value="login2",params={"username","password"})
public String login2(){
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
}