学习笔记:JavaEE开发的颠覆者SpringBoot实战(六)spring boot的web开发

springboot实现增删改查实例 | Spring Boot 7 立志存高远,笃行践初心 三更灯火五更鸡,正是男儿读书时。 黑发不知勤学早,白首方悔读书迟。 立志,标定人生方向;奋斗,创造人生价值,二者相辅相成,互相促进。 大部分程序员的「 目标 」都是成为一名优秀的工程师,一名可以统览全局的「 架构师 」。 哪吒社群专属社区 一个人的力量是有限的,报团取暖堪为良策。 ???? 社区入口:Java攻城狮 ???? 加入方式:扫描主页左侧二维码,加入群聊,或加本人微信guo_rui_ ???? 粉丝专属福利:包邮送书3本,如下书单四选一。 ??? 阅读详情

一.spring boot的web开发支持

spring boot提供了spring-boot-starter-web为web开发予以支持,spring-boot-starter-web为我们提供了嵌入的tomcat以及spring mvc的依赖。

二.Thymeleaf模板引擎

推荐使用的模板,因为提供了完美的spring mvc集成

1.Thymeleaf基础知识

1.1 引入Thymeleaf

<html xmlns:th="http://www.thymeleaf.org"> <!--此命名空间,将镜头页面转换为动态视图,需要进行动态处理的元素将使用“th:”为前缀-->
<head></head>
<body>
    <script th:src="@{jquery-1.10.2.min.js}" ></script> <!--通过“@{}”引用web静态资源-->
</body>
</html>

1.2 访问model中的数据

通过"${}"访问model中的属性

<div>
    <span th:text="${person.name}" ></span> <!--访问model中的person的name属性。-->
</div>

1.3 数据判断与model中的数据迭代

<div th:if="${not #lists.isEmpty(personList)}" > <!--表达式判断personList是否为空-->
    <ul>
        <li th:each="person:${personList}" >
            <span th:text="${person.name}" />
            <span th:text="${person.age}" />
        </li>
    </ul>
</div>

1.4 在js中访问model

<script th:inline="javascript"> 
   var single = [[${singlePerson}]];  <!--通过"[[${}]]"格式获得实际的值-->
    console.log(single.name+"/"+single.age)
</script>

1.5 其他

官网:https://www.thymeleaf.org/

2.集成依赖

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

三.Web相关配置

1.spring boot 提供的自动配置  --注:这节的内容有点懵

1.1 自动配置的ViewResolver

  • ContentNegotiatingViewReolver
  • BeanNameViewResolver
  • InternalResourceViewResolver

1.2 自动配置的静态资源

1.3 自动配置的Formatter和Converter

1.4 自动配置的HttpMessageConverters

1.5 静态首页的支持。

eg:把静态index.html文件放在classpath:/resources/index.html,访问引用根目录http:locatlhost:8080时,会映射。

2.接管spring boot的web配置

2.1 在配置类上加注解@EnableWebMvc注解来实现完全自己控制的MVC

2.2 实现接口WebMvcConfigurer,既保留springboot自动配置,又增加自己的额外配置。

3. 注册servlet,Filter,Listener

项目启动监听

@Component
public class MyListener implements ApplicationListener<ContextRefreshedEvent>{

    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent){
        sout("项目启动。。。。。。。")
    }

}

四. tomcat配置

1.配置tomcat

配置servlet容器

server.port=9090 #配置程序端口,默认为8080
server.session-timeout=5000 #用户会话session过期时间,以秒为单位
server.context-path=/demo #配置访问路径,默认为/

配置tomcat

server.tomcat.uri-encoding= UTF-8 #配置tomcat编码,默认为UTF-8 
server.tomcat.compression=off #tomcat是否开启压缩,默认为关闭off

2.代码配置tomcat

2.1 通用配置

@Component
public static class CustomServletContainer implements EmbeddedServletContainerCustomizer{
 
    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        container.setPort(8888);//配置端口
        container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"));//配置错误页面
        container.setSessionTimeout(10,TimeUnit.MINUTES);//配置用户会话过期时间
    }
 
}

2.2 特定配置

@Bean
public EmbeddedServletContainerFactory servletContainer() {
    TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
    factory.setPort(8888);
    factory.setSessionTimeout(10, TimeUnit.MINUTES);
    factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"));
    return factory;
}

