浅谈之SpringMVC之常用注解

RequestMapping

  • 映射请求:也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置
  • @RequestMapping("/testRequestparam")

RequestParam

  • 可以对传入参数指定参数名
@RequestMapping("/testRequestparam")
    public String testRequestparam(@RequestParam(name ="name") String username){
        //不加RequestParem,就必须参数叫做username
        System.out.println(username);
        System.out.println("执行了!");
        return "success";
    }

RequestBody

  • 获取到请求体内容
@RequestMapping("/testRequestBody")
    public String testRequestBody(@RequestBody String Body){

        System.out.println("执行了!");
        System.out.println(Body);
        return "success";
    }

RequestBody和RequestMapping区别

  • 注解@RequestParam接收的参数是来自HTTP请求体或请求url的QueryString中。RequestParam可以接受简单类型的属性,也可以接受对象类型。
  • 注解@RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。

PathVariable

  • 占位符传参
@RequestMapping("/testPathVariable/{sid}")
    public String testPathVariable(@PathVariable(name="sid") String id){

        System.out.println("执行了!");
        System.out.println(id);
        return "success";
    }

RequestHeader

  • 获取请求头信息
@RequestMapping("/testRequestHeader")
    public String testRequestHeader(@RequestHeader(value="Accept ") String Header){

        System.out.println("执行了!");
        System.out.println(Header);
        return "success";
    }

CookieValue

  • 获取cookie
@RequestMapping("/testCookieValue")
    public String testCookieValue(@CookieValue(value="JSESSIONID ") String cookieValue){

        System.out.println("执行了!");
        System.out.println(cookieValue);
        return "success";
    }

ModelAttribute

  • 被@ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个controller映射多个URL的用法来说,要谨慎使用。
@RequestMapping("/testModelAttribute")
    public String testModelAttribute (@ModelAttribute(value = "abc")  User user){
        System.out.println("ModelAttribute执行了!");
        System.out.println(user);
        return "success";
    }

    /**
     * 有返回值
     * @param uname
     * @return
     */
    @ModelAttribute
    public User showUser(String uname){
        System.out.println("user执行了!");
        //通过用户查询数据库(模拟)
        User user=new User();
        user.setUname(uname);
        user.setAge(20);
        user.setDate(new Date());
        return user;

    }
    /**
     * 没有返回值
     * @param uname
     */
    @ModelAttribute
    public void showUser(String uname, Map<String,User> map){
        System.out.println("user执行了!");
        //通过用户查询数据库(模拟)
        User user=new User();
        user.setUname(uname);
        user.setAge(20);
        user.setDate(new Date());
        map.put("abc",user);
    }

SessionAttributes

  • 注解只用作用在 类 上,作用是将指定的 Model 的键值对保存在 session 中。可以让其他请求共用 session 中的键值对。
/**
     * SessionAttributes
     * @return
     */
    @RequestMapping("/testSessionAttributes")
    public String testSessionAttributes (Model model){
        System.out.println("执行了!");

        //底层会存储到Request域对象中
        model.addAttribute("msg","爽");

        return "success";
    }

    /**
     * 获取
     * @param modelMap
     * @return
     */
    @RequestMapping("/getSessionAttributes")
    public String getSessionAttributes (ModelMap modelMap){
        System.out.println("执行了!");

        String msg=(String) modelMap.get("msg");
        System.out.println(msg);

        return "success";
    }

    /**
     * 清除
     * @param status
     * @return
     */
    @RequestMapping("/delSessionAttributes")
    public String delSessionAttributes (SessionStatus status){
        System.out.println("执行了!");

        status.setComplete();
        return "success";
    }

最后展示anno.jsp中的代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注解</title>
</head>
<body>
<%--常用的注解--%>

<%--Requestparam--%>
<a href="anno/testRequestparam?name=haha">Requestparam</a>

<br>
<%--RequestBody--%>
<form action="anno/testRequestBody" method="post">
    用户姓名:<input type="text" name= "uname"/><br/>
    用户年龄:<input type="text" name="age"/><br/>
    <input type="submit" name="提交"/><br/>
</form>

<%--PathVariable--%>
<a href="anno/testPathVariable/10">testPathVariable</a>

<%--ReqquestHeader--%>
<a href="anno/testReqquestHeader">ReqquestHeader</a>

<%--CookieValue--%>
<a href="anno/testCookieValue">CookieValue</a>

<%--ModelAttribute--%>
<form action="anno/testModelAttribute" method="post">
    用户姓名:<input type="text" name= "uname"/><br/>
    用户年龄:<input type="text" name="age"/><br/>
    <input type="submit" name="提交"/><br/>
</form>

<%--SessionAttributes--%>
<a href="anno/testSessionAttributes">SessionAttributes</a>
<a href="anno/getSessionAttributes">SessionAttributes</a>
<a href="anno/delSessionAttributes">SessionAttributes</a>

</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值