​ Spring与SpringBoot常用注解


回顾:SpringMVC快速入门,搭建SpringMVC开发环境


常用注解

1.RequestMapping注解:建立请求URL和处理方法之间的对应关系

回顾:RequestMapping注解详解

2.RequestParam注解:把请求中的指定名称的参数传递给控制器中的形参赋值

@Controller
@RequestMapping(value ="/param")
public class RequestParamController {
    /*
    属性
		value:请求参数中的名称
		required:请求参数中是否必须提供此参数。不写默认是true,必须提供该请求参数,否则404
		defaultValue:默认值
     */
    @RequestMapping(value ="/test")
    public String add(@RequestParam(value = "name",required = false,defaultValue = "无名氏") String name,
                      @RequestParam(value = "age") Integer age){
        System.out.println(name+"  "+age);
        //http://localhost:8080/param/test?name=张三三&age=10     控制台输出:  张三三    10
        //http://localhost:8080/param/test?name=张三三            控制台输出:  HTTP Status 400 – Bad Request
        //http://localhost:8080/param/test?age=18                控制台输出:  无名氏    18
        return "login";
    }
}

3.RequestBody注解:获取请求体的内容,参数拼接成一个字符串

在这里插入图片描述在这里插入图片描述在这里插入图片描述

@Controller
@RequestMapping(value = "/body")
public class RequestBodyController {
    /*接收前端传入的参数,并将参数拼接成一个字符串  注意:用于POST请求
    属性
        required:是否必须有请求体,默认值是true
     */
    @RequestMapping(value = "/test")
    public String show(@RequestBody String body){
        System.out.println(body);
        //name=%E5%91%A8%E5%93%88%E5%93%88&age=23&address=%E6%B1%9F%E8%A5%BF
        return "login";
    }

}

ResponseBody:返回Json数据

将Controller的方法返回的对象,通过转换器转换为指定的格式之后,写入到 Response 对象的 body 区,常用来返回 JSON 数据或 XML 数据 。
@RestController 这个注解,它就包含了 @ResponseBody 这个注解:@RestController=@ResponseBody+@Controller

在类上用@RestController,其内的所有方法都会默认加上@ResponseBody,也就是默认返回JSON格式。

如果某些方法不是返回JSON的,有的方法返回的是json,就只能在类上用@Controller返回view,然后在返回json的方法上加@ResponseBody。

Controller:返回视图View

@Controller是最基本的控制层注解,继承了Spring的@Component注解,会把对应的类声明为Spring对应的Bean,并且可以被Web组件管理。使用@Controller注解返回的是view,而不是Json数据。

4.PathVariable注解:绑定url中的占位符

@Controller
@RequestMapping(value = "/pathVariable")
public class PathVariableController2 {
    /*@PathVariable:提供对RestFul风格的支持
    Restful风格的URL:请求路径一样,可以根据不同的请求方式去执行后台的不同方法
	
	可以通过 GET、 POST、 PUT、 PATCH、 DELETE 等方式对服务端的资源进行操作。其中,GET 用于查询资源,POST 用于创建资源,
	PUT 用于更新服务端的资源的全部信息,PATCH 用于更新服务端的资源的部分信息,DELETE 用于删除服务端的资源。

         根据ID删除
           请求: http://localhost:8080/pathVariable/1
            	 http://localhost:8080/pathVariable/2
            ......
            ...
    */
    @RequestMapping(value = {"/{id}"},method = RequestMethod.DELETE)
    public String delete(@PathVariable(value = "id")Integer id){
        System.out.println("删除服务端的资源  id为"+id);
        return "login";
    }

    //根据ID查询
    @RequestMapping(value = {"/{id}"},method = RequestMethod.GET)
    public String getById(@PathVariable(value = "id")Integer id){
        System.out.println("查询资源   id为"+id);
        return "login";
    }
}

使用HTTP Client工具测试体现:请求路径一样,可以根据不同的请求方式执行后台的不同方法
在这里插入图片描述
DELETE 方式,执行delete方法在这里插入图片描述
GET方式,执行getById方法
在这里插入图片描述

5.RequestHeader注解:获取指定请求头的值

/*
属性
    value:请求头的名称
    required:请求参数中是否必须提供此请求头。不写默认是true,必须提供有该请求头。
    defaultValue:默认值
 */
@Controller
@RequestMapping(value ="/header")
public class RequestHeaderController {
    @RequestMapping(path="/test")
    public String show(@RequestHeader(value="Host",required = true,defaultValue = "没有值") String header) {
        System.out.println(header);
        //请求  http://localhost:8080/header/test      控制台输出 localhost:8080
        return "login";
    }
}

6.CookieValue注解:获取指定cookie的名称的值

在这里插入图片描述

@Controller
@RequestMapping(value = "/cookie")
public class CookieValueController {
    
    /*
    属性
   ·value:cookie的名称
    required:请求参数中是否必须提供此cookie的名称。不写默认是true,必须提供有该cookie的名称。
    defaultValue:默认值

     */
    @RequestMapping(value = "/test")
    public String show(@CookieValue(value = "JSESSIONID",required = false,defaultValue = "JSESSIONID没有值")String jsid){
        System.out.println(jsid);
        //6598974983EC4013BFC5375337B6EBFC
        return "login";
    }
}

7.SessionAttributes注解:用于多次执行控制器方法间的参数共享(全局Session设置)