3. 替换tomcat

依赖:

3.1 替换为Jetty

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
 
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

3.2 替换为Undertow

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
 
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-undertow</artifactId>
</dependency>

4.SSL配置

SSL(Secure Sockets Layer,安全套接层)是为网络通信提供安全及数据完整性的一种安全协议,SSL在网络传输层对网络连接进行加密。

基于B/S的Web应用中,是通过HTTPS来实现SSL的。HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即在HTTP下加入SSL层,HTTPS的安全基础是SSL。

4.1生成证书

打开控制台输入:

keytool -genkey -alias tomcat  -storetype PKCS12 -keyalg RSA -keysize 2048  -keystore keystore.p12 -validity 3650

生成别名是 keystore.p12的文件,放到项目跟目录下

4.2 spring boot配置SSL

放好证书后,建立一个index.html放到resources/templates文件夹下,一会用于测试。

再配置properties

server.port=8888
server.tomcat.uri-encoding=utf-8
server.servlet.context-path=/demo
 
server.ssl.key-store=keystore.p12
server.ssl.key-store-password=123456
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=tomcat
 
spring.thymeleaf.prefix=classpath:/templates/

4.3 http转向https

@Configuration
public class HttpsConfig {
 
    /**
     * spring boot 1.0
     */
   /* @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
            @Override
            protected void postProcessContext(Context  context) {
                SecurityConstraint constraint = new SecurityConstraint();
                constraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                constraint.addCollection(collection);
                context.addConstraint(constraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(httpConnector());
        return tomcat;
    }*/
 
    /**
     * spring boot 2.0
     * @return
     */
    @Bean
    public TomcatServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint constraint = new SecurityConstraint();
                constraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                constraint.addCollection(collection);
                context.addConstraint(constraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(httpConnector());
        return tomcat;
    }
 
    @Bean
    public Connector httpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        //Connector监听的http的端口号
        connector.setPort(8080);
        connector.setSecure(false);
        //监听到http的端口号后转向到的https的端口号
        connector.setRedirectPort(8888);
        return connector;
    }
 
}

控制层

@Controller
@RequestMapping
public class ViewControlller {
 
    @GetMapping("index")
    public String index(){
        return "index";
    }
}

当我们访问http://127.0.0.1:8080/demo/index 时会自动跳转到 https://127.0.0.1:8888/demo/index

5. Favicon配置(网站图标)

spring.mvc.favicon.enabled=false #默认为开启

springboot提供了要给默认的Favicon,若需要设置自己的Favicon,只需要将自己的文件,命名为favicon.ico放置在类路径根目录,类路劲resources/下,类路径static/下或者类路径public/下。

6.WebSocket

WebSocket为浏览器和服务端体哦国内了双工异步通信的功能,即流浪其可以向服务器其发送消息,服务端也可以向浏览器发送消息。

7.基于Bootstrap和AngularJS的现代web应用

现代的B/S系统软件特色:

  • 单页面应用:(single-page application,简称SPA)指的是一种类似于原生客户端软件的更流畅的用户体验页面
  • 相应时设计:(Responsive web design,简称RWD)指的是不同设备(电脑,平板,手机)访问相同的也买你的时候,得到不同的页面视图,而得到的视图时适用当前屏幕的。
  • 数据导向:数据导向是对于页面导向而言的,页面上的数据获得是通过消费后台的REST服务来实现的,而不是通过服务器渲染的动态页面(如JSP)来实现,一般数据交互使用的格式是JSON

 

 

j2ee+springboot+springcloud+mybatis 立即下载

相关推荐

J2EE大作业-SpringBoot项目

采用SpringBoot和H2数据库开发后台,前端采用layui前端框架编写,请求使用axio请求

Thymeleaf [[${}]]和[(${})]的区别

⏹Thymeleaf [[${}]]和[(${})]的区别

菜鸟记录 1726

【SAP PO】SAP PO 接口配置完整教程之二REST服务对接

SAP PO 接口配置完整教程之二REST服务对接

XLevon的博客 1万+

thymeleaf框架[[${}]]取值格式与layui table渲染的cols冲突问题

