博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring常用工具类
阅读量:6839 次
发布时间:2019-06-26

本文共 5552 字,大约阅读时间需要 18 分钟。

Spring框架下自带了丰富的工具类,在我们开发时可以简化很多工作:

1.Resource访问文件资源:

具体有:

ResourceUtils.getFile(url);FileSystemResource(); ClassPathResource();ServletContextResource(application,url);

2.文件操作 FileCopyUtils

具体有:

FileCopyUtils.copy(Resource.getFile,new File(Resource.getFile(),getParent()+'目标文件名')); 

3.属性文件操作 PropertiesLoaderUtils

具体有:

PropertiesLoaderUtils.loadAllProperties("属性文件名");  --基于类路径

4.EncodedResource(Resource对象,”UTF-8″) 编码资源(特殊的);

5.WebApplicationContextUtils 

6.StringEscapeutils 编码解码

文件资源操作

  1. 通过 FileSystemResource 以文件系统绝对路径的方式进行访问;
  2. 通过 ClassPathResource 以类路径的方式进行访问;
  3. 通过 ServletContextResource 以相对于 Web 应用根目录的方式进行访问。
import java.io.IOException;import java.io.InputStream;import org.springframework.core.io.ClassPathResource;import org.springframework.core.io.FileSystemResource;import org.springframework.core.io.Resource;public class FileSourceExample {    public static void main(String[] args) {        try {            String filePath =            "D:/masterSpring/chapter23/webapp/WEB-INF/classes/conf/file1.txt";            // ① 使用系统文件路径方式加载文件            Resource res1 = new FileSystemResource(filePath);            // ② 使用类路径方式加载文件            Resource res2 = new ClassPathResource("conf/file1.txt");            InputStream ins1 = res1.getInputStream();            InputStream ins2 = res2.getInputStream();            System.out.println("res1:"+res1.getFilename());            System.out.println("res2:"+res2.getFilename());        } catch (IOException e) {            e.printStackTrace();        }    }}

在获取资源后,您就可以通过 Resource 接口定义的多个方法访问文件的数据和其它的信息

getFileName() 获取文件名,

getFile() 获取资源对应的 File 对象,

getInputStream() 直接获取文件的输入流。

createRelative(String relativePath) 在资源相对地址上创建新的资源。

在 Web 应用中,您还可以通过 ServletContextResource 以相对于 Web 应用根目录的方式访问文件资源

Spring 提供了一个 ResourceUtils 工具类,它支持“classpath:”和“file:”的地址前缀 ,它能够从指定的地址加载文件资源。

File clsFile = ResourceUtils.getFile("classpath:conf/file1.txt");  System.out.println(clsFile.isFile());String httpFilePath = "file:D:/masterSpring/chapter23/src/conf/file1.txt";File httpFile = ResourceUtils.getFile(httpFilePath);

文件操作

在使用各种 Resource 接口的实现类加载文件资源后,经常需要对文件资源进行读取、拷贝、转存等不同类型的操作。

FileCopyUtils

它提供了许多一步式的静态操作方法,能够将文件内容拷贝到一个目标 byte[]、String 甚至一个输出流或输出文件中。

import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileReader;import java.io.OutputStream;import org.springframework.core.io.ClassPathResource;import org.springframework.core.io.Resource;import org.springframework.util.FileCopyUtils;public class FileCopyUtilsExample {    public static void main(String[] args) throws Throwable {        Resource res = new ClassPathResource("conf/file1.txt");        // ① 将文件内容拷贝到一个 byte[] 中        byte[] fileData = FileCopyUtils.copyToByteArray(res.getFile());        // ② 将文件内容拷贝到一个 String 中        String fileStr = FileCopyUtils.copyToString(new FileReader(res.getFile()));        // ③ 将文件内容拷贝到另一个目标文件        FileCopyUtils.copy(res.getFile(),        new File(res.getFile().getParent()+ "/file2.txt"));        // ④ 将文件内容拷贝到一个输出流中        OutputStream os = new ByteArrayOutputStream();        FileCopyUtils.copy(res.getInputStream(), os);    }}static void copy(byte[] in, File out)     将 byte[] 拷贝到一个文件中static void copy(byte[] in, OutputStream out)     将 byte[] 拷贝到一个输出流中static int copy(File in, File out)     将文件拷贝到另一个文件中static int copy(InputStream in, OutputStream out)     将输入流拷贝到输出流中static int copy(Reader in, Writer out)     将 Reader 读取的内容拷贝到 Writer 指向目标输出中static void copy(String in, Writer out)     将字符串拷贝到一个 Writer 指向的目标中属性文件操作  Spring 提供的 PropertiesLoaderUtils 允许您直接通过基于类路径的文件 地址加载属性资源  package com.baobaotao.io;import java.util.Properties;import org.springframework.core.io.support.PropertiesLoaderUtils;public class PropertiesLoaderUtilsExample {    public static void main(String[] args) throws Throwable {       // ① jdbc.properties 是位于类路径下的文件  Properties props = PropertiesLoaderUtils.loadAllProperties("jdbc.properties");  System.out.println(props.getProperty("jdbc.driverClassName"));    }}

特殊编码的资源

当您使用 Resource 实现类加载文件资源时,它默认采用操作系统的编码格式。

如果文件资源采用了特殊的编码格式(如 UTF-8),则在读取资源内容时必须事先通过 EncodedResource 指定编码格式,否则将会产生中文乱码的问题。

import org.springframework.core.io.ClassPathResource;import org.springframework.core.io.Resource;import org.springframework.core.io.support.EncodedResource;import org.springframework.util.FileCopyUtils;public class EncodedResourceExample {        public static void main(String[] args) throws Throwable  {            Resource res = new ClassPathResource("conf/file1.txt");            // ① 指定文件资源对应的编码格式(UTF-8)            EncodedResource encRes = new EncodedResource(res,"UTF-8");            // ② 这样才能正确读取文件的内容,而不会出现乱码            String content  = FileCopyUtils.copyToString(encRes.getReader());            System.out.println(content);     }}

访问 Spring 容器,获取容器中的 Bean,使用 WebApplicationContextUtils 工具类

ServletContext servletContext = request.getSession().getServletContext();WebApplicationContext wac = WebApplicationContextUtils. getWebApplicationContext(servletContext);

中文乱码过滤器

encodingFilter
org.springframework.web.filter.CharacterEncodingFilter ① Spring 编辑过滤器
② 编码方式
encoding
UTF-8
③ 强制进行编码转换
forceEncoding
true
② 过滤器的匹配 URL
encodingFilter
*.html

特殊字符转义

Web 开发者最常面对需要转义的特殊字符类型:HTML 特殊字符;  JavaScript 特殊字符;HTML 特殊字符转义& :&  " :"< :<  > :>JavaScript 特殊字符转义' :/' " :/" / ://  走纸换页: /f  换行:/n  换栏符:/t  回车:/r  回退符:/b

 

转载地址:http://uckul.baihongyu.com/

你可能感兴趣的文章
Ubuntu 13.10不能启动VirtualBox怎么办?
查看>>
一次调戏群友的事件
查看>>
疯狂Activiti6.0连载(17) Drools规则语法概述
查看>>
PHP下使用curl问题小结
查看>>
airflow-datapipeline解放双手,撸起来
查看>>
解决IE浏览器下对于ajax重复提交处理的bug
查看>>
import static和import的区别
查看>>
使用fastjson
查看>>
[算法研究]の冒泡算法--javascript实现
查看>>
Hibernate Annotation笔记
查看>>
年轻时不做会后悔的八件事
查看>>
重读传递参数
查看>>
剖析 Recipe
查看>>
OS X系统启动的基本步骤
查看>>
C Primer Plus 第6章 C控制语句:循环 6.11 使用函数返回值的循环的例子
查看>>
怎么保存退出vi编辑
查看>>
JBoss 系列三十九:jBPM5示例之 Multiple Instance Sub-Process
查看>>
C++面向对象网络编程之SockCli
查看>>
REST概述
查看>>
史上最详细的Android Studio系列教程三--快捷键
查看>>