亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? requestprocessor.java

?? easyweb的使用
?? JAVA
字號(hào):
package com.easyjf.web;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;

import org.apache.log4j.Logger;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.context.Context;
import org.apache.velocity.exception.MethodInvocationException;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.io.VelocityWriter;
import org.apache.velocity.runtime.RuntimeSingleton;

import com.easyjf.util.CommUtil;
import com.easyjf.util.HtmlUtil;
import com.easyjf.web.config.*;

/**
 * 
 * <p>
 * Title:框架核心處理器
 * </p>
 * <p>
 * Description:EasyJWeb框架的中心處理器,由ActionServlet調(diào)用,然后調(diào)用相應(yīng)的Action并返回用戶服務(wù)
 * </p>
 * <p>
 * Copyright: Copyright (c) 2006
 * </p>
 * <p>
 * Company: www.easyjf.com
 * </p>
 * 
 * @author 蔡世友
 * @version 1.0
 */
public class RequestProcessor {
	private ActionServlet servlet;

	private Module module;

	private static final Map templateCache = new HashMap();

	private static final WebConfig config = WebConfig.getInstance();

	private static final Logger logger = (Logger) Logger
			.getLogger(RequestProcessor.class.getName());

	private RequestProcessor() {
	}

	public RequestProcessor(ActionServlet servlet) {
		this.servlet = servlet;
	}

