All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ajaxanywhere.parser.RegexResponseParser Maven / Gradle / Ivy

Go to download

本项目主要弥补在使用mybatis3+springmvc+jquery easyui快速搭建web应用系统是遇到的框架不足. 主要工作包括: 1,扩展了ApplicationContextAware,通过单例注入spring容器,提供spring容器外的bean获取方法 2,扩展了apache shiro框架,统一了安全结构 3,扩展了mybatis3拦截器,在两个拦截器中自动完成分页注入,实现内存分页。 4,分页设计数据库方言 5,提供了一个easyuigrid的模型 6,提供了java泛型的jstl 7, xml工具包等一些小工具

The newest version!
/**
 * 
 */
package org.ajaxanywhere.parser;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.log4j.Logger;

/**
 * RegexResponseParser.java is
 * 
 * events
 * 
 * @author Alex
 *
 */
@SuppressWarnings("rawtypes")
public class RegexResponseParser implements ResponseParser {
	private final static Logger LOGGER = Logger.getLogger(RegexResponseParser.class);
	private Pattern imgTag = Pattern.compile(")", Pattern.CASE_INSENSITIVE);

	@SuppressWarnings("unchecked")
	public HTMLBlock parse(String html) {
		long tstart = System.currentTimeMillis();
		HTMLBlock ret = new HTMLBlock();
		final List scripts = ret.getScriptContents();
		final Set images = ret.getImages();

		// find images to reload
		Matcher matcher = imgTag.matcher(html);
		while (matcher.find()) {
			int start = matcher.start();
			StringBuilder imgHtml = new StringBuilder(256);
			for (int i = start + 5; i < html.length(); i++) {
				if (html.charAt(i) == '>')
					break;
				imgHtml.append(html.charAt(i));
			}
			if (imgHtml.length() == 0)
				continue;

			String src = abstractImageSrcAttribute(imgHtml);
			if (src == null)
				continue;

			images.add(src);
			imgHtml = null;
		}

		// find all scripts
		List markers = new ArrayList();

		StringMatcher endOfScript = new StringMatcher("");
		StringMatcher startOfCmm = new StringMatcher("");

		matcher = scriptTag.matcher(html);
		while (matcher.find()) {
			String g = matcher.group();

			int start = matcher.start() + g.length();
			int markStart = matcher.start();

			if (!g.endsWith(">")) {// not