化石原创文章,转载请注明来源并保留原文链接


一般上传的时候目录不会直接放在默认的静态资源目录下面。因为这样就绑定了原来的网站内容。

1、实现让上传的图片放置到服务器的其他文件夹,这个在springboot的接收上传的代码中可以通过路径支持到。

package main.controller.admin;

import main.StringHelper;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import java.io.File;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@RestController
public class UploadPageController {
    @PostMapping("/upload")
    public String singleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {
        if (file.isEmpty()) {
            redirectAttributes.addFlashAttribute("message", "Please select a file to upload");
            return "error";
        }

        try {
            String originalFilename = file.getOriginalFilename();
            int dot = originalFilename.lastIndexOf('.');
            String extension = file.getOriginalFilename().substring(dot + 1);

            LocalDateTime now = LocalDateTime.now();
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
            String destFileName = now.format(formatter) + StringHelper.getAlphaNumericString(8) + "." + extension;
            String filePath = "f:/" + destFileName;
            File dest = new File(filePath);
            file.transferTo(dest);
//            byte[] bytes = file.getBytes();
//            Path path = Paths.get(filePath);
//            Files.write(path, bytes);

            return destFileName;

        } catch (IOException e) {
            e.printStackTrace();
        }

        return "error";
    }
}

上面的这段代码,在接收到图片的时候,把目录定在了f盘的根目录(在windows上开发的时候使用)。

2、springboot配置,让我们的f:/成为静态资源的搜索目录的一部分。这个需要在springboot工程的application.properties中完成。

web.upload-path=f:/
spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${web.upload-path}

上面最后file:${web.upload-path}指定了f:/。其他几个目录其实都是springboot内置的。

3、完成上面两步后,这样我们在上传的时候,就能得到服务器上的该上传图片对应的名称(上面的1中的代码),这样只要改变对应的img的src内容,浏览器就会刷出对应的图片。

4、Linux上,路径不要用~(当前用户目录标识),实际测试的时候发现不能用。用绝对路径吧。


化石原创文章,转载请注明来源并保留原文链接



化石原创文章,转载请注明来源并保留原文链接


像web一样,可以使用css文件,也可以写在代码(online)里。比如,我们给ListView做自定义的style:

第一种方式:

(a) 写一个css文件,名字叫做stylesheet.css

(b) 里面加入以下内容

.mylist {
    -fx-control-inner-background: #494c4e;
}

(c) 代码初始化加载该css文件

scene.getStylesheets().add("stylesheet.css");

(d) 在listview的实例中使用

listView.getStyleClass().add("mylist");

这样我们的listview中的每个cell的背景就成了我们自己的颜色。

第二种方式:

直接使用方法,举例

listView.setStyle("-fx-control-inner-background: #494c4e;");

这个效果跟第一种是一样的。第一种适合大项目管理,做皮肤等;第二种方式快速,立竿见影,一般是调试、小工具等使用。


化石原创文章,转载请注明来源并保留原文链接



化石原创文章,转载请注明来源并保留原文链接


1、项目的application.properties中,写入

server.error.whitelabel.enabled: false

2、项目resources目录下,建立public目录,下方建立error目录,然后放置

404.html文件,测试内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>Something went wrong! </h1>
    <h2>Our Engineers are on it</h2>
    <a href="/">Go Home</a>
</body>
</html>

这样准备工作就完毕了。

启动Tomcat,使用浏览器访问没有准备的url连接,如果没有错误的话,就会看到上面的404页面的内容。

SpringBoot版本:2.2.1


化石原创文章,转载请注明来源并保留原文链接



化石原创文章,转载请注明来源并保留原文链接


工程需要javabase64 1.3.1库,好好的maven dependency在pom.xml中,却发现jar文件一直同步不下来。用网页打开maven reposity,点击页面的view all,发现返回的json也是找不到资源。难道这个库在maven这里维护这么不积极?不知原因。

到javabase64的官网去能下载到jar的zip文件,解开后就可以把里面的jar手动放置到intellij工程,步骤:

1、File | Project Structure …

2、Project Settings | Libraries

3、出现的面板上分成三栏,中间一栏的左上角,点击那个+号(加号)

4、下拉菜单选择java

5、跳出的选择文件对话框中,定位到需要的jar文件,完成点击后就会导入这个jar到工程。

结束。


化石原创文章,转载请注明来源并保留原文链接



化石原创文章,转载请注明来源并保留原文链接


1、Tomcat根据url请求得到当前目录位置,比如url请求是/free,那么当前位置就是/

2、ftl中的涉及的所有文件的路径计算,如果不是绝对路径,那么就以上面计算出的位置为前置,添加ftl中的路径为全路径,搜索资源。


化石原创文章,转载请注明来源并保留原文链接