02SpringMVC注解解析

@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/delete
2. 方法上:请求 URL 的第二级访问目录,和一级目录组成一个完整的 URL 路径。
* 属性:
1.value :用于指定请求的 URL 。它和 path 属性的作用是一样的
2.method :用来限定请求的方式
3.params :用来限定请求参数的条件
例如: params={"accountName"} 表示请求参数中必须有 accountName
pramss={"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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值