在src/main目录下创建目录webapp/WEB-INF/jsp用于存放jsp页面,如下图:
application.properties为全局配置文件,里面可以设置很多信息,比如设置日志、设置缓存、设置Spring、SpringSESSION等信息,我们本文只需要设置JSP的目录文件,以及文件后缀,代码如下:
在pom.xml需要添加3个组件:
具体代码如下:
经过前3步的配置,项目配置部分已经完成的差不多了,接下来就是代码的编写了,代码的编写和SpringMVC一样,分为两部分Java类编写与标识注解,JSP模板创建与编写。为了更好的演示SpringBoot的功能,我们会尽可能的简化业务逻辑,在这个示例中我们创建一个Cat类,设置标签hi="HelloCat",在页面输出标签即可。
<%@pagecontentType="text/html;charset=UTF-8"language="java"%>
${hi}
这个jsp只做了一件事,把java类里面的${hi}标签的值显示出来。如下图所示:
Windows下载:64-bitWindowszip|Linux下载:tar.gz
注意:如果是Windows版下载的免安装版如果放到C盘的话,注意给文件夹分配足够的权限,不然启动之后访问页面显示400或者505类似的问题。
如果要进行生产环境部署,需要单独配置一下SpringBoot的入口类,需要继承SpringBootServletInitializer类,重写configure方法,因为默认情况外部Tomcat不能读取到SpringBoot入口类的main方法启动程序加载,使用需要继承,代码如下:
packagecom.hellospringboot.hellospringboot;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.boot.builder.SpringApplicationBuilder;importorg.springframework.boot.web.servlet.support.SpringBootServletInitializer;/***启动类,程序入口*/@SpringBootApplicationpublicclassHelloSpringBootApplicationextendsSpringBootServletInitializer{/***重写configure方法,加载启动类*@paramapplication*@return*/@OverrideprotectedSpringApplicationBuilderconfigure(SpringApplicationBuilderapplication){returnapplication.sources(HelloSpringBootApplication.class);}/***SpringBoot默认main方法*@paramargs*/publicstaticvoidmain(String[]args){SpringApplication.run(HelloSpringBootApplication.class,args);}}3.配置pom.xml需要配置一下pom.xml,排除一下内置tomcat的jar包,防止打包之后与外面Tomcatjar包冲突,导致项目启动失败,配置如下:
找到:
修改为:
为什么需要修改jar包格式为war,因为如果打包为jar包的时候,不会包含JSP文件,所以访问的时候回404,而打包为war的时候回包含JSP文件,所以需要把打包格式修改为war.
jar和war的区别?
所以从jar和war的区别来看,网页程序打包成war格式也是很合适的。
如果需要修改生成文件的文件名称,可以设置build下的finalName属性,代码如下:
生成完之后,在项目的target目录下找到生成war文件,如下图:
在Host标签内添加Context设置,docBase属性填写war文件名称,配置如下:
到此项目部署成功,虽然本人部署到Windows服务器了,Linux也是一样的步骤。
虽然上文我们详细介绍了JSP在SpringBoot中使用,但是SpringBoot官方并不推荐使用JSP(原因见下文)。
Spring官方不推荐使用JSP的原因有这么几个:
总结:按照官方的说法,如果你有数百个JSP页面,我们并不建议您应该立即抛弃它们,重新使用Thymeleaf,但是,如果您开始开发一个新项目,强烈鼓励您比较其他模板引擎和JSP,以确认哪一个更适合您。