@Controller
SpringMVC
基于
Spring
容器,所以在进行
SpringMVC
操作时,需要将
Controller
存储到
Spring
容器
中,如果使用
@Controller
注解标注的话,就需要使用
<!-- 配置注解扫描 --><context:component-scan base-package = "com.lagou.controller" />
@RequestMapping
* 作用:用于建立请求 URL 和处理请求方法之间的对应关系* 位置:1. 类上:请求 URL 的第一级访问目录。此处不写的话,就相当于应用的根目录。写的话需要以 / 开头。它出现的目的是为了使我们的 URL 可以按照模块化管理 :用户模块/user/add/user/update/user/delete...账户模块/account/add/account/update/account/delete2. 方法上:请求 URL 的第二级访问目录,和一级目录组成一个完整的 URL 路径。* 属性:1.value :用于指定请求的 URL 。它和 path 属性的作用是一样的2.method :用来限定请求的方式3.params :用来限定请求参数的条件例如: params={"accountName"} 表示请求参数中必须有 accountNamepramss={"money!100"} 表示请求参数中 money 不能是 100
@RequestParam
当请求的参数
name
名称与
Controller
的业务方法参数名称不一致时,就需要通过
@RequestParam
注
解显示的绑定
<a href = "${pageContext.request.contextPath}/user/findByPage?pageNo=2" >分页查询</a>
/*
@RequestParam
name: 匹配页面传递参数的名称
defaultValue: 设置参数的默认值
required:设置是否必须传递该参数,默认值为true,如果设置了默认值,值自动改为false
*/
@RequestMapping("findByPage")
public String findByPage(@RequestParam(name = "pageNo",defaultValue = "1",required = false)Integer pageNum, @RequestParam(defaultValue = "5")Integer pageSize){
System.out.println(pageNum); //2
System.out.println(pageSize); //5
return "success";
}
@RequestHeader
获取请求头的数据。
@RequestMapping("/RequestHeader")
public String requestHead(@RequestHeader("cookie") String cookie){
System.out.println(cookie);
return "success";
}
@CookieValue
@RequestMapping("/cookieValue")
public String cookieValue(@CookieValue("JSESSIONID") String jsessionId){
System.out.println(jsessionId);
return "success";
}
forward
转发
@RequestMapping("/forward")
public String forward(Model model){
//还想在模型中设置一些值怎么做?
model.addAttribute("username","拉勾招聘");
// 使用请求转发,既可以转发到jsp,也可以转发到其他的控制器方法
//return "forward:/product/findAll";
return "forward:/WEB-INF/pages/success.jsp";
}
Redirect
重定向
RequestMapping("/redirect")
public String redirect(Model model){
// 底层使用的还是reqeust.setAttribute("username","拉勾教育") 域范围:一次请求
model.addAttribute("username","拉勾教育");
return "redirect:/index.jsp";
}
@SessionAttributes
如果在多个请求之间共用数据,则可以在控制器类上标注一个
@SessionAttributes,
配置需要在
session
中存放的数据范围,
Spring MVC
将存放在
model
中对应的数据暂存到
HttpSession
中。
注意:
@SessionAttributes
只能定义在类上
@Controller
@SessionAttributes("username")
//向request域存入的key为username时,同步到session域中
public class UserController {
@RequestMapping("/forward")
public String forward(Model model) {
model.addAttribute("username", "子慕");
return "forward:/WEB-INF/pages/success.jsp";
}
@RequestMapping("/returnString")
public String returnString() {
return "success";
}
}
@ResponseBody
该注解用于将
Controller
的方法返回的对象,通过
HttpMessageConverter
接口转换为指定格式的数
据如:
json,xml
等,通过
Response
响应给客户端。
/*@RequestMapping produces = "application/json;charset=utf-8"
响应返回数据的mime类型和编码,默认为 json */
@RequestMapping(value = "/ajaxRequest")
@ResponseBody
public List<User> ajaxRequest(@RequestBody List<User> list) {
System.out.println(list);
return list;
}