SSM云服务器如何访问图片
SSM(Spring SpringMVC Mybatis)作为目前比较流行的Java Web开发框架,已经被广泛应用到各种项目中。有时我们需在SSM项目中加载展示图片,那么如何访问图片呢?
一、将图片上传到服务器
在SSM项目中,我们一般将图片上传到服务器。服务器上的文件夹可以通过apache-tomcat(应用服务器)或FTP服务器来实现。以tomcat为例:
1.在Tomcat安装目录下的webapps文件夹中新建一个文件夹,例如“images”,用于存放图片。
2.在web.xml文件中配置servlet-mapping。配置servlet-mapping来对所有请求到该servlet进行拦截,对输入的URI进行解析,然后输出指定的文件。
“`
ImageServlet
com.xxx.ImageServlet
ImageServlet
/images/*
“`
3.编写ImageServlet类,通过response.getOutputStream()将图片写入response输出流。
“`
File imageFile = new File(imagePath);
FileInputStream fileInputStream = new FileInputStream(imageFile);
BufferedInputStream buffInputStream = new BufferedInputStream(fileInputStream);
byte[] buffer = new byte[buffInputStream.available()];
buffInputStream.read(buffer);
buffInputStream.close();
response.getOutputStream().write(buffer);
response.getOutputStream().flush();
response.getOutputStream().close();
“`
以上步骤完成后,就可以将图片上传到服务器中了。
二、前台代码引入图片
在前台引入图片的方式:
“`
“`
其中,“${pageContext.request.contextPath}”代表了当前应用在服务器上的根路径。如上面的tomcat配置,图片放在“images”文件夹中,即可通过“/images/图片名”访问到图片。
三、图片的封装
在实际开发中,我们往往会将图片封装成一个类,通过类的方法进行加载。
“`
public class ImageUtil {
/**
* 获得图片流
*
* @param imagePath 图片路径
* @return InputStream
*/
public static InputStream getInputStream(String imagePath) {
File imageFile = new File(imagePath);
if (!imageFile.exists()) {
return null;
}
try {
return new FileInputStream(imageFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**
* 获得图片展示的url
*
* @param imageName
* @return
*/
public static String getImageUrl(String imageName) {
String urlPath = \”/images/\”;
String realPath = ImageUtil.class.getResource(\”/\”).getPath() urlPath imageName;
return realPath.replaceAll(\”\\\\\”, \”/\”);
}
}
“`
四、图片的缓存
我们加载图片时,往往会将图片缓存到本地。图片的缓存有利于网络传输、加快页面加载速度。
下面是一个简单的图片缓存代码:
“`
private static ConcurrentHashMap cache = new ConcurrentHashMap();
public static BufferedImage getImage(String imageName) {
SoftReference reference = cache.get(imageName);
BufferedImage image = null;
if (reference != null) {
image = reference.get();
}
if (image == null) {
image = loadImage(ImageUtil.getImageUrl(imageName));
if (image != null) {
cache.put(imageName, new SoftReference(image));
}
}
return image;
}
“`
以上就是SSM云服务器如何访问图片的方法,同时也让我们更深一步地了解了Java Web开发的一些基础知识。
转转请注明出处:https://www.yunxiaoer.com/99167.html