1.问题描述 我们都知道thymeleaf框架在js脚本内获取后台的session或者model里面的值是需要用到[[${}]]类似格式的,但是[[]]格式在js中也可以定义为数组,这就导致当layui中table下的cols属性利用[[]]格式存放字段配置时,thymeleaf扫描cols无法识别从而导致程序报错。报错如下: <script type="text/javascript" th:inline="javascript"> layui.use('table', function

qq_38650613的博客 2215

某盾blackBox逆向——纯算

某盾blackBox逆向——纯算

Lzyydsb的博客 5891

卫星监测“America”级#两#栖#攻#击#舰#(LHA-6)出港

卫星监测“America”级#两#栖#攻#击#舰#(LHA-6)出港 前脚刚走,后脚又来,山姆大叔又来刷存在感,2020年7月28日,USS Ronald Reagan流窜在我国东海海区被卫星拍了下来: 2020年8月1日,最新卫星图像显示USS Ronald Reagan已经返回母港日本横须贺:距离其出港(2020年6月8日)已经过去了快两个月 然而事情并没有到此结束,“America”级#两#栖#攻#击#舰#(LHA-6)选择在 “八.一” 这个特殊的日子前后出港颇具挑衅的味道。 根据2020年

qq_46071146的博客 1564

thymeleaf中[[${}]]与[(${})]的区别

[[…]]会被转义,[(…)]不会。 假设在后台传入msg的值为 <b>AAA</b> 在前台这样使用 [[${msg}]]___[(${msg})] 则最终的效果会是这样 官方文档 https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#inlining ...

nayi_224的博客 1万+

图片边界矢量化-地理配准

无地理和投影信息的JPG图片,通过ArcGIS进行地理配准(Georeferencing)完成数字化边界。

u012727861的博客 1904

JAVA基础(二)-J2EE&Spring Boot

一.J2EE Java2包含 3个版本:J2ME(Java2 Micro Edition,Java2平台的微型版),应用于移动、无线及有限资源的环境;J2SE(Java 2 Standard Edition,Java 2平台的标准版),应用于桌面环境;J2EE(Java 2Enterprise Edition,Java 2平台的企业版),应用于基于Java的应用服务器。J2EE是java的企业级开发版本,其实换句话说就是用来做web开发的java框架。J2EE通过设定统一的标准来解决web开发的问题,J2

geqiandesuyan的博客 3386

Unreal5(虚幻五) 实现UI与C++代码逻辑的交互 保姆级教程

本人有Unity基础,刚学UE几天,把这一套处理流程记录一下备用。

qq_42915442的博客 9815

【计算机视觉 | 目标检测】目标检测常用数据集及其介绍(十一)

【计算机视觉 | 目标检测】目标检测常用数据集及其介绍(十一)

wzk4869的博客 737

JavaEE开发的颠覆者 Spring Boot实战

网站 更多书籍点击进入>> CiCi岛 下载 电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 电子书下载(皮皮云盘-点击“普通下载”) 购买正版 封页 内容简介 在当今Java EE 开发中,Spring 框架是当之无愧的王者。而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Ja...

CiCi岛的专栏 1514

PointNet++改进策略 :模块改进 | x-Conv | PointCNN, 结合局部结构与全局排列提升模型性能

这篇论文介绍了一种名为PointCNN的方法,旨在从点云(point cloud)数据中学习特征。传统卷积神经网络(CNN)在处理规则网格数据(如图像)时非常有效,但由于点云是无序且不规则的,直接在其上应用卷积操作会导致形状信息丢失,并对点的排列顺序敏感。为了解决这一问题,论文提出了一种X-Conv操作。该方法通过学习一种来重新排列点云中的点并加权输入特征。然后,将典型的卷积操作应用于转换后的特征。这种方法将传统的 CNN 扩展到点云特征学习,并命名为PointCNN。

u012901740的博客 2300

《javaEE 开发的颠覆者,Spring boot实战》

本书简介 1 推荐使用@configuration @bean 的Java配置来替代xml。 2 习惯优于配置的原则。快速搭建项目 3 在第一部分,介绍了快速Spring4.x各个知识点:基础配置、常用配置、高级配置等。 4 在第二部分,介绍了Spring MVC 的各个知识点。 5 在第三部分,才是核心的介绍Spring boot。 Spring boot 核心 -各种配置

a314773862的博客 7697

【智能车Code review】—曲率计算、最小二乘法拟合

【1】曲率计算函数 选三个点计算曲率 float process_curvity(byte x1, byte y1, byte x2, byte y2, byte x3, byte y3) { float K; int S_of_ABC = ((x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1)) / 2; //面积的符号表示方向 byte q1 = (byte)((x2 - x1) * (x2 - x1) + (y2 - y1) *

hanhan的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【JavaEE】JavaEE、web 开发、框架(Spring) 、Maven

Java EE 的概念,什么是 web 开发,框架的概念和优点,Maven 如何使用。

2301_79765510的博客 1994

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JavaEE介绍及Springboot入门

目录哈喽!各位老铁,从本期开始我会给大家分享JavaEE的学习分享,javaEE是javaEE的扩展,使用起来更加高效便捷,让我们一起开始JavaEE的学习吧!目录1.JavaEE发展历史2.JavaEE主要学习内容3.JavaEE怎么学习4.Maven配置一、JavaEE发展历程Java EE的起源可以追溯到J2EE(Java 2 Platform, Enterprise Edition),它是Java SE(Java Standard Edition)的一个扩展,主要用于企业级应用开发。

2301_80651010的博客 1279

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【JavaEE】创建SpringBoot第一个项目,Spring Web MVC⼊⻔,从概念到实战的 Web 开发进阶之旅

本文深入剖析 Spring Web MVC 这一基于 Servlet API 构建的 Web 框架。开篇阐述 Spring MVC 的定义,将其置于 MVC 架构设计模式的语境中,清晰展现其作为 MVC 思想具体实现的本质。接着详细讲解学习 Spring MVC 的重点,涵盖建立连接、处理请求与响应等关键环节。在建立连接部分,着重介绍 RequestMapping 注解的强大功能,包括路径与请求方式的映射。请求部分则深入探讨从无参到复杂对象传递的多种情况,以及后端参数重命名的技巧。开启高效开发之路。

Code哈哈笑的博客 4368

Spring框架与J2EE框架

Spring框架与J2EE框架 J2EE框架 简介: J2EE的全称是Java 2 Platform Enterprise Edition,它是由SUN公司领导、各厂家共同制定并得到广泛认可的工业标准。 J2EE的体系结构: 客户端层:负责与用户直接交互,J2EE支持多种客户端,所以客户端既可以是WEB浏览器,也可以是专用的Java客户端。 服务器端组件层:本层是为了基于WEB的应用服...

子敬的技术博客 8360

JavaEE颠覆者:spring-boot实战随书源码

在当今Java EE 开发中,Spring 框架是当之无愧的王者。而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Java EE 开发变得异常简单。 《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Bo

lice1010的博客 2862

《JavaEE开发的颠覆者:Spring Boot实战》笔记

待写

philsonzhao的博客 295

【JavaEE】SpringBoot快速上手,探秘 Spring Boot,搭建 Java 项目的智慧脚手架

本文聚焦 Java 开发框架 Spring Boot,Spring Boot 为简化 Spring 开发应运而生,是其便捷的 “脚手架”。详细介绍了 Spring Boot 项目的创建方式,包括使用 Idea 创建时如何安装插件及操作步骤,还有网页版创建的流程。 pom.xml 文件中依赖的引入及父工程对版本号的管理机制。介绍了项目目录结构,如main/java 存放源代码,resources 放置静态资源与配置文件等。还讲解了 Spring Boot 内置 Tomcat 服务器,无需额外配置即可运行项目。

Code哈哈笑的博客 2227

Spring Boot实战学习笔记(四)

摘要本文为学习Java EE开发的颠覆者 Spring Boot实战的学习笔记,学习了一遍,但是好记性不如烂笔头,所以文章记录下来。图书购买地址为: https://item.jd.com/11894632.html.Spring Boot实战学习笔记1Spring Boot实战学习笔记2Spring Boot实战学习笔记3Spring Boot实战学习笔记4Spring Boot实战学习笔记5S...

殘遛的博客 612

【JavaEE】Spring Boot 项目创建

Springboot项目的启动

yj20040627的博客 4490

【JavaEE】Spring Boot项目创建

本文详细讲解了Spring Boot项目创建,为学习Spring框架打开第一扇大门

L2770789195的博客 1418
上一篇: 学习笔记:JavaEE开发的颠覆者SpringBoot实战(五)spring boot基础
下一篇: Git 工作流
夜未眠shm
博客等级 码龄14年 15粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值