org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
provided
javax.servlet
jstl
org.apache.tomcat.embed
tomcat-embed-jasper
provided
org.springframework.boot
spring-boot-maven-plugin
这个`POM`文件有几个重要的事情。**第一个是指定`maven`构建将创建`WAR`存档的行:**
war
**第二个是`POM`文件具有父`POM`依赖性。**这允许下载许多`Spring`和`非Spring`依赖项并将其链接到此项目中:
org.springframework.boot
spring-boot-starter-parent
2.0.5.RELEASE
**三个是将`Java`编译设置为使用`JDK 1.8`的属性定义:**
**最后一个是使用`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”%>
What did you say?
I said: "${mymessage}."
以上是字节二面的一些问题,面完之后其实挺后悔的,没有提前把各个知识点都复习到位。现在重新好好复习手上的面试大全资料(含JAVA、MySQL、算法、Redis、JVM、架构、中间件、RabbitMQ、设计模式、Spring等),现在起闭关修炼半个月,争取早日上岸!!!!
下面给大家分享下我的面试大全资料,如果你也有需要,可以戳这里即可免费领取我的这份复习资料
后端JAVA面试大全
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理
om/vip204888/java-p7)**
[外链图片转存中…(img-Oj3p5vKd-1628419082306)]
后端JAVA面试大全
[外链图片转存中…(img-hkz9MWJZ-1628419082308)]
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理
[外链图片转存中…(img-ufRRH6et-1628419082309)]
MySQL+Redis学习笔记算法+JVM+JAVA核心知识整理