war包部署
1.下载安装Tomcat
下载地址:https://tomcat.apache.org/download-90.cgi
如下图所示:
2.入口类继承SpringBootServletInitializer重写configure方法
如果要进行生产环境部署,需要单独配置一下Spring Boot 的入口类,需要继承SpringBootServletInitializer类,重写configure方法,因为默认情况外部Tomcat不能读取到Spring Boot 入口类的main方法启动程序加载,使用需要继承,代码如下:
package com.luzhanshi.springBootFrame; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class SpringBootFrameApplication extends SpringBootServletInitializer { /** * Spring Boot 默认main方法 * @param args */ public static void main(String[] args) { SpringApplication.run(SpringBootFrameApplication.class, args); } /** * 重写configure方法,加载启动类 * @param builder * @return */ @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(SpringBootFrameApplication.class); } }
部分不熟悉IDEA的同学可能不知道怎么重新父类的方法,参照下图即可:
3.排除内置tomcat
需要配置一下pom.xml,排除一下内置tomcat的jar包,防止打包之后与外面Tomcat jar 包冲突,导致项目启动失败,配置如下:
<!--排除内置tomcat jar包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
主要的代码是provided,设置打包不会包含进去,由其他设施提供。
4.IDEA生成war文件
idea打war包步骤可参考鄙人文章
如果打包为jar包的时候,不会包含JSP文件,所以访问的时候回404,而打包为war的时候回包含JSP文件,所以需要把打包格式修改为war.
5.配置Tomcat运行项目
步骤一:把war文件复制到tomcat的webapps目录下
步骤二:配置conf/server.xml
在Host标签内添加Context设置,docBase属性填写war文件名称,配置如下:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="此处填写war包名" debug="0" privileged="true" reloadable="true" /> <!-- 其他代码 --> </Host>
步骤三:启动tomcat
运行bin/shutdown.bat文件,启动tomcat
到此项目部署成功,虽然本人部署到Windows服务器了,Linux也是一样的步骤。
如果我们不想加8080端口访问,那么我们可以将tomcat默认的8080端口修改为80,这样因为浏览器在我们没有输入端口时,默认的端口时80,那么我们就不用输入端口了:
打开tomcat文件夹-->找到conf-->server.xml-->用记事本打开:
此时我们不用输入端口也可以访问项目了
jar包部署
ecliplse获得jar:
IDEA获得jar:
上面生成的jar包都会出现在target目录下面
把上面的jar包复制到一个新建的文件夹:
将项目里面的下面这个文件也拷贝到该文件夹:
最后在该文件夹新建一个startup.bat文件,并编辑如下内容:
项目发布时最终文件如下:
application.properties是工程的配置文件,配置数据库库接参数、日志文件、日志等级、服务使用的端口等配置信息,把工程中文件拷贝出来即可
startup.bat启动服务的批处理,也可包含配置信息,参考如下图,
最后以管理员身份运行bat文件,项目就启动了
访问地址和本地访问地址一样:
jar和war的区别?
- jar(java application archive)java应用程序库,通常为开发引用的通用类
- war(web application archive)web应用程序
所以从jar和war的区别来看,网页程序打包成war格式也是很合适的。
四、知识扩展:Spring Boot 模板推荐
虽然上文我们详细介绍了JSP在Spring Boot 中使用,但是Spring Boot官方并不推荐使用JSP(原因见下文)。
Spring Boot推荐模板引擎:
- Thymeleaf
- Freemarker
- Mustache
- Groovy Templates
Spring为什么不推荐使用JSP?
Spring官方不推荐使用JSP的原因有这么几个:
- 官方文档JSP没有Thymeleaf好;
- Thymeleaf健康的开源项目,几乎每个月都有更新,而JSP已经好几年没有实质性的进展;
- Thymeleaf有迅速响应的用户论坛。
更多详情,点击查看:https://spring.io/blog/2012/10/30/spring-mvc-from-jsp-and-tiles-to-thymeleaf
总结:按照官方的说法,如果你有数百个JSP页面,我们并不建议您应该立即抛弃它们,重新使用Thymeleaf,但是,如果您开始开发一个新项目,强烈鼓励您比较其他模板引擎和JSP,以确认哪一个更适合您。