windows server2019 + Tomcat 8.5 + 图片存储配置教程

目录

 

一、前言

二、服务器端配置

1.阿里云服务器上的操作系统

2. Tomcat8.5的安装

3. Tomcat端口配置

三、Apache-cxf框架搭建web服务

1.Maven项目创建

2.图片操作方法类的实现

3.web服务发布


一、前言

完成课设的过程中,需要实现图片的上传下传显示功能,使用的是elementUI中的upload组件来完成上传图片的功能,为了实现组内可以进行图片接口共享,需要把这一功能部署到服务器上面,且图片的存储与虚拟路径映射都应在服务器上完成,这样才能实现这一接口的不同主机共享

需要环境:

· 云服务器 装载windows server系统(这里使用的是阿里云服务器,高校学生免费版)

· Tomcat8.5(常见版本均可差异不大)

· IntelliJ

二、服务器端配置

(多图预警)

1.阿里云服务器上的操作系统

在阿里云控制台里面可以实现一键切换操作系统,没有选择linux是因为windows的界面更加熟悉一些,操作起来方便点,远程桌面连接可以直接使用win10自带的远程桌面连接工具,比阿里云控制台的网页端远程连接操作方便而且快捷的多

2. Tomcat8.5的安装

首先,windows server是比较纯净的操作系统,不包含任何运行库环境或者开发环境,所以需要手动安装jdk与jre并配置好环境变量才可以正常使用tomcat,需要注意的地方是jre和jdk不可以在同一目录下,会发生错误!这点请注意,笔者就是没有注意安在了同一目录下,又费了周折才配置好的java环境,不会配置的小伙伴,这里贴上一篇详细的配置教程(没想到吧是百度经验):

https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html

配置好后如下图所示

之后就可以进行tomcat的安装了,需要注意的是,不可以直接将本地的tomcat打包传送过来,需要在访问tomcat的官网:

http://tomcat.apache.org/index.html

下载自己使用版本的安装包,再在服务器上运行安装包进行tomcat的安装,直接使用本地打包的tomcat的话,注册表文件没有注入,相应的server端的功能也会失去,无法正常运行tomcat,安装成功后大概是这个样子的

3. Tomcat端口配置

需要注意的是,安装tomcat后不进行远程连接配置的话,其他主机也是无法访问到tomcat上部署的服务的,需要在安装路径下修改server.xml文件(用记事本打开就可以),将其中的默认端口8080修改为80(访问无需加上端口号)或者任何自定义的端口号

此外对于图片的访问,我们需要在这里配置一行虚拟路径

<!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        <Context path="/houseImg" docBase="C:\Program Files\MySQL\houseImg" reloadable="true" />
<!--path是配置的要映射的路径 docBase为本地路径-->

建议这里的存放路径不要放在tomcat的webapps中的应用里,因为在你创建web服务时,在tomcat上的每次部署都会重新生成一个war包,你之前的路径或者测试用的存储文件都会被清理掉,放在一个其他位置就好,另外这里没有对域名作出配置,有需要的小伙伴可以自行配置域名代替ip地址访问。这里我们在服务器上测试一下配置后的结果,启动tomcat后,我们输入刚才配置的路径与实际文件组成的url测试一下。

到这里,tomcat的配置与图片文件的路径映射就完成了,在数据库中只需要存储图片的虚拟路径就可以访问图片了,但是对于服务器外,仍然无法访问tomcat,因为服务器还需要特别配置连接端口,在阿里云服务器上,就是要设置实例的安全组策略。

至此,服务器端的配置就算完成啦,我们可以用自己的电脑访问一下刚才的图片网址测试一下是否完成。

三、Apache-cxf框架搭建web服务

1.Maven项目创建

需要特别注意的是,maven需要特别配置自己本地安装的maven文件,setting文件,才能保证文件目录结构的合理生成,否则需要自己手动添加,下面是正常生成的项目文件目录。

2.图片操作方法类的实现

要做的事情其实很简单,就是将传输过来的图片存储到本地,还要能给出访问它的路径,由于笔者做的项目当中,图片是采用base64编码传输的,还需要一点点额外的操作,就是对编码的解译,将其转换为文件存储,下面是实际操作类,实现了存储,删除,返回路径的功能,解码译码的方法是参照下面链接的教程完成的:

https://blog.csdn.net/luanpeng825485697/article/details/78242083

// Pegessi 2020.4.15
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;

public class ImageStore {
    static BASE64Decoder decoder = new BASE64Decoder();  // 解码
    static BASE64Encoder encoder = new BASE64Encoder();  // 编码
    private String path = "C://Program Files/MySQL/houseImg/";  // 要与tomcat的配置路径一致

    public String base64ToImage(String base64String, String fileName, String houseID) {
        // base64转换为图片 接收的base64编码不需要带表头
        try {
            String newpath = houseID+"/";
            byte[] bytes1 = decoder.decodeBuffer(base64String);
            ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);
            BufferedImage bi1 = ImageIO.read(bais);
            File direct = new File(this.path+newpath);
            if (!direct.exists()){
                direct.mkdir();
            }
            File f1 = new File(this.path+newpath+fileName);
            ImageIO.write(bi1, "jpg", f1);
            return "success";
        } catch (IOException e) {
            e.printStackTrace();
            return "error";
        }
    }

    public String imageToBase64(String fileName) {
        // 图片转换为base64编码 转换出的base64也没有表头
        String packPath = fileName.substring(0,6);
        File f = new File(this.path+packPath+fileName);
        try {
            BufferedImage bi = ImageIO.read(f);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ImageIO.write(bi, "jpg", baos);
            byte[] bytes = baos.toByteArray();
            return encoder.encodeBuffer(bytes).trim();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    public String selectUrl(String fileName, String houseID){
        // 返回存储图片的路径
        String port = "http://39.98.**.**:2233/";  // 要与刚才设置的端口一致,服务器ip+端口
        String path = "houseImg/"+houseID+"/"+fileName;  // 这里是刚才设置的路径,可以自行修改
        return port+path;
    }

    public String delImg(String fileName, String houseID){
        // 删除文件 就是根据路径删除本地文件
        String fullPath = path+houseID+"/"+fileName;
        File file = new File(fullPath);
        if (!file.isDirectory()) {
            file.delete();
            return "success";
        }
        return "fail";
    }

    public ImageStore(){}
}

3.web服务发布

实体类完成后,我们就可以着手将其发布成web服务了,由于我们需要的都是后端的操作,都使用的是java语句,因此选择apache-cxf框架来发布web服务,这部分比较简单,具体的使用这里就不再赘述了,简洁的invoke函数就可以调用。

需要注意的是endpointInterface是你的接口类的位置,serviceName是你要发布的服务名,细心设置好。

然后配置好本地的tomcat,部署在本地的tomcat上得到一个war包。

这个war包就是我们发布的服务啦,接下来将其传输到服务器上安装的tomcat中的webapps目录下就可以,需要注意的是如果自己导入了额外的jar包,需要将jar包同样复制到服务器端Tomcat的lib目录下,才能正常发布服务。

然后启动服务器端的tomcat就可以啦

然后我们可以测试一下刚刚发布的web服务是否成功了,我们可以直接访问服务的wsdl文档查看服务是否发布成功

至此,windows sever2019 + tomcat + 图片存储的功能就完成啦。

有问题的小伙伴欢迎在评论区留言,阿里云服务器是高校学生免费半年的,可以满足自己大部分学习的需求,使用起来也比较方便,管理什么的都有专门的教程指导~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值