Java服务器部署springboot 的web项目

Java服务器部署springboot 的web项目

1.使用idea创建springboot web项目

在springboot中配置jsp问题多多,暂时还没解决。且由于springboot不建议使用.jsp,所以这里我使用.html来做。创建工程和目录文件都按照以下步骤并保持一致,是没有错误的。

idea创建新project:
new-> project-> spring initializr-> next-> (修改Artifact为:webtest)-> next-> next ->finish
工程创建完成后,修改pom文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>webtest</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>webtest</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <!--必需-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <!--必需-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <!--解析html必需-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <dependency>
            <!--测试,非必需-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <!--自动配置工程,必需-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <!--开发编译插件,必需-->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

等待工程依赖加载完成,创建一些必需的文件夹和文件,最好按照如图结构,否则可能出错:
在这里插入图片描述
各文件内容如下:
helloworld.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Title</title>
    <link rel="stylesheet" href="/css/test.css" type="text/css" />
</head>
<body>
<h1>Hello World</h1>
</body>
</html>

test.css

body{
    color: red;
}

application.yml

#服务端口号
server:
  port: 3002

webController
注意这里使用@Controller标注,不是@RestController

package com.example.webtest.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/api")
public class webController {

    @RequestMapping("/helloworld")
    public String helloworld(){
        return "helloworld";
    }

}

至此工程创建完毕,运行一下:在这里插入图片描述
可能遇到的错误及解决方案:

  1. 500错误
    注意pom中thymeleaf的配置。
    由于thymeleaf无法解析jsp,所以访问jsp也会出现500错误。
  2. 404错误
    注意html文件所在文件夹结构是否如上方结构图所示,按照那个结构来建立。

2.springboot web使用本地静态资源

springboot使用静态资源很简单,按如下步骤即可。但是打成jar包在服务器运行时有些不同,接下来一步步的来做。
先看本地效果如图:
在这里插入图片描述

步骤:随便找一张图片,我这里使用op.png,放入image文件夹,并且修改test.css
在这里插入图片描述
test.css:

body{
    此处的url路径为相对路径,关于工程中路径的使用见下方说明
    background-image: url(../image/op.png);
    position: absolute;
    background-repeat:no-repeat;
    background-size: 200px 100px;
    top: 30px;
    color:red;
}

css中的相对路径和绝对路径:
“.” 代表当前所在目录,相对路径。如:<a href="./abc">文本</a>或<img src="./abc" />;
“…” 代表上一层目录,相对路径。如:<a href="…/abc">文本</a>或<img src="…/abc"/>;
“…/…/” 代表的是上一层目录的上一层目录,相对路径。 如:<img src="…/…/abc" />;
“/” 代表根目录,绝对路径。 如:<a href="/abc">文本</a>或<img src="/abc"/>;
“D:/abc/” 代表根目录,绝对路径。
参考:https://zhidao.baidu.com/question/583441244.html

此时在本地可访问css及image资源,接下来将工程打包在服务器运行。

3.springboot web使用服务器静态资源

将工程打jar包上传到服务器,此时直接运行jar包,在浏览器中访问此页面,发现网页是获取不到css文件和图片的。并且考虑到静态资源的体积可能越来越大的问题,可以单独将静态资源上传到服务器中,这样当运行jar包时,直接访问服务器中的静态资源即可。
接下来是详细步骤:

3.1.修改pom文件的build标签配置,打包时跳过resources目录:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <resources>
            <resource>
                <filtering>true</filtering>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>resources/**</exclude>
                </excludes>
            </resource>
        </resources>
    </build>

3.2.打包工程并上传到服务器,同时将资源文件上传到服务器。

在这里插入图片描述
在这里插入图片描述
这里我将jar传到目录:

scp webtest-0.0.1-SNAPSHOT.jar root@你的域名.com:/root/Desktop/zjs/

将resources传到目录:

scp -r /root/workspace/java/webtest/target/classes/resources root@你的域名.com:/root/Desktop/zjs/resources/api/test/

此时运行,发现确实无法获取css文件。还需要配置nginx监听。
在这里插入图片描述

3.3.配置nginx映射服务器静态资源

在nginx.conf文件中加入以下配置,注意nginx.conf文件头可能有一个注释掉的#user xxx,将#号删除并改为user root。否则之后会出现403 forbidden错误。
ngxin.conf,修改并保存重载:

location /resources/ {
    root /root/Desktop/zjs/;
    autoindex on;
}
/usr/local/nginx/sbin/nginx -s reload //重载nginx配置

在这里插入图片描述
此时基本配置已完成,将helloworld.html中的css路径修改一下,然后重新打包上传到服务器并运行:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>Title</title>
    // 此处href路径如下
    <link rel="stylesheet" href="/resources/api/test/css/test.css" type="text/css" />
</head>
<body>
<h1>Hello World</h1>
</body>
</html>

在浏览器中访问,发现还是未加载css文件,原因是上传静态资源文件时多传了一个根目录到服务器中,将里面的资源文件移动到上级目录即可,步骤如下:
在这里插入图片描述
再次访问,成功,效果如图:
在这里插入图片描述

这个demo地址:https://github.com/Jason-zzzz/webtest

参考:
linux使用Nginx搭建静态资源服务器:https://www.cnblogs.com/tangyin/archive/2018/09/25/9700852.html
nginx操作:https://www.cnblogs.com/fhen/p/5896105.html
nginx多端口:https://blog.csdn.net/springlustre/article/details/75173653
springboot配置jsp支持:https://blog.csdn.net/uniqueweimeijun/article/details/82151559

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值