资讯专栏INFORMATION COLUMN

spring-boot创建最简单的web应用

xiaolinbang / 3042人阅读

摘要:初衷看了一下相关的书籍,创建一个的应用,是那么的简单。首先,我们只是创建一个简单的并不打算使用默认的,而是使用传统的。在下创建目录并且在目录下新建,内容为页面。如果是在内置的的情况下,应用会自动重启。

初衷

看了一下spring-boot相关的书籍,创建一个hello world!的应用,是那么的简单。然而,自己动手,却很不一样。

首先,我们只是创建一个简单的hello world!并不打算使用默认的thymeleaf,而是使用传统的jsp。
当然,我们不能把自己限制于一个简单的hello world!我们要的是具有热部署功能的!

spring-boot + 内置tomcat + jsp 一、初始化项目:

我们只是构建一个hello world! 的web应用。
打包方式选择war
起步依赖只需要选择Web和DevTools即可。

二、处理jsp目录

springboot默认提供thymeleaf的模板,对于从传统web开发转过来的人来说,不喜欢!
然而 spring boot并没有给我们初始化webapp目录。所以,还是手动吧。

在“src/main”下创建“webapp/WEB_INF/jsp”目录
并且在webapp目录下新建index.jsp, 内容为hello world页面。
注意是webapp目录下,不是“webapp/WEB-INF/jsp”目录。

</>复制代码

  1. 题外话:如果你甘愿hello world!那就hello吧,反正我是 change the world!
三、处理pom.xml(添加jsp支持、war的插件) 1、然后添加jsp需要的依赖jstl

</>复制代码

  1. javax.servlet
  2. jstl
2、jsp编译需要的依赖

</>复制代码

  1. org.apache.tomcat.embed
  2. tomcat-embed-jasper
3、把spring-boot-starter-tomcat的provided属性注释掉 4、再添加一个插件(由于选择的是war包方式)

</>复制代码

  1. org.apache.maven.plugins
  2. maven-surefire-plugin
  3. false
四、配置application.properties

</>复制代码

  1. server.port=9090
  2. spring.thymeleaf.cache=false
  3. spring.thymeleaf.enabled=false
  4. spring.mvc.view.prefix=/
  5. spring.mvc.view.suffix=.jsp
五、启动应用

执行main方法启动应用
启动后访问localhost:9090即可

六、处理完后的pom.xml是先这样子的

</>复制代码

  1. 4.0.0
  2. com.lgh
  3. sample
  4. 0.0.1-SNAPSHOT
  5. war
  6. sample
  7. Demo project for Spring Boot
  8. org.springframework.boot
  9. spring-boot-starter-parent
  10. 2.0.2.RELEASE
  11. UTF-8
  12. UTF-8
  13. 1.8
  14. org.springframework.boot
  15. spring-boot-starter-web
  16. javax.servlet
  17. jstl
  18. org.springframework.boot
  19. spring-boot-starter-tomcat
  20. org.apache.tomcat.embed
  21. tomcat-embed-jasper
  22. org.springframework.boot
  23. spring-boot-starter-test
  24. test
  25. org.springframework.boot
  26. spring-boot-devtools
  27. runtime
  28. org.springframework.boot
  29. spring-boot-maven-plugin
  30. org.apache.maven.plugins
  31. maven-surefire-plugin
  32. false
spring-boot + 外置tomcat + jsp 一、同样的方式初始化项目 二、同样的方式处理jsp目录 三、处理pom.mxl(添加jsp支持、war插件及排除掉) 1、然后添加jsp需要的依赖jstl

</>复制代码

  1. javax.servlet
  2. jstl
2、start-web排除掉tomcat

</>复制代码

  1. org.springframework.boot
  2. spring-boot-starter-web
  3. org.springframework.boot
  4. spring-boot-starter-tomcat
3、添加servlet-api

</>复制代码

  1. javax.servlet
  2. javax.servlet-api
  3. 3.1.0
  4. provided
4、删除spring-boot-starter-tomcat依赖 5、同样添加一个插件

</>复制代码

  1. org.apache.maven.plugins
  2. maven-surefire-plugin
  3. false
四、同样的配置application.properties 五、启动应用

(idea中)在run/debug configuration窗口中,添加tomcatServer,配置部署即可
注意这种方式,application.properties中的server.port是不生效的。

六、处理完后的pom.xml是先这样子的

</>复制代码

  1. 4.0.0
  2. com.lgh
  3. client
  4. 0.0.1-SNAPSHOT
  5. war
  6. client
  7. Demo project for Spring Boot
  8. org.springframework.boot
  9. spring-boot-starter-parent
  10. 2.0.2.RELEASE
  11. UTF-8
  12. UTF-8
  13. 1.8
  14. org.springframework.boot
  15. spring-boot-starter-web
  16. org.springframework.boot
  17. spring-boot-starter-tomcat
  18. javax.servlet
  19. jstl
  20. javax.servlet
  21. javax.servlet-api
  22. 3.1.0
  23. provided
  24. org.springframework.boot
  25. spring-boot-starter-test
  26. test
  27. org.springframework.boot
  28. spring-boot-devtools
  29. runtime
  30. org.springframework.boot
  31. spring-boot-maven-plugin
  32. true
  33. org.apache.maven.plugins
  34. maven-surefire-plugin
  35. false
  36. maven-compiler-plugin
  37. 1.8
  38. 1.8
踩过的坑,吃过的屎 没有热部署,特别难受 1、添加一个依赖(初始化时如果选了就不需要手动添加了)

