SpringBoot项目中MVC使用--【JSB系列之010】

简介: SpringBoot项目中MVC使用--【JSB系列之010】

Http协议是马冬梅

HTTP简介 1. HTTP协议是用于从服务器传输超文本到本地浏览器的传送协议。 2. HTTP基于TCP/IP通信协议进行传送输数据(HTML文件、图片文件、查询结果等)

这个协议最大的特点是无状态性,有点像《夏洛特烦恼》里的看门大爷。

这就是得每次说话的时候,你好这里是007,这里发生了一起抢劫。

cookie 就是这样子说话的。这样子太麻烦了。又出来的另一种谈话方式:我是谁,你不知道么?谁有你的电话你自己不清楚?

Cookie机制

在最初和服务端完成交互后,保持状态所需的信息都将存储在客户端,后续直接读取发送给服务端进行交互。

Session机制

将用户的所有活动信息、上下文信息、登录信息等都存储在服务端,只是生成一个唯一标识ID发送给客户端,后续的交互将没有重复的用户信息传输

信息放我这,你怕不安全,放你那吧,你说你没地方处理。那我们放另一间屋里吧,我给你那间房的钥匙(KEY)好了。于是JSON Web Token(JWT)就诞生了

Token

Token避免了Session机制带来的海量信息存储问题,也避免了Cookie机制的一些安全性问题,在现代移动互联网场景、跨域访问等场景有广泛的用途。

也是目前最主流的客户信息的保留方式。

用户的信息这样存储了,那业务的信息怎么处理?总不能一个String,一个int 的这样传输吧?于是又发明了MVC模型,这样前后台感觉一下子又可以愉快的交流了。

MVC模型

MVC的数据传输包括两个方面。

  • 浏览器给服务器的信息
  • 服务器给浏览器的信息

本章的专注内容

Controller如何将山货送到html页面?

UserController代码

@Controller
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("/getall")
    public String getAllUser(ModelMap map) {
        //存储获取到的用户信息,保存到map中
        map.addAttribute("users", userService.getAll());
        return "show.html";
    }
}

这里的图可以参考 SpringBoot项目中WEB与Controller的联系–【SB系列之009】

只是在【SB系列之009】中直接跳转过去的。并没有数据传输。

这里再一次建议,如果【SB系列之009】没有动手练过三次以上的,还是要把这个跳转关系多多练习,毕竟在实际的项目过程中,也是先做跳转的串联关系,然后再来调试页面里的数据。

这一次的Controller类里多了一行这样的代码:

map.addAttribute("users", userService.getAll());

这个map 是Sb框架里自带的。利用的还是request.setAttribute( 这部分的内容就要涉及JAVAWEB)的知识了。这里就不再展开了。

userService.getAll() 是纯后台的代码。看【SB系列之001】-【SB系列之007】就可以了

然后,再来看show.html(接收数据的页面)

<table class="table">
    <caption>用户的基本信息</caption>
    <thead>
    <tr>
        <th>序号</th>
        <th>名字</th>
    </tr>
    </thead>
    <tr th:each="user:${users}">
        <td th:text="${user.id}"></td>
        <td th:text="${user.username}"></td>
    </tr>
</table>

那这一个页面上怎么会这么复杂?因为这本来就是一个比较庞大的页面模板技术。

Thymeleaf

Thymeleaf 是一个流行的模板引擎,该模板引擎采用 Java 语言开发

thymeleaf 是一个开源软件,最初由一位名叫 Daniel Fernández 的西班牙软件工程师创建,它既不是由任何软件(或任何其他类型的)公司制作也不是由任何公司提供支持,并且根据Apache 许可证 2.0以二进制和源代码形式完全免费向公众提供。

模板引擎是一个技术名词,是跨领域跨平台的概念,在 Java 语言体系下有模板引擎,在 C#、PHP 语言体系下也有模板引擎,甚至在 JavaScript 中也会用到模板引擎技术,Java 生态下的模板引擎有 Thymeleaf 、Freemaker、Velocity、Beetl(国产) 等。

Thymeleaf 对网络环境不存在严格的要求,既能用于 Web 环境下,也能用于非 Web 环境下。在非 Web 环境下,他能直接显示模板上的静态数据;在 Web 环境下,它能像 Jsp 一样从后台接收数据并替换掉模板上的静态数据。它是基于 HTML 的,以 HTML 标签为载体,Thymeleaf 要寄托在 HTML 标签下实现。