①Model(模型信息)的使用
  • 作用:SpringMVC会把Model(模型信息)中的的数据放入到request域对象中,页面可以通过EL表达式来取request域中的数据。
  • 示例:后台使用Model的addAttribute方法,页面使用EL表达式取数据。

后台

@Controller
@RequestMapping(value = "/model")
public class ModelController {
    /* SpringMVC会把Model(模型信息)中的的数据放入到request域对象中
            后台使用Model的addAttribute方法添加信息
            前台页面使用EL表达式可取数据
     */
    @RequestMapping(value = "/test")
    public String getUser(Model model){
        //添加name信息,SpringMVC会把name存储到HttpServletRequest作用域中
        model.addAttribute("name","周哈哈");
        return "login";
    }
}

前台 login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>你已入门啦</h3>
<div>
    ${name}
</div>
</body>
</html>

在这里插入图片描述

②SessionAttributes注解
@Controller
@RequestMapping(value = "/session")
/*@SessionAttributes:把数据存入到session域对象中
value = "name":表示将Request域中的name值获取并存入到Session中
types:将request中指定的数据类型存入到Session中
 */
@SessionAttributes(value= {"username","password","age"},types= {Integer.class})
public class SessionAttributesController {
    //添加Session(向session中存入值)
    @RequestMapping(path="/save")
    public String save(Model model) {
        System.out.println("把数据存入到session域对象中");
        model.addAttribute("username", "root");
        model.addAttribute("password", "666");
        model.addAttribute("age", 18);
        return "test";
    }

    //后台查询Session(从session中获取值)
    @RequestMapping(path="/find")
    public String find(ModelMap modelMap) {
        String username = (String) modelMap.get("username");
        String password = (String) modelMap.get("password");
        Integer age = (Integer) modelMap.get("age");
        System.out.println(username + "   "+password +"   "+age);
        return "test";
    }

    //删除session
    @RequestMapping(path="/delete")
    public String delete(SessionStatus status) {
        status.setComplete();
        System.out.println("已删除session");
        return "test";
    }
}

分别依次访问:
http://localhost:8080/session/save
http://localhost:8080/session/find
http://localhost:8080/session/delete

控制台输出:
在这里插入图片描述

8.ModelAttribute注解:用于初始化相关属性数据

①作用在方法上,初始化相关属性
@Controller
@RequestMapping(value = "/modelattribute")
public class ModelAttributeController {


    /**
     作用在方法上,初始化相关参数(优先执行)
     如下,先给user的level属性赋值,再返回到add方法的入参,绑定所提交表单的值。
     */
    @ModelAttribute
    public User initUser(){
        System.out.println("ModelAttribute方法执行  初始化用户Level");
        User user = new User();
        user.setLevel(1);
        return  user;
    }


    /*
      增加用户   http://localhost:8080/modelattribute/add?name=张三三
      此时的user的Level已经被赋值为1了
     */
    @RequestMapping(value = "/add")
    public String add(User user){
         System.out.println("add方法执行");
        System.out.println(user);
        return "login";
    }
 }

User

public class User {

    private String name;
    //等级
    private Integer level;
    .....
    ...
 }

访问: http://localhost:8080/modelattribute/add?name=张三三
控制台输出:Level已被初始化为1
在这里插入图片描述

②作用在参数上,初始化相关属性
@Controller
@RequestMapping(value = "/modelattribute")
public class ModelAttributeController {
    //初始化数据
    @ModelAttribute
    public void initUserInfo(Map<String,User> map){
        System.out.println("ModelAttribute方法执行  初始化用户Level");
        User user = new User();
        user.setLevel(10);
        map.put("user",user);
    }

    // @ModelAttribute:作用在参数上   http://localhost:8080/modelattribute/param/add?name=张三三
    @RequestMapping(value = "/param/add")
    public String addUser(@ModelAttribute("user")User user){
        System.out.println("addUser方法执行");
        System.out.println(user);
        return "login";
    }
}

访问: http://localhost:8080/modelattribute/add?name=张三三
控制台输出:Level已被初始化为10
在这里插入图片描述


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
SpringSpring Boot都有一些常用的注解,用于配置和管理应用程序的各个方面。以下是一些常见的注解: 1. @Configuration: 这个注解用于标识一个类是配置类,其中定义了一些Bean的配置信息。 2. @ComponentScan: 这个注解用于指定要扫描的包,以查找和注册Spring组件。 3. @EnableAutoConfiguration: 这个注解用于启用Spring Boot的自动配置功能,根据类路径上的依赖自动配置Spring应用程序。 4. @Value: 这个注解用于从配置文件中读取属性值,并将其注入到对应的变量中。 5. @Controller: 这个注解用于标识一个类是控制器,处理HTTP请求并返回响应。 6. @Service: 这个注解用于标识一个类是服务类,执行业务逻辑和计算。 7. @Repository: 这个注解用于标识一个类是数据访问对象(DAO),用于访问数据库。 8. @Transactional: 这个注解用于标识一个方法或类需要在事务中执行,确保数据的一致性和完整性。 9. @Scheduled: 这个注解用于标识一个方法是定时任务,可以按照指定的时间间隔或表达式执行。 这些注解可以帮助开发者更方便地配置和管理SpringSpring Boot应用程序的各个方面。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [SpringSpringboot常见注解](https://blog.csdn.net/ynkimage/article/details/131364804)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Spring 最常用的 7 大类注解,一文整理!这些注解你都有用过吗?](https://blog.csdn.net/seven9711/article/details/113203148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Thinking in Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值