</>复制代码

  1. org.springframework.boot
  2. spring-boot-devtools
  3. runtime
2、插件添加配置(里面的configuration节点加上)

</>复制代码

  1. org.springframework.boot
  2. spring-boot-maven-plugin
  3. true

添加了上面的两个配置后,修改java代码后,idea中可以右键recompile重新编译
如果是在本地tomcat的情况下,idea会提示reload class。
如果是在spring boot内置的tomcat的情况下,应用会自动重启。

不同的引导方式,不同的报错信息

首先,我们用idea创建的项目中,pom.xml文件是长这样的

</>复制代码

  1. 4.0.0
  2. com.lgh
  3. sample
  4. 0.0.1-SNAPSHOT
  5. war
  6. sample
  7. Demo project for Spring Boot
  8. org.springframework.boot
  9. spring-boot-starter-parent
  10. 2.0.2.RELEASE
  11. UTF-8
  12. UTF-8
  13. 1.8
  14. org.springframework.boot
  15. spring-boot-starter-web
  16. org.springframework.boot
  17. spring-boot-devtools
  18. runtime
  19. org.springframework.boot
  20. spring-boot-starter-tomcat
  21. provided
  22. org.springframework.boot
  23. spring-boot-starter-test
  24. test
  25. org.springframework.boot
  26. spring-boot-maven-plugin

为了支持jsp,我们加入两个依赖

</>复制代码

  1. javax.servlet
  2. jstl

</>复制代码

  1. org.apache.tomcat.embed
  2. tomcat-embed-jasper
  3. provided

由于我们选择了war的打包方式,你会发现,自动创建了一个ServletInitializer类。
由于是war,还需要添加一个插件

</>复制代码

  1. org.apache.maven.plugins
  2. maven-surefire-plugin
  3. false

我们再src/main下创建“webapp”目录,并创建一个index.jsp文件
(还要去配置application.properties文件,把默认的模板禁用掉)

以上步骤是大部分博客的过程。这时候,我们直接用main方法的方式启动时,是酱紫的

解决办法是:
把pom文件中的spring-boot-starter-tomcat 和 tomcat-embed-jasper的 provided属性注释掉。
注释掉后,启动起来,访问localhost:8080即可看到hello world!

回到注释provided属性前,如果这时候我们把ServletInitializer注释掉
把Application类继承SpringBootServletInitializer, 像这样子

@SpringBootApplication
public class ClientApplication extends SpringBootServletInitializer{

</>复制代码

  1. @Override
  2. protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
  3. return application.sources(ClientApplication.class);
  4. }
  5. public static void main(String[] args) {
  6. SpringApplication.run(ClientApplication.class, args);
  7. }

}

此时执行main方法启动应用,报错如下
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.lgh.client.ClientApplication]; nested exception is java.lang.IllegalStateException: Failed to introspect annotated methods on class org.springframework.boot.web.servlet.support.SpringBootServletInitializer

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69346.html

相关文章

  • 三.spring-boot:简述springboot启动流程

    摘要:如下页面模版的配置启动简单流程当我们运行的方法时调用静态方法首先是实例化初始化的时候主要做主要做三件事根据下是否存在判断是否要启动一个。将配置环境加入到监听器对象中。方法将等重要组件与上下文对象关联。自此的简单流程到此结束。 正文 说springboot的启动流程当然少不了springboot启动入口类 @SpringBootApplication public class Sprin...

    masturbator 评论0 收藏0
  • SpringBoot 入门简介

    摘要:这里使用的是数据库启动类上加上注解在启动类中添加对包扫描扫描多个包下的可以有以下几种方法扫描会自动加载相关配置,数据源就会自动注入到中,会自动注入到中,可以直接使用。有配置文件下的使用扫描多个包下的可以有以下几种方法扫描 Spring-Boot 学习笔记 1 Spring-Boot 介绍 1.1 什么是Spring-Boot Spring-Boot是由Pivotal团队提供的全新框架...

    chuyao 评论0 收藏0
  • Spring Boot (一)helloworld

    摘要:第二个类级别注解是。将引导应用程序,启动,从而启动自动配置服务器。比如想使用不同版本的,具体如下在标签中还可以指定编译的版本和项目的编码格式指定项目编码为使用插件可以为项目提供的操作方式,的个,默认。 引言 Spring 框架对于很多 Java 开发人员来说都不陌生。Spring 框架包含几十个不同的子项目,涵盖应用开发的不同方面。如此多的子项目和组件,一方面方便了开发人员的使用,另外...

    go4it 评论0 收藏0
  • Spring-Boot学习笔记

    摘要:学习笔记使用很容易创建一个独立运行运行内嵌容器准生产级别的基于框架的项目,使用你可以不用或者只需要很少的配置。异常消息如果这个错误是由异常引起的。错误发生时请求的路径。 Spring-Boot 1.5 学习笔记 使用Spring Boot很容易创建一个独立运行(运行jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用Spring Boot你可以不用或者只需要很...

    curlyCheng 评论0 收藏0
  • Spring Boot Hello World

    摘要:现在这还是一个空的项目,我们可以在标签中添加我们需要的依赖,例如添加的依赖。修改我们的配置如下目前我们的这个项目还没有导入任何,这点可以通过执行命令确定。 本篇文章是SpringBoot最入门的介绍。我们不借助任何额外的工具,从无到有创建一个Spring Boot的web项目,并运行这个项目。 项目构建 归根结底,Spring Boot就只是一个框架,几个jar而已,没什么神奇的。但使...

    lijinke666 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<