推文上热门(千万赞三)

springboot2.x(八)控制器和视图模板

2020-04-12  本文已影响0人  学者的小跟班

学者学者原创

尊敬的读者朋友,大家好,本文是《springboot2.x独门秘籍》系列的第八篇。本专题的文章将会以springboot项目实战为切入点,带着你应用spring、springboot的相关知识,并手把手教你整合持久层框架、安全框架、web框架等,让springboot成为你面试和工作中的加分项。

文末还有项目源码和额外赠送的编程资料哟!点击蓝色字体可查看 往期精选文章!

01 学习环境(参考)

02 本文主题

03 spring中的控制器

控制器是处理请求,并以某种方式进行响应的类,也就是Spring MVC中controller的概念。

此处的“某种方式”指的是控制器的响应类型,有可能响应一个页面,也可能响应一些json数据。

关于Spring MVC中的细节,我们在后续的文章中会慢慢说明,现在,我们先展示一个简单的控制器类:前端请求网站主页,控制器处理该请求并返回主页视图,核心代码如代码清单1-8-1所示。

/**代码清单1-8-1 控制器功能演示*/
/**
 * @描述:主页控制器
 * @2020年4月12日
 */
@Controller
public class IndexController {
    /**
     * @描述:处理对根路径"/"的请求
     * @return String
     */
    @GetMapping("/")  
    public String index() {
        //返回"index"视图
        return "index";
    }
}

@Controller注解功能是让Spring将该类识别为组件,并创建IndexController实例添加到Spring应用上下文中。

实际上,Spring中还有几个与@Controller效果一致的注解,包括

它们的作用效果完全相同,只不过此处@Controller注解更符合语义,更能描述出这个组件在应用中的作用。

index()方法是普通的控制器方法,@GetMapping("/")注解表明,如果对"/"发起HTTP GET请求,则由该类负责响应,该方法会返回String 类型的值。

index()方法的返回值会被解析为视图的逻辑名,上述代码中你可以理解为返回一个名为"index"的视图。

视图会被进一步解析为HTML页面返回给浏览器,浏览器会负责渲染HTML,形成可视化页面。

除了上述三点,代码注释也值得各位同学借鉴,在阿里巴巴编码规范一书中,对代码注释有如下规定

说明:在 IDE 编辑窗口中,Javadoc 方式会提示相关注释,生成 Javadoc 可以正确输出相应注释;

在 IDE中,工程调用方法时,不进入方法即可悬浮提示方法、参数、返回值的意义,提高阅读效率。

04 视图模板和Thymeleaf

视图模板的定义方式有很多,包括JSP、FreeMarker、Thymeleaf等。

Thymeleaf是Spring官方推荐的模板引擎,使用简单,功能强大,所以此处将以Thymeleaf的语法定义视图模板。

视图模板的名称是有控制器方法发挥的逻辑名派生而来的,如代码清单1-8-1中,index方法返回 的逻辑名为index。

逻辑名加前缀"/templates/"和后缀".html"就形成了完整的模板路径"/templates/index.html"。

前缀和后缀都是Spring官方默认,可以在配置文件中更改,但是完全没必要。

到此,我们讲解了什么是控制器以及如何由视图逻辑名找到视图模板,我们只需要在templates目录下创建index.html即可完成视图模板的创建。

视图模板定义了页面长什么样子,只要用Thymeleaf的语法正确引用js、css、图片等静态资源,浏览器就可以正常渲染,一个简单的视图模板如代码清单1-8-2所示。

<!-- 代码清单1-8-2 视图模板 -->
<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>视图模板index</title>
    </head>
    <body>
        <h2>hello,欢迎查看"学者学者"的原创图文</h2>
        <img th:src="@{/images/centos8.png}" alt="">
</body>
</html> 

至此,控制器和视图模板均编写完毕,启动项目,在浏览器中请求http://localhost:8080/即可得到相应,如图1-8-3所示。

图1-8-3
关于Thymelaf模板引擎的语法、用法,我在之前的文章中有详细讲解,链接如下
上一篇 下一篇

猜你喜欢

热点阅读