css 图片资源验证器

HttpClientWrapperUtil为请求http的工具类,可自行实现。用的是apache httpclient3.1版本。

 

############CSSFileValidatorTest############

 

public class CSSFileValidatorTest {
private boolean shouldValidate(String s) {
if (s == null || ”".equals(s))
return false;
s = s.trim().toLowerCase();
if (RegUtil.isMatch(“^http[s]?:”, s))
return true;
return false;
}
private String[] distinct(List<String> list){
HashSet<String> set=new HashSet<String>();
for(String str:list){
set.add(str);
}
String[] res=new String[set.size()];
int i=0;
for(Object o:set.toArray()){
res[i++]=o.toString();
}
return res;
}

@Test
public void test1() {
String str = ”.aside .sch_words .top{position:relative;height:20px;padding:25px 0 0 21px;background:url(http://news.qq.com/img/bg_note.gif) 1px 0 no-repeat}”;
List<String> res = RegUtil.matchGroupToList(“[uU][rR][lL]\s*\()”, str + str);
if (res != null) {
for (String s : res)
System.out.println(s);
} else {
System.out.println(“null”);
}
}

@Test
public void test2() throws Exception {
//  String path = ”D:\workspace\service\web\css\a.css”;
String path = ”D:\workspace\service\web\css\b.css”;
StringBuffer sb = new StringBuffer();
Scanner sc = new Scanner(new File(path));
List<String> okList = new ArrayList<String>();
List<String> noList = new ArrayList<String>();
while (sc.hasNext()) {
sb.append(sc.nextLine() + ”
“);
}
List<String> res = RegUtil.matchGroupToList(“[uU][rR][lL]\s*\()”, sb.toString());
if (res != null) {
HttpClientWrapperUtil util = HttpClientWrapperUtil.getInstance();
String[] urls=distinct(res);
for (String s : urls) {
if (shouldValidate(s)) {
try {
URI uri = new URI(s);
Map<String, Object> map = util.sendGetRequest(uri);
//     Iterator<String> it = map.keySet().iterator();
//     while (it.hasNext()) {
//      String key = it.next();
//      System.out.println(key + ”:” + map.get(key));
//     }
if (“200″.equals(map.get(“statusCode”).toString()) || ”304″.equals(map.get(“statusCode”).toString())) {
okList.add(s);
} else {
noList.add(s);
}
} catch (Exception e) {
noList.add(s);
}
} else
noList.add(s);

}

} else {
System.out.println(“null”);
}

for (String s : okList) {
System.out.println(“Image [" + s + "] is OK!”);
}
for (String s : noList) {
System.out.println(“Image [" + s + "] is NO!”);
}
}

@Test
public void test3() throws Exception {
String path = ”http://news.qq.com/base2011/css/qq.css“;
HttpClientWrapperUtil util = HttpClientWrapperUtil.getInstance();
StringBuffer sb = new StringBuffer();
Map<String, Object> oo = util.sendGetRequest(new URI(path));
Scanner sc = new Scanner(new StringReader(oo.get(“body”).toString()));
while (sc.hasNext()) {
sb.append(sc.nextLine() + ”
“);
}
List<String> okList = new ArrayList<String>();
List<String> noList = new ArrayList<String>();
while (sc.hasNext()) {
sb.append(sc.nextLine() + ”
“);
}
List<String> res = RegUtil.matchGroupToList(“[uU][rR][lL]\s*\()”, sb.toString());
if (res != null) {
String[] urls=distinct(res);
for (String s : urls) {
if (shouldValidate(s)) {
try {
URI uri = new URI(s);
Map<String, Object> map = util.sendGetRequest(uri);
//     Iterator<String> it = map.keySet().iterator();
//     while (it.hasNext()) {
//      String key = it.next();
//      System.out.println(key + ”:” + map.get(key));
//     }
if (“200″.equals(map.get(“statusCode”).toString()) || ”304″.equals(map.get(“statusCode”).toString())) {
okList.add(s);
} else {
noList.add(s);
}
} catch (Exception e) {
noList.add(s);
}
} else
noList.add(s);
}

} else {
System.out.println(“null”);
}

for (String s : okList) {
System.out.println(“Image [" + s + "] is OK!”);
}
for (String s : noList) {
System.out.println(“Image [" + s + "] is NO!”);
}
}
}

 

 

########regutil######

/**
* @author jongsuny
*/
public class RegUtil {
public static final String HANGUL_REG = ”uac00-ud7a3|u3131-u3163″;
public static final String CHINESE_REG = ”u4e00-u9fbfuf900-ufaff”;
public static final String CHINESE_GBK = ”u2E80-u2EFFu31C0-u31EFu3200-u32FFu3400-u4DBFu4E00-u9FBFuF900-uFAFF”;
public static final String LINESEPARATER = System.getProperty(“line.separator”);

public static boolean isMatch(String reg, String match) {
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(match);
return m.find();
}

public static String findMatch(String reg, String match) {
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(match);
if (m.find()) {
return m.group(0);
} else {
return null;
}
}
public static List<String> matchGroupToList(String reg, String match) {
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(match);
List<String> list=new LinkedList<String>();
while(m.find()){
list.add(m.group(1));
}
return list;
}
public static String[] matchGroup(String reg, String match) {
List<String> list=matchGroupToList(reg, match);
if(list.size()==0)
return null;
String[] res=new String[list.size()];
for(int i=0;i<list.size();i++){
res[i]=list.get(i);
}
return res;
}

public static String findNthMatch(String reg, String match, Integer index) {
try {
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(match);
if (m.find()) {
return m.group(index);
} else {
return null;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}

 

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>