1、springboot整合jsp
最近做的一個項目,由於種種原因使用了springboot+jsp。相信許多人也清楚,springboot官方推薦的模板引擎是thymleaf,並不太支持jsp。
springboot要整合jsp的話,需要添加以下依賴:

另外,如果需要用到jstl的話,則需要添加以下依賴:

而且jsp文件必須放在WEB-INF目錄下,否則無法編譯成class文件(畢竟jsp本質是servlet)所以要在application.yml添加如下配置

jsp中如果需要引用靜態資源的話,則可以放在resource/static文件夾下,在jsp中引用的路徑直接寫“/xxx/xxx.css” ,因為springboot默認的靜態資源路徑中有resource/static,放在這里不會被攔截
2、使用maven打jar包
我在使用maven將springboot打成jar包時,發現在WEB-INF下的jsp文件不會被放進jar包中。當然,這是正常的,因為是打jar包,不是打war包,當然不會包含WEB-INF目錄的東西。
所以需要添加配置,在pom.xml文件中的build標簽下添加如下內容,在打包過程中需要將webapp目錄(WEB-INF在webapp下)放入jar包中的META-INF/resource目錄下。

另外,還需要將springboot的maven插件版本修改為1.4.2.RELEASE,具體如下圖,只有使用這個版本打jar包才能解析jsp,這是springboot的bug吧

然后使用maven工具進行打包即可
3、部署到雲服務器
首先需要將服務器對應的端口號放行,比如我使用的tomcat端口號是8066,以阿里雲服務器為例,進入控制台,選擇安全組,點擊“配置規則”,再點擊“添加安全組規則”,在彈窗中填寫具體信息,具體如下圖:


如果使用shell工具則需要輸入以下命令,第一個是開放8066端口,第二個是保存規則
iptables -A INPUT -ptcp --dport 8066 -j ACCEPT
/etc/rc.d/init.d/iptables save
然后使用shell工具進入到jar包的上傳目錄,輸入以下命令:
java -jar xxx.jar
使用上述方式的話,在shell工具時就會關閉整個程序,因此需要使用以下命令將程序常駐服務器
nohup java -jar xxx.jar &
nohup的意思不掛服務,常駐的意思,除非雲服務器重啟,否則程序會一直運行;最后的&表示執行命令后會生成日志文件nohup.out
然后就可以通過雲服務器的公網ip+端口號+Controller路徑,就可以訪問項目了。
