SpringMVC —— 常用注解

1.@RequestParam
作用:把请求中指定名称的参数给控制器中的形参赋值
属性:
value:请求参数中的名称
required:请求参数中是否必须提供此参数。默认值:true。表示必须提供,如果不提供报错

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <!--常用的注解-->
    <!--@RequestParam-->
    <a href="anno/testRequestParam?username=飞扬">RequestParam</a>
</body>
</html>
package com.fy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping("/anno")
public class annoController {
    @RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam(name="username") String name){
        System.out.println("执行了");
        System.out.println(name);
        return "success";
    }
}

在这里插入图片描述
2.@RequestBody
作用:用于获取请求体内容,直接使用得到是key=value&key=value 结构数据。(get不适用)
属性:required:是否必须有请求,默认是true,当取值是true时,get请求方式会报错,如果取值为false,get请求得到是null。

    /**
     * 获取到请求的内容
     * @return
     */
     @RequestMapping("/testRequestBody")
     public String testRequestBody(@RequestBody String body){
         System.out.println("执行了");
         System.out.println(body);
         return "success";
    }

    <!--@RequestBody-->
    <form action="anno/testRequestBody" method="post">
        姓名:<input type="text" name="name"/>
        年龄:<input type="text" name="age"/>
        <input type="submit" value="提交"/>
    </form>

在这里插入图片描述
如果出现中文乱码:

String encode = URLDecoder.decode(body,"utf-8");

可以解决中问乱码问题
3.@PathVariable
作用:拥有绑定url中的占位符的。例如:url中有/delete/{id},{id}就是占位符
属性:value:指定url中的占位符名称
Restful风格的url优点:结构清晰、符合标准、易于理解、扩展方便

 <!--@PathVariable-->
    <a href="anno/testPathVariable/10">PathVariable</a>
    <br/>
 /**
     * PathVariable注解
     * @return
     */
    @RequestMapping("/testPathVariable/{id}")
    public String testPathVariable(@PathVariable(name = "id") String id){
        System.out.println("执行了");
        System.out.println(id);
        return "success";
    }

在这里插入图片描述
4.@RequestHeader
作用:用于获取请求消息头
属性:value:提供消息头名称
required:是否必须有此消息头

    /**
     * RequestHead注解
     * @return
     */
    @RequestMapping("/testRequestHead")
    public String testRequestHead(@RequestHeader(name = "accept") String header){
        System.out.println("执行了");
        System.out.println(header);
        return "success";
    }
    <!--@RequestHead-->
    <a href="anno/testRequestHead">RequestHead</a>
    <br/>

在这里插入图片描述
5.@CookieValue
作用:用于把指定cookie名称的值传入控制器方法参数
属性: value:指定cookie的名称
required:是否必须有此cookie

<!--@CookieValue-->
    <a href="anno/testCookieValue">CookieValue</a>
    <br/>
 /**
     * CookieValue
     * @return
     */
    @RequestMapping("/testCookieValue")
    public String testCookieValue(@CookieValue(name = "JSESSIONID") String cookieValue){
        System.out.println("执行了");
        System.out.println(cookieValue);
        return "success";
    }

在这里插入图片描述
6.@ModelAttribute
作用:用于修饰方法和参数
在方法上。表示当前方法会在控制器的方法执行之前,先执行。他可以修饰没有返回值的方法,也可以修饰有具体返回值的方法。
在参数上,获取指定的数据给参数赋值
属性:value:用于获取数据的key。
方法上

    <!--@ModelAttribute-->
    <form action="anno/testModelAttribute" method="post">
        姓名:<input type="text" name="name"/>
        年龄:<input type="text" name="age"/>
        <input type="submit" value="提交"/>
    </form>
    <br/>
 /**
     * ModelAttribute
     * @return
     */
    @RequestMapping("/testModelAttribute")
    public String testModelAttribute(){
        System.out.println("执行了");
        return "success";
    }
    @ModelAttribute
    public void showUser(){
        System.out.println("showUser执行了");
    }

在这里插入图片描述
在参数上

    <!--@ModelAttribute-->
    <form action="anno/testModelAttribute" method="post">
        姓名:<input type="text" name="name"/>
        年龄:<input type="text" name="age"/>
        <input type="submit" value="提交"/>
    </form>
    <br/>

    /**
     * ModelAttribute
     * @return
     */
    @RequestMapping("/testModelAttribute")
    public String testModelAttribute(User user){
        System.out.println("执行了");
        System.out.println(user);
        return "success";
    }
    @ModelAttribute
    public User showUser(String name){
        System.out.println("showUser执行了");
        //模拟用户查找数据库
        User user=new User();
        user.setName(name);
        user.setAge(20);
        user.setDate(new Date());
        return user;
    }

在这里插入图片描述

    /**
     * ModelAttribute
     * @return
     */
    @RequestMapping("/testModelAttribute")
    public String testModelAttribute(@ModelAttribute("aaa") User user){
        System.out.println("执行了");
        System.out.println(user);
        return "success";
    }
    @ModelAttribute
    public void showUser(String name, Map<String,User> map) {
        System.out.println("showUser执行了");
        //模拟用户查找数据库
        User user = new User();
        user.setName(name);
        user.setAge(20);
        user.setDate(new Date());
        map.put("aaa",user);
    }
    <!--@ModelAttribute-->
    <form action="anno/testModelAttribute" method="post">
        姓名:<input type="text" name="name"/>
        年龄:<input type="text" name="age"/>
        <input type="submit" value="提交"/>
    </form>
    <br/>

在这里插入图片描述
7.@SessionAttribute
作用:用于多次执行控制器方法间的参数共享
属性:
value:用于指定存入的属性名称
type:用于指定存入的数据类型


    <!--@SessionAttribute-->
    <a href="anno/testSessionAttributes">SessionAttribute</a>
    <br/>
    /**
     * SessionAttributes
     * @return
     */
    @RequestMapping("/testSessionAttributes")
    public String testSessionAttributes(Model model){
        System.out.println("执行了");
        model.addAttribute("fy","飞扬");
        return "success";
    }
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>👅🐕🕸</title>
</head>
<body>
    <h3>入门成功</h3>
    ${sessionScope}
</body>
</html>

在这里插入图片描述

<a href="anno/getSessionAttributes">getSessionAttributes</a>
 @RequestMapping("/getSessionAttributes")
    public String getSessionAttributes(ModelMap modelMap){
        System.out.println("执行了");
        String fy = (String) modelMap.get("fy");
        System.out.println(fy);
        return "success";
    }

在这里插入图片描述
掌握好注解对后面编写代码很有帮助。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值