spring boot 建立web项目并使用jsp做前台页面

贼烦的是,使用spring boot 建立web项目,而后我再idea下建立的,but 仅仅启动spring boot的启动类,就算整个项目都是好着的,就算是可以进入controller中,也不能成功访问到jsp页面。很尴尬!也很无语!html

 

好吧,开头一句抱怨,下面全靠编~~~web

=======================================================================================================spring

1.idea下spring boot建立web项目apache

刚建立完是下面这样api

 

固然,最后建立完的使用JSP的web项目可不是这个结构的。往下看。浏览器

  

2.pom.xml添加下面tomcat

 View Codemvc

上面这三个是spring boot项目建立使用jsp页面的web项目必须的三个依赖 app

这里介绍下maven中scope依赖范围的概念,由于后续涉及到这个会有问题。webapp

依赖范围就是用来控制依赖和三种classpath(编译classpath,测试classpath、运行classpath)的关系,Maven有以下几种依赖范围:

  • compile:编译依赖范围。若是没有指定,就会默认使用该依赖范围。使用此依赖范围的Maven依赖,对于编译、测试、运行三种classpath都有效。典型的例子是spring-code,在编译、测试和运行的时候都须要使用该依赖。
  • test: 测试依赖范围。使用次依赖范围的Maven依赖,只对于测试classpath有效,在编译主代码或者运行项目的使用时将没法使用此依赖。典型的例子是Jnuit,它只有在编译测试代码及运行测试的时候才须要。
  • provided:已提供依赖范围。使用此依赖范围的Maven依赖,对于编译和测试classpath有效,但在运行时候无效。典型的例子是servlet-api,编译和测试项目的时候须要该依赖,但在运行项目的时候,因为容器以及提供,就不须要Maven重复地引入一遍。

3.建立webapp目录,并建立jsp页面在目录下

注意建立的目录层级关系

若是再建立jsp页面的时候,不能右键直接建立的话,能够http://www.cnblogs.com/sxdcgaq8080/p/7676294.html

 

4.application.properties配置文件的完善

注意前缀 的值是 /WEB-INF/views/  而不是 /WEB-INF/views

少一个/ 整个访问的路径就是不完整的。

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

由于webapp在刚刚上面建立jsp页面的时候,已经被指定为classpath了,也就是根路径了。

 

因此如今,这里配置了mvc的【view】视图层前缀后缀,指定controller中寻找页面就去/WEB-INF/views/  下面去找.jsp文件了。

 

5.写一个跳转页面的controller层

 

 

6.因此,最终项目的目录结构是这个样子的

哦哦,这里有一个web目录,是能够删掉的,不过删不删也无所谓,没有多大的关系

7.最后一步,启动而且能访问

这里不是经过启动类去启动,而是须要经过spring-boot:run去启动

 

右键 run 或者debug均可以

而后 启动起来以后在浏览器访问

是能够访问到的。

 

 

8.还有就是,若是把用于编译jsp的 这个插件的scope注解,也就是使用默认的scope

        <!--用于编译jsp-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <!--<scope>provided</scope>-->
        </dependency>

 

而后import 整个pom.xml文件以后。

再经过 启动  启动类的方式来启动spring boot项目的话,也是能够访问的到的【我把web目录删掉了】

 

经过启动spring-boot:run的方式也能够访问到。

 

 

=====================================================================================================

由于确实碰到不少小的点注意不到的地方,致使整个就是访问不到,反正上面该罗列的都罗列出来了。