【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

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

 

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

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

1.idea下spring boot创建web项目

【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

刚创建完是下面这样

【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

 

当然,最后创建完的使用JSP的web项目可不是这个结构的。往下看。

  

2.pom.xml添加下面

【spring boot】5.spring boot 创建web项目并使用jsp作前台页面【spring boot】5.spring boot 创建web项目并使用jsp作前台页面
<!--web 支持-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--jsp页面使用jstl标签-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

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

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

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

依赖范围就是用来控制依赖和三种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

【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

 

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

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

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

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

【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

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

【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

 

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

 

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

【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

 

 

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

【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

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

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

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

【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

 

右键 run 或者debug都可以

然后 启动起来之后在浏览器访问

【spring boot】5.spring boot 创建web项目并使用jsp作前台页面

是可以访问到的。

 

 

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】5.spring boot 创建web项目并使用jsp作前台页面

 

通过启动spring-boot:run的方式也可以访问到。

 

 

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

因为确实碰到很多小的点注意不到的地方,导致整个就是访问不到,反正上面该罗列的都罗列出来了。

 

上一篇:JVM深入学习(二十)-开创并发回收的CMS垃圾回收器


下一篇:JVM初探 -JVM内存模型