SpringBoot学习(一(1),【2021Java最新学习路线

spring-boot-starter-parent

2.0.5.RELEASE


**三个是将`Java`编译设置为使用`JDK 1.8`的属性定义:**

<java.version>1.8</java.version>


**最后一个是使用`Spring Boot maven`插件进行编译和打包:**

org.springframework.boot

spring-boot-maven-plugin


依赖项部分定义了此应用程序所需的额外依赖项。我需要的是`Spring MVC`,并作为`J2EE Web`应用程序运行。添加的依赖项用于编译`JSP`视图和运行嵌入式应用程序服务器。

## 主程序入口

接下来,开始我们程序编码。`spring boot`项目,程序都有必须有一个入口主类,以下是主类的完整源代码:

package org.hanbo.boot.app;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication

public class App extends SpringBootServletInitializer {

@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder appBuilder) {

return appBuilder.sources(App.class);

}

public static void main(String[] args) throws Exception {

SpringApplication.run(App.class, args);

}

}


该App类从`SpringBootServletInitializer`扩展而来。它能被`Spring Framework`识别,并将类App作为传统的WAR包进行初始化和执行。它还告诉`Spring Framework`将有`WEB-INF`文件夹及其中的资源供使用。

**在App类中,有一个名为configure()的受保护方法。**它用于指定任何特定于应用程序的配置。它只有一行,它接受App类的类型并创建一个`SpringApplicationBuilder`对象并返回。这样做的是,创建的`SpringApplicationBuilder`对象将自动扫描`App`类,它所在的包,以及任何带注释的类的子包,以及包含`Spring`配置的注释。然后它将基于这些配置构建`Spring`应用程序。**这是按惯例进行集成的典型示例。并且一切都通过依赖注入耦合。**

静态`main方法`只有一行,它将类App的类型和任何其他命令行参数传递给`SpringApplication.run()`。在幕后,这门课做了很多。它将隐式地对当前包和所有子包进行组件扫描。如果需要,开发人员还可以添加其它路径包为扫描目标。开发人员可以为所需的任何其他配置添加额外的注释。**对于这个简单的程序,只有MVC控制器类可以处理用户对页面的请求。**

## MVC控制器

接下来是我们的`MVC`控制器类。这是一个非常简单的类,只有一个方法可以处理来自用户的`HTTP GET`请求,并带有一些查询参数。它通过使用`JSP`页面作为视图来响应。源代码如下:

package org.hanbo.boot.app.controllers;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.servlet.ModelAndView;

@Controller

public class HelloController {

@RequestMapping(value = “/meow”, method = RequestMethod.GET)

public ModelAndView hello(@RequestParam(“sayit”) String sayit) {

ModelAndView retVal = new ModelAndView();

retVal.setViewName(“testme”);

retVal.addObject(“mymessage”, sayit);

return retVal;

}

}


类中代码没有什么新鲜的。也就是说,该控制器类的定义与任何`Spring MVC`控制器的定义相同。我们简单走读一下类实现:

类用`@controller`注释:表示它是一个控制器类。

类只有一个方法来处理`HTTP GET`请求。它用`@requestmapping`注释。注释定义了请求的子路径以及它可以处理的`http`方法`get`请求。

方法创建一个`ModelAndView`对象并返回。视图页面称为“testme”。数据模型只是一个将显示在页面上的字符串。

该方法接受一个参数,该参数来自查询参数,称为“sayit”。

整个类的功能,就是当用户在浏览器地址栏输入以下路径时,进行响应处理:

http://localhost:8080/meow?sayit=This+is+pretty+crazy


为了让这个控制器按预期工作,还需要一些额外的配置。它在`application.properties`文件中完成。

## Application.properties属性文件

`application.properties`需要指定视图模板文件的前缀和后缀。

如果您做过`spring mvc`项目,或者你知道,`web`项目需要创建和配置一个`org.springframework.web.servlet.view.internalResourceViewResolver`类型的对象,而这个对象需要指定两个属性:

spring.mvc.view.prefix=/WEB-INF/jsp/

spring.mvc.view.suffix=.jsp


意思是应用程序在`“WEB-INF/JSP/”`文件夹中查找视图模板。文件扩展名是`“.jsp”`。

ok,现在我们已经有了主程序入口类、控制器类和内部资源视图解析器的设置。最后一块是视图模板。

## JSP模版

本教程的视图模板非常简单,只有一个JSP文件演示如何显示视图模型中的数据:

<%@ taglib prefix=“spring” uri=“http://www.springframework.org/tags”%>

<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>

<c:url value="/assets/css/index.css" var=“jstlCss”/>

What did you say?

I said: "${mymessage}."


在这个JSP文件中,有三件事:

