【实战】后续模块的一些实用写法概述

博主回顾学习课程,准备补完剩余部分,记录不太熟悉的内容。包括读取配置文件、Mybatis-pagehelper使用、mybatis的where标签、ftp服务器调用及富文本处理等,这些内容部分在工作中已接触,后续会视情况补充云服务器部署课程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

自己学习这套课程,到毕业季找到工作,再到入职几个月,已经过去好长时间了,现在还没有学完这个课程也是惭愧,现在准备把这部分课程补完,不过不会像以前那样写的那么细了,毕竟自己工作那么一段时间,里面有些东西已经烂熟于心了,那么接下来就会记录课程中一些自己不太熟悉的内容,作为查漏补缺吧~

1、读取配置文件

自己现在的项目是使用spring cloud的配置中心,写配置只需要bean加个注解就好了,现在再看这个课程的写法还是有可以借鉴的地方的。

/**
 * 读取配置文件的工具类,当然在这里限制了读happymall.properties这个文件
 */
public class PropertiesUtil {

    private static Logger logger = LoggerFactory.getLogger(PropertiesUtil.class);

    private static Properties props;

    //写一点老生长谈的基础内容,一个类加载,静态块优于普通代码块,优于构造函数
    //且静态块只加载一次
    static {
        String fileName = "happymall.properties";
        props = new Properties();
        try {
        	// getClassLoader().getResourceAsStream(fileName)其实就是一般获取resources文件夹下面文件的方法
        	// 因为打成jar包后,通过文件路径无法访问到文件,但是可以通过这个方法获取输入流
            props.load(new InputStreamReader(PropertiesUtil.class.getClassLoader().getResourceAsStream(fileName),"UTF-8"));
        } catch (IOException e) {
            logger.error("配置文件读取异常",e);
        }
    }

    public static String getProperty(String key){
        String value = props.getProperty(key.trim());
        if(StringUtils.isBlank(value)){
            return null;
        }
        return value.trim();
    }

    public static String getProperty(String key,String defaultValue){
        String value = props.getProperty(key.trim());
        if(StringUtils.isBlank(value)){
            value = defaultValue;
        }
        return value.trim();
    }
}

2、Mybatis-pagehelper的具体使用

下面简单记录一下pagehelper的使用方法
pagehelper 会使用AOP,在PageHelper.startPage后面第一条mapper操作上加上分页的SQL

//startPage-start
PageHelper.startPage(pageNum, pageSize);

//填充自己的sql查询逻辑
List<Product> productList = productMapper.selectList();

//pageHelper-收尾
PageInfo pageResult = new PageInfo(productList);

3、mybatis的where标签

mybatis 的where标签,这个之前用的少,突然发现还是有点用的,记录一下,where标签会自动将第一个and或者or去掉,方便我们拼装多种条件判断

<where>
  <if test="productName != null">
    AND name LIKE #{productName}
  </if>
  <if test="productId != null">
    AND id = #{productId}
  </if>
</where>

4、ftp服务器调用

现在在大公司里面有专门的文件存储服务,只要引用jar包并适当配置就可以直接使用方法上传,不需要自己搞ftp服务器了,但是感觉作为一项技能掌握以下还是很好的,万一以后去小公司了呢····
这里把视频教学中的代码拿出来记录一下,为以后提供一个参考。

public class FTPUtil {

    public static final Logger logger = LoggerFactory.getLogger(FTPUtil.class);

    private static String ftpIp = PropertiesUtil.getProperty("ftp.server.ip");
    private static String ftpUser = PropertiesUtil.getProperty("ftp.user");
    private static String ftpPass = PropertiesUtil.getProperty("ftp.pass");

    public FTPUtil(String ip, int port, String user, String pwd) {
        this.ip = ip;
        this.port = port;
        this.user = user;
        this.pwd = pwd;
    }

    public static boolean upload(List<File> fileList) throws IOException {
        FTPUtil ftpUtil = new FTPUtil(ftpIp,21,ftpUser,ftpPass);
        logger.info("开始连接FTP服务器");
        //异常抛出,这样在服务层能够有相应的处理
        boolean result = ftpUtil.upload("img", fileList);
        logger.info("开始连接FTP服务器,结束上传,上传结果:{}", result);
        return result;
    }

    private boolean upload(String remotePath, List<File> fileList) throws IOException {
        boolean uploaded = true;
        FileInputStream fis = null;
        //连接FTP服务器
        if(connectServer(this.ip, this.port, this.user, this.pwd)) {
            try {
                //这样可以修改文件目录
                ftpClient.changeWorkingDirectory(remotePath);
                //设置缓冲区
                ftpClient.setBufferSize(1024);
                ftpClient.setControlEncoding("UTF-8");
                //设置为二进制编码形式可以防止乱码
                ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
                //打开本地被动模式,详见vsftp安装
                ftpClient.enterLocalPassiveMode();
                //然后可以开始上传
                for(File fileItem : fileList) {
                    fis = new FileInputStream(fileItem);
                    ftpClient.storeFile(fileItem.getName(), fis);
                }
            } catch (IOException e) {
                logger.error("上传文件异常",e);
                uploaded = false;
            } finally {
                //要释放连接,不然会占用资源,时间长了会有问题
                // 这里释放资源的写法也不是很安全
                fis.close();
                ftpClient.disconnect();
            }
        }
        return uploaded;
    }

    private boolean connectServer(String ip, int port, String user, String pwd) {
        ftpClient = new FTPClient();
        boolean isSuccess = false;
        try {
            ftpClient.connect(ip);
            isSuccess = ftpClient.login(user, pwd);
        } catch (IOException e) {
            logger.error("连接FTP服务器异常",e);
        }
        return isSuccess;
    }

    private String ip;
    private int port;
    private String user;
    private String pwd;
    private FTPClient ftpClient;

    public String getIp() {
        return ip;
    }
    public void setIp(String ip) {
        this.ip = ip;
    }
    public int getPort() {
        return port;
    }
    public void setPort(int port) {
        this.port = port;
    }
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public FTPClient getFtpClient() {
        return ftpClient;
    }
    public void setFtpClient(FTPClient ftpClient) {
        this.ftpClient = ftpClient;
    }
}

5、富文本处理

这里我没有试过前端的simditor,这里做个记录,可以使用这个玩意儿。

最后

毕竟我本人也工作一年左右了,现在回顾起来这些内容,大部分在工作中也碰到过了,值得记录的东西不多了,但还是感谢这个实战项目把我领进门的。后续还有一点云服务器的部署课程,看情况再补充一些吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值