springboot+thymeleaf生成war包
序
算是一个简单的实训吧,对于一个专攻C的人来说,搞java真的头大,恰好java是自己最讨厌的语言 = = ,在吃老本的情况下,部署只懂war,像什么springboot thymeleaf maven 这种东西听听就好,从不知道怎么生成war到能生成正确的war,说实话挺烦人的,在这diss java
正文
一、修改pom.xml
1.pom.xml最下方build,添加一个springboot插件(文件原先好像也是这样,jdk注释掉后,貌似没区别)
1<build>
2 <finalName>qst-mall</finalName>
3 <plugins>
4 <plugin>
5 <groupId>org.springframework.boot</groupId>
6 <artifactId>spring-boot-maven-plugin</artifactId>
7 </plugin>
8 <!-- JDK1.8插件 -->
9<!-- <plugin>-->
10<!-- <groupId>org.apache.maven.plugins</groupId>-->
11<!-- <artifactId>maven-compiler-plugin</artifactId>-->
12<!-- <configuration>-->
13<!-- <source>1.8</source>-->
14<!-- <target>1.8</target>-->
15<!-- <encoding>utf-8</encoding>-->
16<!-- </configuration>-->
17<!-- </plugin>-->
18 </plugins>
19 </build>
2.tomcat依赖设置成provided(我把之前的测试注释掉了,不注释好像也可以)
1<!-- <dependency>-->
2<!-- <groupId>org.springframework.boot</groupId>-->
3<!-- <artifactId>spring-boot-starter-test</artifactId>-->
4<!-- <scope>test</scope>-->
5<!-- </dependency>-->
6 <dependency>
7 <groupId>org.springframework.boot</groupId>
8 <artifactId>spring-boot-starter-tomcat</artifactId>
9 <scope>provided</scope>
10 </dependency>
3.修改生成packaging,jar -> war
1<packaging>war</packaging>
二、修改启动类
1.修改QstMallApplication.java,如下修改
1@MapperScan("wxd.qst.mall.dao")
2@SpringBootApplication
3//public class QstMallApplication {
4// public static void main(String[] args) {
5// SpringApplication.run(QstMallApplication.class, args);
6// }
7//}
8public class QstMallApplication extends SpringBootServletInitializer {
9 @Override
10 protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
11 return builder.sources(QstMallApplication.class);
12 }
13
14 public static void main(String[] args) {
15 SpringApplication.run(QstMallApplication.class, args);
16 }
17}
三、maven生成
在项目target文件夹下会找到war包
四、部署到tomcat(问题很多)
1.本地测试
tomcat端口8080,该项目修改端口,会造成图片加载不出来,具体原因后续说明
本地测试,可以运行起来,但是访问路径为 localhost:8080/qst-mall
这样会造成访问请求路径不对,很多请求访问不到,不是搞java的也不知道为什么这些项目架构不一样,idea内置tomcat是直接访问 localhost:8080
即可访问,所以在外置的tomcat上也需要这样,修改tomcat配置文件 server.xml
,此时轻车熟路 = =,修改host
1 <Host name="localhost" appBase="webapps"
2 unpackWARs="true" autoDeploy="true">
3 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
4 prefix="localhost_access_log" suffix=".txt"
5 pattern="%h %l %u %t "%r" %s %b" />
6 <Context path="/" docBase="qst-mall" debug="0" reloadable="true" />
7 </Host>
此刻,该项目即可在外置的tomcat上运行起来了,问题还有图片不能正常访问
2.服务器部署
阿里云服务器centos7.6,mysql5.7,Nginx1.15,tomcat9.0,域名https://cv.aeneag.xyz/
修改项目Constans.java,并上传服务器所用图片
路径修改为linux环境路径 public final static String FILE_UPLOAD_DIC = "/usr/upload/";
作为一个搞C的,linux还算熟悉,mysql安装,Nginx安装不再赘述,好像写过,可以尝试用docker安装,方便快简单
运行tomcat ./startup.sh 开始之前配置好tomcat
1 <Host name="cv.aeneag.xyz" appBase="webapps"
2 unpackWARs="true" autoDeploy="true">
3
4 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
5 prefix="localhost_access_log" suffix=".txt"
6 pattern="%h %l %u %t "%r" %s %b" />
7
8 <Context path="/" docBase="qst-mall" debug="0" reloadable="true" />
9
10 </Host>
Nginx反向代理
配置Nginx,并配置域名使用https便不再赘述了
五、图片正确加载成功
图片加载不成功,虽然不是专业写java的,感觉该项目有些代码有些问题,图片加载不出来,需要修改数据库内容,保存图片信息应该保存相对路径,而不是保存访问图片链接,这样会造成项目移植性不好,想要知道自己所需要图片链接,用谷歌浏览器F12查看,
上图所示,修改这个表中的开头,修改的是自己所需要的域名或者ip地址
尾
再也不想搞javaWeb了,总之还算有收获,虽然没写几行java代码。转war的过程小毛病挺多,感谢史老师的帮助,收获颇多。
则移山填海之难,
终有成功之日!
——孙文