SpringBoot 集成了 Thymeleaf 模板技术,并且 Spring Boot 官方也推荐使用 Thymeleaf 来替代 JSP 技术,Thymeleaf 是另外的一种模板技术,它本身并不属于 Spring Boot,Spring Boot只是很好地集成这种模板技术,作为前端页面的数据展示

成功点亮。

好了,我们不管这个技术了。

Let’s GO!

好,一步成功点亮,关电,拉闸,领盒饭!走人。

总结

提示:IT是一个要多动手的职业,一定要多练不要贪快:

这一步涉及到的知识可以说非常之多。能花一周的时间把这篇文章里的东西弄一个大概并运行出来,也是很不容易的,而且难度也不低,准确一点说,培训机构也能让你似懂非懂的把这个代码跑起来,但是大公司为啥还是对211高校情有独衷,主要原因就是这部分出错的时候,没有JAVAWEB的基础,你很难调试,还不不包括SpringMVC 的接受参数的部分,详见【SB系列之001】-【SB系列之007】。

做到这一步,你会了springBoot了么?会了,但是每一步你会的都是初级。传的对象复杂了,数据信息多了,都可能会出现这样那样的问题。

还有就是springboot 的缓存,JWT,消息队列,安全机制 ,任务管理其实他们从SSM甚至SSH的时候就有了。只是springboot 一下子全集成过来了。你去看别人的SSM项目 ,这些东西也都有。

所以,程序猿与学员纯在着本质的差别。那么如何提高呢?当然要多读别人的成功项目了。

GITEE上面存在着大量的springboot的项目,英文没有问题的话,可以去github。

作业

1 本章的代码你练习100次不算多,当然了,你会做越来越多的功能,越来越复杂的功能。

2 去找 springboot的项目 打开学习之门

3 还可以看黑马的springboot的视频,最后能上手这个阶段的案例

配套资源

https://download.csdn.net/download/dearmite/88050348

题外话

不是报班不报班的问题而是你要真心的想学好的话,你报了班也完全取决于你的自学,你的学习能力才是你以后35岁在IT行业立足的资本,省下来的钱,我们用来买吃的,水果,零食,它不香么?

这里说一下学习JAVA需要的机器的问题。

事实上学习JAVA一直到你做到架构师,你的机器可能只需要一台1000元,(没看错,不是1万)的台式机而已。

再次劝告,你目前的机子不能运行大型3A游戏,这对于你绝对是一件很有利的事情。

相关文章
|
1月前
|
Java Linux
Springboot 解决linux服务器下获取不到项目Resources下资源
Springboot 解决linux服务器下获取不到项目Resources下资源
|
1月前
|
Java API Spring
SpringBoot项目调用HTTP接口5种方式你了解多少?
SpringBoot项目调用HTTP接口5种方式你了解多少?
97 2
|
1月前
|
前端开发 JavaScript Java
6个SpringBoot 项目拿来就可以学习项目经验接私活
6个SpringBoot 项目拿来就可以学习项目经验接私活
39 0
|
2月前
|
前端开发 Java 关系型数据库
SpringBoot+MyBatis 天猫商城项目
SpringBoot+MyBatis 天猫商城项目
63 1
|
2月前
|
Java Maven 微服务
springboot项目开启远程调试-jar包
springboot项目开启远程调试-jar包
25 0
|
1月前
|
前端开发 Java 应用服务中间件
Springboot对MVC、tomcat扩展配置
Springboot对MVC、tomcat扩展配置
|
3天前
|
Java
springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
11 0
|
4天前
|
Java Spring
Spring boot项目如何发送邮件
Spring boot项目如何发送邮件
14 2
|
10天前
|
存储 Java 应用服务中间件
Springboot项目打war包部署到外置tomcat容器【详解版】
该文介绍了将Spring Boot应用改为war包并在外部Tomcat中部署的步骤:1) 修改pom.xml打包方式为war;2) 排除内置Tomcat依赖;3) 创建`ServletInitializer`类继承`SpringBootServletInitializer`;4) build部分需指定`finalName`;5) 使用`mvn clean package`打包,将war包放入外部Tomcat的webapps目录,通过startup脚本启动Tomcat并访问应用。注意,应用访问路径和静态资源引用需包含war包名。
|
11天前
|
Java
SpringBoot 项目启动初始化一个Map对象到内存
SpringBoot 项目启动初始化一个Map对象到内存