IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springboot常用标签介绍 -> 正文阅读

[Java知识库]springboot常用标签介绍

1、问题描述

springboot下,基本全标签化了,spring标签很多,有时候会混淆,简单记录下,以免有时候会迷糊。

2、解决方案

2.1 @Controller/@Service/@Repository/@Component

简单说明:

@Controller用于标注控制层组件;
@Service用于标注业务层组件;
@Repository用于标注数据访问组件,即DAO组件;
@Component泛指组件,组件不好分类的的时候,使用该标签;

(1)2.5以前这几个标签作用是一样的,都是用于将POJO加载到spring容器中,不同是的业务层面,不同的标签名字让人一目了然类的作用,但实际作用一样;

(2)spring5开始,@Controller有点不一样了,简单来说就是只有被标注为@Controller的类,Spring才会自动的去扫描该类里面的@RequestMapping,假如类被标记为其他标签,里面的@RequestMapping是不会被识别的,通过页面访问,会报找不到该资源;

2.2 @RequestMapping

非常重要的一个标签,用于映射请求,也就是通过它来指定控制器可以处理哪些URL请求,简单来说用户页面通过IP:端口/该地址,后台就能捕获/接收到该请求;

相当于Servlet中在web.xml中配置的映射作用一致

<servlet>
    <servlet-name>servletName</servlet-name>
    <servlet-class>ServletClass</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>servletName</servlet-name>
    <url-pattern>url</url-pattern>
</servlet-mapping>

@RequestMapping类:

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
	String name() default "";
	@AliasFor("path")
	String[] value() default {};
	@AliasFor("value")
	String[] path() default {};
	RequestMethod[] method() default {};
	String[] params() default {};
	String[] headers() default {};
	String[] consumes() default {};
	String[] produces() default {};

}

(1)@Target({ElementType.TYPE, ElementType.METHOD}),表明@RequestMapping()既可以标注类上面,也可以标注再方法上,同时标注的话,浏览器访问需要拼接起来,例如:IP:端口号/项目名称/类上的标注value/方法value

(2)可以看到注解中的属性除了 name() 返回的字符串,其它的方法均返回数组,也就是可以定义多个属性值,例如 value() 和 path() 都可以同时定义多个字符串值来接收多个URL请求;

@RestController
@RequestMapping("/hello")
public class Hello {
    @RequestMapping(value = {
            "/test",
            "/aa"
    })
    public String test() {
        return "老王是帅哥";
    }
}

当浏览器录入:

http://localhost:6060/hello/aa
或者
http://localhost:6060/hello/test

(3)其他还有很多设置,比如@GetMapping(“/test”),@PostMapping(“/test”),其实就是设置了method,还有参数占位等就不多说,比较散,用的时候自己查一下吧。

2.3 RequestBody与ResponseBody

@RequestBody 注解则是将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。
作用:

  1. 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;

  2. 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

@ResponseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据。

示例:

@RequestMapping(value = "user/login")
@ResponseBody
public User login(@RequestBody User user) {   
// 这样就不会再被解析为跳转路径,而是直接将user对象写入 HTTP 响应正文中
    return user;   
 }

2.4 @Controller和@RestController

@RestController相当于@Controller+@ResponseBody合在一起使用的效果,返回json数据格式。

2.5 springboot约定访问(static与templates)

前端资源,有两个约定的目录,resources\static和resources\templates,现在前后端分离,这两个目录用的比较少,但是也是需要知道这两个目录干嘛用的,有时候后端测试的时候可以用一下,static用户放置资源,一般是图片、js等静态资源;templates用于放置动态页面;

(1)静态资源,约定放到resources\static下面就可以直接访问;

直接访问:

(2)动态页面,约定放置到resources\templates下面

默认放置到templates目录下面的动态html页面(1.html)不能直接访问的,springboot默认的前端开发是thymeleaf,需要添加该pom依赖;

(1)添加pom依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

(2)cotroller跳转,不能使用@RestController,要使用@Controller

@Controller
public class test {
    @GetMapping("/test")
    public String test() {
       return "1";
    }
}

效果:


更多信息请关注公众号:「软件老王」,关注不迷路,软件老王和他的IT朋友们,分享一些他们的技术见解和生活故事。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-27 17:14:02  更:2022-05-27 17:14:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:50:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码