	public void process(HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {
		String path = request.getServletPath();
		String moduleName = "";
		String para = "";
		if (path.lastIndexOf(".ejf") > 0) {
			moduleName = path.substring(0, path.lastIndexOf(".ejf"));
		} else {
			path = request.getRequestURI();
			if (path.indexOf("/ejf/") == 0)
				path = path.substring(4);
			int n = path.lastIndexOf('/');
			if (n > 0) {
				para = path.substring(n + 1);
				moduleName = path.substring(0, n);
				if (para.lastIndexOf('.') > 0)
					para = para.substring(0, para.lastIndexOf('.'));
			}
		}
		module = config.findModule(moduleName);
		if (module == null)
			module = FrameworkEngine.findModule(moduleName);
		if (module != null) {
			String formName = module.getForm();
			WebForm form = FrameworkEngine.creatWebForm(request, formName);
			if (para != null && (!para.equals(""))) {
				String[] paras = para.split("_");
				if (paras != null) {
					if (paras.length > 0)
						form.getTextElement().put("easyJWebCommand", paras[0]);
					if (paras.length > 1)
						form.getTextElement().put("easyJWebID", paras[1]);
				}
			}
			IWebAction action = FrameworkEngine.findAction(module);
			if (action == null) {
				servlet.error(request, response, new Exception("沒(méi)有找到處理模板的類:"
						+ module.getAction()));
				return;
			}
			if (form == null) {
				servlet.error(request, response, new Exception("表單創(chuàng)建錯(cuò)誤:"
						+ formName));
				return;
			}
			Page page = getResult(module, form, action);
			if (page != null) {
				if (page.getType().equals(Globals.PAGE_TEMPLATE_TYPE)) {
					// logger.debug("合成模板"+page.getName()+":"+page.getUrl());
					doTemplate(page.getUrl(), form, request, response);
				} else {
					// logger.debug("跳轉(zhuǎn)到指定頁(yè)面:"+page.getUrl());
					// doForward(page.getUrl(),request,response);
					response.sendRedirect(page.getUrl());
				}
			} else {
				// logger.error("沒(méi)有任何頁(yè)面要跳轉(zhuǎn)!"+module.getPath()+module.getDefaultPage());
				// servlet.error(request,response,new Exception("沒(méi)有設(shè)置跳轉(zhuǎn)的頁(yè)面!"));
			}
		}
	}

	public Page getResult(Module module, WebForm form, IWebAction action)
			throws ServletException {
		form.setEasyJWebResult(new HashMap());
		Page page = null;
		try {
			page = action.execute(form, module);
		} catch (Exception e) {
			servlet.error(ActionContext.getContext().getRequest(),
					ActionContext.getContext().getResponse(), e);
		}
		// 保存表單form中的數(shù)據(jù)
		// 處理沒(méi)有定義屬性property的表單
		if (form != null && form.getClass() == WebForm.class) {
			form.setProperty(form.getTextElement());// 只保存文本屬性
			form.getProperty().putAll(form.getFileElement());
		}
		if (form != null && (form.getProperty() != null)) {
			Iterator it = form.getProperty().keySet().iterator();
			while (it.hasNext()) {
				String name = (String) it.next();
				form.addResult(name, form.get(name));
			}
		}
		// if(form!=null &&
		// (form.getClass()==WebForm.class))form.getProperty().clear();
		// request.setAttribute("easyJWebResult",easyJWebResult);
		return page;
	}

	protected void doForward(String uri, HttpServletRequest request,
			HttpServletResponse response) throws IOException, ServletException {
		RequestDispatcher rd = getServletContext().getRequestDispatcher(uri);
		rd.forward(request, response);
	}

	protected void doTemplate(String uri, WebForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws IOException, ServletException {
		Context context = createContext(form);
		try {
			Template template = getTemplate(uri, request.getCharacterEncoding());
			if (context != null && (template != null)) {
				mergeTemplate(template, context, response);
			} else
				servlet.error(request, response, new Exception("模塊合成出錯(cuò)!"));
		} catch (ResourceNotFoundException rnfe) {
			logger.error("找不到模板文件!");
			servlet.error(request, response, new Exception("找不到模板!"
					+ WebConfig.getInstance().getTemplateBasePath() + uri));
		} catch (ParseErrorException pee) {
			logger.error("模板語(yǔ)法錯(cuò)誤");
			servlet.error(request, response, new Exception(
					"模板文件中存在語(yǔ)法錯(cuò)誤,不能正常解析!"
							+ WebConfig.getInstance().getTemplateBasePath()
							+ uri));
		} catch (MethodInvocationException mie) {
			logger.error("模板方法調(diào)用錯(cuò)誤:");
		} catch (Exception e) {
			logger.error("查找模板錯(cuò)誤!" + e);
		}
	}

	protected Template getTemplate(String name, String encoding)
			throws ResourceNotFoundException, ParseErrorException,
			MethodInvocationException, Exception {
		if (WebConfig.getInstance().isDebug())
			return RuntimeSingleton.getTemplate(name, encoding);// 若為Debug狀態(tài),則每次都重新載入模板
		Template template = (Template) templateCache.get(name);// 先從Cache中讀取模板文件
		// 這里得進(jìn)一步完善,當(dāng)用戶已經(jīng)更改模板文件后,需要能夠自動(dòng)加載,同時(shí)增加Cache數(shù)量的限制
		if (template == null)
			synchronized (templateCache) {
				{
					// System.out.println("重新加載模板文件!");
					template = RuntimeSingleton.getTemplate(name, encoding);// name
					templateCache.put(name, template);
				}
			}
		return template;
	}

	protected Context createContext(WebForm form) {
		Map result = form.getEasyJWebResult();
		Context context = new VelocityContext();
		Iterator it = result.keySet().iterator();
		while (it.hasNext()) {
			String name = (String) it.next();
			context.put(name, result.get(name));			
			createUtilContext(context);
		}
		return context;
	}

	protected void createUtilContext(Context context) {
		context.put("HtmlUtil", HtmlUtil.getInstance());
		context.put("CommUtil", CommUtil.getInstance());
	}

	protected void mergeTemplate(Template template, Context context,
			HttpServletResponse response) {
		VelocityWriter vw = null;
		Writer writer = null;
		try {
			response.setCharacterEncoding(template.getEncoding());
			response.setContentType("text/html;charset=utf-8");
			writer = servlet.getResponseWriter(response);
			vw = (VelocityWriter) ActionServlet.getWriterPool().get();
			if (vw == null) {
				vw = new VelocityWriter(writer, 4 * 1024, true);
			} else {
				vw.recycle(writer);
			}
			template.merge(context, vw);
		} catch (ResourceNotFoundException e) {
			logger.error("ResourceNotFoundException:" + e);
		} catch (ParseErrorException e) {
			logger.error(e);
		} catch (MethodInvocationException e) {
			logger.error(e);
		} catch (UnsupportedEncodingException e) {
			logger.error(e);
		} catch (IOException e) {
			logger.error(e);
		} catch (Exception e) {
			logger.error(e);
		}

		finally {
			if (vw != null) {
				try {
					vw.flush();
					vw.recycle(null);
					ActionServlet.getWriterPool().put(vw);
				} catch (Exception e) {
					logger.error("Trouble releasing VelocityWriter: "
							+ e.getMessage());
				}
			}
		}
	}

	protected ServletContext getServletContext() {
		return (servlet.getServletContext());
	}

}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97精品久久久久中文字幕| 欧美一区永久视频免费观看| 伊人性伊人情综合网| 国产一区二区视频在线| 精品久久久三级丝袜| 日韩成人免费在线| 欧美日韩国产成人在线91| 日本成人在线不卡视频| 欧美日韩免费在线视频| 日本最新不卡在线| www国产成人免费观看视频 深夜成人网| 久久国产乱子精品免费女| 日韩欧美电影一二三| 不卡一区二区在线| 亚洲国产精品久久久男人的天堂 | 国产精品久久久久婷婷二区次| www.亚洲色图.com| 亚洲图片欧美视频| 国产亚洲精品aa| 欧美日韩免费观看一区二区三区 | 欧美性大战久久| 99久久国产综合精品麻豆| 日本v片在线高清不卡在线观看| 久久综合狠狠综合久久激情 | 国产福利一区二区| 韩国精品免费视频| 色av成人天堂桃色av| 麻豆一区二区三区| 亚洲久草在线视频| 中文字幕欧美日韩一区| 日韩精品在线一区二区| 91视频观看视频| 不卡一区在线观看| 丁香婷婷深情五月亚洲| 国产综合成人久久大片91| 日韩成人免费看| 日韩国产欧美一区二区三区| 伊人夜夜躁av伊人久久| 亚洲国产毛片aaaaa无费看| 亚洲丝袜制服诱惑| 亚洲女子a中天字幕| 一区二区三区av电影| 中文字幕在线播放不卡一区| 国产精品欧美久久久久无广告 | 欧美精品v日韩精品v韩国精品v| av在线综合网| 欧美日韩国产成人在线免费| 日韩欧美综合一区| 久久久精品一品道一区| 国产精品女上位| 亚洲国产欧美在线| 裸体健美xxxx欧美裸体表演| 国产精品资源在线看| 9i在线看片成人免费| 欧美日韩激情在线| 精品国产乱子伦一区| 成人欧美一区二区三区1314| 免费观看30秒视频久久| 极品瑜伽女神91| 欧美大尺度电影在线| 国产麻豆精品在线| 国产精品久久久久影院| 欧美一卡二卡三卡| 久久国产精品免费| 国产精品不卡视频| 欧美日韩综合在线| 国产一区久久久| 亚洲欧美另类小说视频| 欧美日韩国产不卡| 国产黄色精品网站| 亚洲主播在线观看| 精品久久人人做人人爽| 99精品国产99久久久久久白柏| 亚洲一区二区美女| 国产91精品一区二区麻豆网站| 一本色道**综合亚洲精品蜜桃冫 | 欧美日韩国产在线观看| 亚洲福中文字幕伊人影院| 欧美日韩在线三区| 亚洲成a人片在线观看中文| 欧美视频完全免费看| 精品在线观看视频| 国产亚洲一区二区三区在线观看| 狠狠色综合日日| 综合色中文字幕| 91精品国产综合久久久久久久 | 天天综合色天天综合色h| 91精品欧美一区二区三区综合在| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产亚洲美州欧州综合国| 成人动漫一区二区在线| 丝袜美腿亚洲一区| 国产精品美女一区二区三区 | 欧美性色黄大片手机版| 国产一区二区在线免费观看| 一区二区三区四区av| 久久久无码精品亚洲日韩按摩| 色吊一区二区三区| 国产99久久久久| 精品亚洲aⅴ乱码一区二区三区| 成人免费在线观看入口| 亚洲精品一区二区三区四区高清| 色狠狠色噜噜噜综合网| 成人avav影音| 高潮精品一区videoshd| 国精产品一区一区三区mba桃花| 午夜成人免费视频| 亚洲一本大道在线| 亚洲激情自拍偷拍| 一区二区三区在线观看欧美| 国产精品网曝门| 国产欧美一区视频| 国产精品久久久久久户外露出 | 日韩欧美美女一区二区三区| 欧美日韩一区二区三区在线| 日本久久一区二区| 欧美日韩综合在线免费观看| 欧美日韩一区国产| 91精品婷婷国产综合久久竹菊| 欧美日精品一区视频| 欧美精品国产精品| 亚洲精品一线二线三线| 国产女人18水真多18精品一级做| 国产日韩av一区| 亚洲视频在线观看一区| 五月婷婷色综合| 久久er99热精品一区二区| 国产91精品露脸国语对白| 91精品国产综合久久小美女| 99re亚洲国产精品| 成人一级片网址| 粉嫩av一区二区三区| 另类小说图片综合网| 亚洲综合在线观看视频| 日韩久久免费av| 欧美顶级少妇做爰| 欧美一区二区三区啪啪| 日韩精品专区在线| 中文字幕一区二区三区四区不卡| 极品少妇xxxx精品少妇偷拍| 亚洲国产一区二区a毛片| 夜夜嗨av一区二区三区四季av| 久久奇米777| 91精品国产全国免费观看 | 日韩视频一区二区在线观看| 欧美日韩久久一区| 欧美日韩1区2区| 欧美激情综合网| 青娱乐精品视频在线| 91一区二区三区在线观看| 日韩一区二区三区四区五区六区| 国产精品高潮呻吟| 国产成人午夜电影网| 日韩午夜三级在线| 视频在线观看一区二区三区| 91视频一区二区| 亚洲欧美中日韩| 色综合久久精品| 亚洲欧美视频在线观看| 99久久国产综合精品女不卡| 亚洲国产精品传媒在线观看| 国产99一区视频免费| 欧美国产国产综合| 波多野结衣在线一区| 国产日韩欧美高清| 99久久久国产精品免费蜜臀| 国产精品乱码一区二区三区软件| 国产成人啪免费观看软件| 久久精品人人爽人人爽| 91在线观看免费视频| 亚洲在线视频网站| 欧美精品1区2区| 韩国av一区二区| 一区二区三区中文免费| 欧美一区二区三区在| 国产精品1区2区3区在线观看| 久久久777精品电影网影网| 99久久99久久精品免费观看| 亚洲在线成人精品| 久久久精品黄色| 欧美色视频一区| 97久久精品人人澡人人爽| 亚洲国产视频一区| 久久夜色精品一区| 欧美日韩在线播| 成人免费av在线| 久久99精品国产91久久来源| 亚洲人亚洲人成电影网站色| 精品国产乱码久久久久久夜甘婷婷| av一本久道久久综合久久鬼色| 美女性感视频久久| 亚洲国产精品人人做人人爽| 国产精品美日韩| 国产嫩草影院久久久久| 亚洲精品一区二区三区福利| 欧美性猛交xxxx黑人交| 色香色香欲天天天影视综合网| 成人综合日日夜夜| 国产成人免费视频一区| 免费高清视频精品|