1.写在开始

参与公司搭建开发平台用的是SpringBoot,没有用过学习下,它使用 “习惯优于配置” ,Sprig项目中存在大量的配置,SpringBoot内置一个习惯性的配置,利用 IDEA 可以自动生成生成,可以让你的项目快速运行起来。先搭建一个简单的环境,其他的配置和更深入的东西再慢慢学习。

过程中出现的问题:

看其他博主搭建起来很简单,但是过程中还是出现了很多问题,写在文章开头,或许可以帮助大家。

1.没有跳转controller

1.编写的类要放在Application类所在包或其子包下,这样SpringbootApplication启动启动的时候才能扫描到。检查控制台有没有如下输出,没有则是没有扫描到【测试2.0版本的springboot可能不会输出】

idea springboot连接MQTT idea编写springboot_application

但是也要注意,SpringbootApplication也不能放在根目录Java下,否则也会报错。

2.url路径写的不对,http://127.0.0.1:8080/[controllerMapping]/[methodMapping],默认路径没有工程名,默认端口8080(后面都可以配置)。

2.能进入controller但是不能跳转jsp

1.controller类的注解应该是@Controller而不能是@RestController(相当于@Controller+@ResponseBody),否则不会进入视图解析器

2.application.properties试图解析器的语法写的不对(如版本不同,spring.mvc.view.prefix与spring.view.prefix的区别,报500)或者路径写的不对(报404)

3.需要导入jsp支持的相关jar包,在本文中有【否则可能会变成下载】

3.可以访问webapp下,但是不能访问WEB-INF下的jsp

【提示:Path with "WEB-INF" or "META-INF": [WEB-INF/jsp/hello.jsp]】

1.换成springboot1.5.9版本可以跳转,其他博客关于这个问题的答案比较多,但是我觉得例如配置试图解析器的地方其实一般不会出错,除了粗心导致的错误,可以测试下这个原因,不确定是不是这个原因。

2.SpringBoot 快速搭建

2.1新建项目

选择 Spring Initializr ,选择默认 =》 Next

idea springboot连接MQTT idea编写springboot_SpringBoot_02

修改项目信息,项目名称、Maven项目、Jar/War、Java、目录结构、Version等 =》 NEXT

idea springboot连接MQTT idea编写springboot_WEB-INF_03

选择SpringBoot版本号【这个地方要注意下,版本号选择2.0之后可能会出现日志不打印的问题,可能也是跳转WEB-INF下jsp失败的原因之一,我选择1.5.9版本就没有出现问题】以及勾选模板,先勾选Web,可以根据需要勾选,也可以后面在通过pom文件添加

idea springboot连接MQTT idea编写springboot_WEB-INF_04

配置SpringBoot项目路径位置 =》Finish

idea springboot连接MQTT idea编写springboot_SpringBoot_05

(第一次配置需要等待IDEA下载相应的依赖包)默认创建好的项目结构如下:

idea springboot连接MQTT idea编写springboot_application_06

  • SpringbootApplication: SpringBoot启动程序
  • SpringbootApplicationTests:SpringBoot测试类
  • application.properties:根据需要添加(非默认)配置属性

2.2Hello world

编写IndexController类

idea springboot连接MQTT idea编写springboot_jsp_07

1.注意目录结构,编写的类要放在SpringbootApplication类所在包或其子包下,这样SpringbootApplication启动启动的时候才能扫描到。但是也要注意,SpringbootApplication也不能放在根目录Java下,否则也会报错。

2.@RestController = @Controller + @ResponseBody

3.3启动并查看结果

找到SpringbootApplication右键运行,或者点击右上角的三角运行标志

idea springboot连接MQTT idea编写springboot_SpringBoot_08

@SpringBootApplication 是SpringBoot的核心注解=@Configuration+@EnableAutoConfiguration+@ComponentScan

可以看到启动信息

idea springboot连接MQTT idea编写springboot_WEB-INF_09

访问路径,默认是不带项目名称的

idea springboot连接MQTT idea编写springboot_jsp_10

这样一个简单的SpringBoot项目就完成了,下面说一些会用到的其他东西。

3、其他相关

SpringBoot 支持 JSP

SpringBoot 的默认视图支持是 Thymeleaf 模板引擎,模板文件放在resources下面的两个文件夹中,但是我比较熟悉的还是JSP文件,放在webapp目录下的WEB-INF中。

1.引入相关jar包

<!-- servlet依赖. -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

<!-- tomcat的支持.-->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>

2.在application.properties配置视图解析器的路径及后缀

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

3.将IndexController稍作修改,toPage方法跳转Hello.jsp

@Controller
@RequestMapping("/index")
public class IndexController {
    @ResponseBody
    @RequestMapping("/hello")
    public String hello(){
        return "Hello world";
    }
    @RequestMapping("/toPage")
    public String toPage(){
        return "/Hello";
    }
}

4.创建webapp目录以及jsp文件

此处有一个需要注意的问题,创建webapp最好不用新建文件夹的方式

而应该:在main下面新建一个webapp,Project Setting ->Modules ->加号 ->web,选择你刚才新建webapp文件的位置【前后他们的图标会变化】

idea springboot连接MQTT idea编写springboot_jsp_11

5.访问http://127.0.0.1:8080/index/toPage就可以访问成功了