有级联样式表文件。它是一个静态文件,通过`JSTL`标记添加。这要求`JSTL`库已经正确地引入到了项目中。

视图模型只有一个元素,并通过`$mymessage`添加到视图中。

在HTML内容的末尾添加了一个`javascript`文件,加载后将执行该文件。这是为了演示在这个项目中静态文件的使用。

让示例应用程序提供静态内容是非常重要的。它提供了超越`Spring MVC`的方法——静态页面和`javascript`可用于单页`Web`应用程序。而且,使用`Spring`引导很容易获得静态内容,后面会再解释这一点。

## 静态文件

`Spring Boot`提供了很多便利,让开发人员能够快速上手开发。

这些便利是通过一个约定来实现的:

当您使用`Spring Boot`开发的应用程序指定为基于`Web`的应用程序时,您所需要做的就是在`src/main/resources`下创建一个名为`“static”`的文件夹。

  在这个“静态”文件夹中,只需根据需要添加任何子文件夹,并将任何静态内容文件放入其中,就可以为它们提供服务。**以本案例程序为例,我有三个指定为静态内容的文件:**

- **级联样式表的文件**——src/resources/static/assets/css/index.css

- **一个javascript文件**——src/resources/static/assets/js/test.js

- **一个HTML文件**——src/resources/static/test.html

那么,用户如何通过浏览器访问这些静态内容呢?这很容易。假设应用程序正在运行,并且假设应用程序运行的网站的URL是http://localhost:8080/(在这没有特定的应用程序上下文),**那么用户可以使用以下URL查看这些静态内容文件的实际内容:**

>http://localhost:8080/assets/js/test.js
http://localhost:8080/assets/css/index.css.
http://localhost:8080/assets/test.html.

有一些方法可以配置`Spring`引导应用程序在其他位置查找静态内容文件,`WEB-INF`和`JSP`位置也是如此,应用程序如何初始化,以及`Spring`引导应用程序如何工作的许多其他方面。这些不是本教程中讨论的主题,**但是如果你对`Spring Boot`有足够的了解,这些主题就微不足道了。我可能会在以后的文章中介绍其中的一些。**

## 构建和运行应用程序

在构建项目之前,请转到`src/main/resources/static/assets/js`文件夹,并将文件`“test.sj”`重命名为`“test.js”`。

要构建此应用程序,请在命令行控制台中运行以下命令:

mvn clean install


当您第一次运行此应用程序时,它将下载用于构建此应用程序的所有依赖项,这可能需要一些时间。之后,后续的构建将花费更少的时间。

要运行`Web`应用程序,还可以使用命令行控制台:

java -jar target\boot-war-1.0.0.war


如果一切顺利,并且您可以构建应用程序,**那么执行将在最后输出类似这样的结果:**

/\ / _ __ _ () __ __ _ \ \ \ \

( ( )___ | '_ | '| | ’ / _` | \ \ \ \

\/ _)| |)| | | | | || (| | ) ) ) )

’ || .__|| ||| |__, | / / / /

=|_|======|/=////

:: Spring Boot :: (v2.0.5.RELEASE)

2018-10-14 22:51:11.356 INFO 6124 — [ main] org.hanbo.boot.app.App : Starting App v1.0.0 on U3DTEST-PC with PID

文末java面试题,进阶技术大纲,架构资料分享

我将这三次阿里面试的题目全部分专题整理出来,并附带上详细的答案解析,生成了一份PDF文档,有兴趣的朋友们可以点击这里即可免费领取

  • 第一个要分享给大家的就是算法和数据结构

网易严选Java开发三面面经:HashMap+JVM+索引+消息队列

  • 第二个就是数据库的高频知识点与性能优化

网易严选Java开发三面面经:HashMap+JVM+索引+消息队列

  • 第三个则是并发编程(72个知识点学习)

网易严选Java开发三面面经:HashMap+JVM+索引+消息队列

  • 最后一个是各大JAVA架构专题的面试点+解析+我的一些学习的书籍资料

网易严选Java开发三面面经:HashMap+JVM+索引+消息队列

家的就是算法和数据结构**

[外链图片转存中…(img-Sl7fSnU9-1628419011584)]

  • 第二个就是数据库的高频知识点与性能优化

[外链图片转存中…(img-IylwpGoJ-1628419011586)]

  • 第三个则是并发编程(72个知识点学习)

[外链图片转存中…(img-cznhEUTr-1628419011587)]

  • 最后一个是各大JAVA架构专题的面试点+解析+我的一些学习的书籍资料

[外链图片转存中…(img-1AlZrHc0-1628419011589)]

还有更多的Redis、MySQL、JVM、Kafka、微服务、Spring全家桶等学习笔记这里就不一一列举出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值