SpringBoot第一个小项目,含IDEA教程,以及静态页面无法访问的处理

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/m0_37520980/article/details/82256772

以前一直用的eclipse  现在试用一下idea,毕竟这是一个最近比较火的开发工具。

IDEA的安装与配置就不说了。我已经共享了非常详细的文档,当然了这里要感谢某个培训机构共享出来的资源,这里我就不说了。

文档链接:IntelliJ IDEA的安装、配置与使用(全套教程)

如果没有用过IDEA的话,强烈建议先看完上面的idea安装配置教程,如果没有积分可以留言或者@我一下留个邮箱什么的都可以,我看到给发一个邮件。

下面我们进入正题,新建第一个spring boot小项目

首先新建一个project,当然你也可以新建一个module。这个在我分享的教程里已经说的很详细了。

第二步

第三步

第四步,这一步很重要,要选择一个web模板!!!

第五步,这里起个名字,我直接用默认的了,点击完成(finish)

然后目录结构大致是这样的。

然后新建一个HelloController,代码及目录结构如下:

代码

package cn.btmianhua.springboot;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author BABY
 * @create 2018/8/31 - 11:12
 */
@Controller
public class HelloController {

    @RequestMapping(value = "/hello")
    @ResponseBody
    public String hello() {
        return "hello spring boot!";
    }

    @RequestMapping(value = "/tes")
    public String testtest() {
        System.out.println("tes");
        return "testtest";
    }

}

目录结构:

之后在resources下的templates中新建一个testtessst.html(名字我随便起的)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试一下</title>
</head>
<body>
    <h1>测试一下</h1>
</body>
</html>

之后目录结构如下(那个btadmin不用管他):

这个时候其实已经可以运行了,双击打开SpringbootApplication,然后点击绿色的小三角项目就可以跑起来了。

出现下图的这个started就证明我们项目跑起来了,由于springboot中集成了,所以我们并不需要额外的配置tomcat。

浏览器访问http://localhost:8080/hello就会出现如下的信息。

但是当我们访问http://localhost:8080/tes的时候却出现了如下的404异常

检查控制台也并没有错误

经过我一阵好查,其实这个spring boot的一个坑!!搜索资料如下:

以下内容来源于网络


访问不了resources/templates下的页面,命名控制器代码也没有写错。然后自己加了@EnableWebMvc注解以及自己配置了视图解析器,到最后还是不能解决问题(可以发现配置了@EnableWebMvc后可以在控制台打印出页面的路径)。最后发现原来SpringBoot只支持模板引擎的原因。所以我认为可能是要加上一个模板引擎在依赖中负责渲染(springboot默认不支持jsp),这里我就选择使用thymeleaf,加上spring-boot-starter-thymeleaf在依赖中就解决了。

spring boot在springmvc的视图解析器方面就默认集成了ContentNegotiatingViewResolver和BeanNameViewResolver,在视图引擎上就已经集成自动配置的模版引擎,如下:

  1. FreeMarker

  2.  Groovy

  3. Thymeleaf

  4. Velocity (deprecated in 1.4)

  5. Mustache

JSP技术spring boot 官方是不推荐的,原因有三:

  1.  在tomcat上,jsp不能在嵌套的tomcat容器解析即不能在打包成可执行的jar的情况下解析

  2.  Jetty 嵌套的容器不支持jsp

  3.  Undertow

而其他的模版引擎spring boot 都支持,并默认会到classpath的templates里面查找模版引擎。

当然还有第二种可能性,那就是你的@SpringBootApplication注解所在类的扫描不到控制器的位置(可以用MockMvc查出这个原因),要保证所有包的位置都保持在与@SpringBootApplication注解所在类的包同级或者下级,@SpringBootApplication自带的@ComponentScan只会扫描@SpringBootApplication注解所在类的包同级或者下级


好了既然知道原因了,那么就好解决了直接引入依赖就完成了。

打开pom.xml文件,添加如下依赖

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

重启项目,刷新页面,问题解决。好了接下来就可以愉快的开发了。

猜你喜欢

转载自blog.csdn.net/m0_37520980/article/details/82256772