SpringBoot:Web(附带示例代码)

简介: SpringBoot:Web(附带示例代码)

SpringBoot web开发

jar:webapp在哪里


最大特点:自动装配


SpringBoot帮我们配置了什么,能不能进行修改,能修改那些东西,能不能拓展


xxxxAutoConfiguration…向容器中自动配置组件

XXXXProperties:实现自动配置类装配配置文件中自定义的内容!

要解决的问题:


导入静态资源,如何导入!

首页问题

模版引擎,thymeleaf

装配扩展SpringMvc

剩下的就只有增删改了

拦截器

扩展国际化


静态资源

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) {
      if (!this.resourceProperties.isAddMappings()) {
        logger.debug("Default resource handling disabled");
        return;
      }
      addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
      addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
        registration.addResourceLocations(this.resourceProperties.getStaticLocations());
        if (this.servletContext != null) {
          ServletContextResource resource = new ServletContextResource(this.servletContext, SERVLET_LOCATION);
          registration.addResourceLocations(resource);
        }
      });
    }


什么是webjars

一个网站是和maven仓库类似的导入依赖的网站


导入的依赖结构是

1.png



我们的静态资源路径方法中


addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");


就是去类路径下找到/META-INF/resources/webjars/下的文件,


例子:


访问http://localhost:8080/webjars/jquery/3.6.0/jquery.js


实测成功


总结:


SpringBoot处理静态资源的方式

webjars:http://localhost:8080/webjars/jquery/3.6.0/jquery.js

pubilc:按优先级排序:resources,static,public,如何访问:/**:

http://localhost:8080/1.js

优先级:resources>static(默认)》public


首页如何定制


在web配置类WebMvcAutoConfiguration中共有对首页的一系列处理

1.png


如何找得到资源下的index?

1.png



调用查找资源方法,找到index并且返回,没找到的话相对处理后返回空

2.png



SpringBoot页面跳转:

@Controller
public class HelloController {
@RequestMapping("/a")
    public String hello(){
        return "index";
    }
}

注意:


在template目录下的所有页面,只能通过controller来跳转

需要模版引擎的支持

模版引擎:Thymeleaf

我们以前用jsp来展示数据,模版引擎的作用就是我们来写一个页面模版,比如一些值,表达式,tomcat支持jsp但是由于我们用的是嵌入式的tomcat,所以他现在默认是不支持jsp的


thymeleaf:

Thymeleaf 是适用于 Web 和独立环境的现代服务器端 java 模板引擎,能够处理 html、XML、javaScript、CSS 甚至纯文本。


Thymeleaf 的主要目标是提供一种优雅且高度可维护的模板创建方式。为了实现这一点,它建立在自然模板的概念之上,以不影响模板用作设计原型的方式将其逻辑注入模板文件。这改善了设计的沟通并弥合了设计和开发团队之间的差距。


Thymeleaf也已经从一开始就设计了Web标准记-尤其是html5 -允许您创建充分验证模板


Springboot推荐使用模版引擎来简化开发,

1.png



引入依赖:


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

使用只需要导入依赖,我们将html放到templeats下就可以跳转了


注意:如果导入jar失败尝试回退版本,即可

thymeleaf基础语法:

<!--所有的html元素都可以被thymeleaf接管,如何接管? th:元素-->

<div th:text="${msg}"></div>


表达式:


${x}将返回x存储在 Thymeleaf 上下文中或作为请求属性的变量。

${param.x}将返回一个名为(可能是多值的)的请求参数x。

${session.x}将返回一个会话属性叫x。

${application.x}将返回一个名为的servlet 上下文属性x。

常用语法:


简单的表达:

变量表达式: ${...}

选择变量表达式: *{...}

消息表达: #{...}

链接 URL 表达式: @{...}

片段表达式: ~{...}

文字

文本字面量:'one text', 'Another one!',…

数字字面量:0, 34, 3.0, 12.3,…

布尔文字:true,false

空字面量: null

文字标记:one, sometext, main,…

文字操作:

字符串连接: +

字面替换: |The name is ${name}|

算术运算:

二元运算符:+, -, *, /,%

减号(一元运算符): -

布尔运算:

二元运算符:and,or

布尔否定(一元运算符):!,not

比较与相等:

比较器:>, <, >=, <=( gt, lt, ge, le)

等式运算符:==, !=( eq, ne)

条件运算符:

如果-那么: (if) ? (then)

如果-然后-其他: (if) ? (then) : (else)

默认: (value) ?: (defaultvalue)


常用代码示例:

controller:index

@Controller
public class HelloController {
@RequestMapping("/index")
    public String hello(Model model){
    model.addAttribute("msg","<h1>hello SpringBoot</h1>");
       model.addAttribute("users", Arrays.asList("hyc","lhy"));
        return "index";
    }
}


index.html

<!--所有的html元素都可以被thymeleaf接管,如何接管? th:元素-->
<!--不转义-->
<div th:text="${msg}"></div>
<!--转义-->
<div th:utext="${msg}"></div>
<hr>
<!--th:text显式数据-->
<h3 th:each="user:${users}" th:text="${user}"></h3>
<!--行内显式数据-->
<h3 th:each="user:${users}" >[[${user}]]</h3>
</body>

小结:

看了一下Springboot的WebMvcAutoConfiguration的设置首页的方法,发现和我们之前SpringMVC的视图解析器十分相似,对比学习,更加提高

模版引擎可以方便我们把数据放到前端页面,简化我们的开发前端需要传值的操作,提升开发效率,


相关文章
|
2月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
60 4
|
28天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
48 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
1月前
|
XML Java 网络架构
使用 Spring Boot 公开 SOAP Web 服务端点:详细指南
使用 Spring Boot 公开 SOAP Web 服务端点:详细指南
38 0
|
2月前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
164 0
|
2月前
|
NoSQL Java 数据库连接
springBoot:整合其他框架&condition&切换web配置 (五)
本文档介绍了如何在Spring Boot项目中整合JUnit、Redis和MyBatis等框架,并提供了相应的依赖配置示例。同时,还展示了如何通过条件注解实现Bean的条件创建,以及如何切换Web服务器配置,从默认的Tomcat切换到Jetty。
|
4月前
|
Java Spring Apache
Spring Boot邂逅Apache Wicket:一次意想不到的完美邂逅,竟让Web开发变得如此简单?
【8月更文挑战第31天】Apache Wicket与Spring Boot的集成提供了近乎无缝的开发体验。Wicket以其简洁的API和强大的组件化设计著称,而Spring Boot则以开箱即用的便捷性赢得开发者青睐。本文将指导你如何在Spring Boot项目中引入Wicket,通过简单的步骤完成集成配置。首先,创建一个新的Spring Boot项目并在`pom.xml`中添加Wicket相关依赖。
137 0
|
4月前
|
Java Spring 开发者
Java Web开发新潮流:Vaadin与Spring Boot强强联手,打造高效便捷的应用体验!
【8月更文挑战第31天】《Vaadin与Spring Boot集成:最佳实践指南》介绍了如何结合Vaadin和Spring Boot的优势进行高效Java Web开发。文章首先概述了集成的基本步骤,包括引入依赖和配置自动功能,然后通过示例展示了如何创建和使用Vaadin组件。相较于传统框架,这种集成方式简化了配置、提升了开发效率并便于部署。尽管可能存在性能和学习曲线方面的挑战,但合理的框架组合能显著提升应用开发的质量和速度。
96 0
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
169 3
|
24天前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
1月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
186 45