判断是否静态文件、静态目录
package top.malaoshi.web.utils;
import top.malaoshi.util.StringUtil;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
/**
* 判断是否静态文件、静态目录
*/
public class StaticFileAndDirectory {
private static List<String> staticDirectory =new ArrayList();
static {
staticDirectory.add("/js/");
staticDirectory.add("/css/");
staticDirectory.add("/img/");
staticDirectory.add("/static/");
}
private static List<String> staticFileSuffix =new ArrayList();
static {
staticFileSuffix.add(".html");
staticFileSuffix.add(".htm");
staticFileSuffix.add(".css");
staticFileSuffix.add(".js");
staticFileSuffix.add(".jpg");
staticFileSuffix.add(".jpeg");
staticFileSuffix.add(".gif");
staticFileSuffix.add(".png");
staticFileSuffix.add(".ico");
staticFileSuffix.add(".txt");
staticFileSuffix.add(".doc");
staticFileSuffix.add(".docx");
staticFileSuffix.add(".xls");
staticFileSuffix.add(".xlsx");
staticFileSuffix.add(".ppt");
staticFileSuffix.add(".pptx");
staticFileSuffix.add(".mp3");
staticFileSuffix.add(".mp4");
staticFileSuffix.add(".exe");
}
public static boolean isStaticDirectory(String url){
for (String path: staticDirectory) {
if(url.indexOf(path)>=0) {
return true;
}
}
return false;
}
/**
* 判断是否静态文件
* 如果url中最后一个部分中,包含 “.” ,那么截取后缀,与 staticFileSuffix 比较
* @param url
* @return
*/
public static boolean isStaticFile(String url){
// "/abc.a/student.txt
String name = StringUtil.lastSlice(url, "/", false);
if(name.contains(".")) { // 有 '.' ,说明有后缀,需要判断后缀
String suffix = StringUtil.lastSlice(name, ".", true);
boolean ret = staticFileSuffix.contains(suffix);
return ret;
}else { // 没有 '.',说明没有后缀,就认为不是静态文件
return false;
}
}
public static boolean is(HttpServletRequest req) {
String servletPath = req.getServletPath();
return is(servletPath);
}
public static boolean is(String url) {
if(isStaticDirectory(url) || isStaticFile(url)){
return true;
}
return false;
}
}