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

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

?? gdservlet.java

?? 本書由淺入深、循序漸進(jìn)地介紹了MVC的體系結(jié)構(gòu)和如何構(gòu)建一個基于MVC的Web框架
?? JAVA
字號:
package com.gd.mvc.servlet;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.lang.reflect.*;

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

import com.gd.jdbc.DbConnectionManager;
import com.gd.mvc.action.Action;
import com.gd.mvc.exception.VODataValidate;
import com.gd.mvc.io.InfoInAndOut;
import com.gd.mvc.io.impl.GdInfoInAndOut;
import com.gd.mvc.util.GdParseXml;
import com.gd.mvc.util.GdWebPath;

public class GdServlet extends HttpServlet{
	DbConnectionManager dbManager = null;
	/**
	 * 進(jìn)行初始化工作
	 */
	public void init() throws ServletException {
		//開始初始化連接池
		//dbManager = DbConnectionManager.getInstance();
		//System.out.println("初始化連接池成功");
  	}
	/**
	 * 頁面中使用get方式提交,執(zhí)行doPost方法
	 */
	public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		doPost(req, res);
	}
	/**
	 * 頁面中使用post方式提交,執(zhí)行do_Dispatcher方法
	 */
	public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		do_Dispatcher (req, res);
	}

	private void do_Dispatcher (HttpServletRequest req, HttpServletResponse res) {
	    try {
//	    	String action = (String) req.getParameter("action");
//	    	//獲取系統(tǒng)或項目名稱,既http://localhost:8080/myApp/gd/login.do?action=insert時,獲取systemName=gd
//		    String systemName = "";
//		    String path = "";
//			String ss = req.getServletPath();
//			systemName = ss.split("/")[1];
//			//獲取訪問路徑,既login.do
//			path = ss.split("/")[2].substring(0, ss.split("/")[2].indexOf(".do"));
//			//開始對配置文件進(jìn)行解析
//			GdParseXml parseXml = new GdParseXml();
//			//String pathtemp = req.getRealPath(req.getContextPath());
//			//獲取對應(yīng)的配置文件的路徑
//			String xmlPath = this.getXmlPath(systemName);
//			//讀取配置文件
//			parseXml.read(xmlPath);
//			//設(shè)定從頁面?zhèn)鱽淼腶ction
//			parseXml.setAction(action);
//			//設(shè)定從頁面?zhèn)鱽淼膒ath
//			parseXml.setPath(path);
//			//對配置文件進(jìn)行解析
//			parseXml.parseXml();
//			//獲取xml解析后的數(shù)據(jù)
//			String method = parseXml.getMethod();//獲取Xml中對應(yīng)的方法
//			String actionName = parseXml.getActionName();//獲取Xml中訪問路徑對應(yīng)的actionName
//			String forwardJspInit = parseXml.getForwardJsp();//獲取Xml設(shè)定的返回的頁面
//			String forwardJsp = parseXml.getMethodForwardJsp();//獲取Xml設(shè)定的方法對應(yīng)的返回的頁面
//			String forwardJspPath = parseXml.getForwardJspPath();//獲取Xml設(shè)定的返回頁面的path
//			String prefix = parseXml.getPrefix();//獲取Xml中設(shè)定的頁面的前綴
//			String suffix = parseXml.getSuffix();//獲取Xml中設(shè)定的頁面后綴
//			String extendsAction = parseXml.getExtendsAction();//獲取Xml中設(shè)定的是否繼承GdAction
//			List voId = parseXml.getVoId();//獲取Xml中設(shè)定的voId
//		    List voClass = parseXml.getVoClass();//獲取Xml中設(shè)定的voClass
//		    List voType = parseXml.getVoType();//獲取Xml中設(shè)定的voType
//		    List voValidate = parseXml.getVoValidate();//獲取Xml中設(shè)定的voValidate
//		    List voTable = parseXml.getVoTable();//獲取Xml中設(shè)定的voTable
//		    //將頁面重傳來的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,置入InfoInAndOut
//		    InfoInAndOut infoIn = new GdInfoInAndOut(req, res, voId, voClass, voType, voValidate);
//		    InfoInAndOut infoOut = infoIn;
//			//將解析后的數(shù)據(jù),置入InfoInAndOut
//		    infoIn.put("forwardJsp", forwardJsp);
//			infoIn.put("forwardJspInit", forwardJspInit);
//			infoIn.put("forwardJspPath", forwardJspPath);
//			infoIn.put("prefix", prefix);
//			infoIn.put("suffix", suffix);
//			infoIn.put("voId", voId);
//			infoIn.put("voClass", voClass);
//			infoIn.put("voType", voType);
//			infoIn.put("voValidate", voValidate);
//			infoIn.put("voTable", voTable);
//			infoIn.put("action", action);			
//			//獲取對應(yīng)的logic,根據(jù)method來執(zhí)行該logic相對應(yīng)的方法,傳入?yún)?shù)infoIn,返回值infoOut			
//			Class cls = Class.forName(getActionName(actionName));	
//			Object obj = (Object)cls.newInstance();//獲取對應(yīng)邏輯的實例
//			Method mtd = null;
//			//假如Xml中指定邏輯類不使用繼承GdAction的方式
//			if (extendsAction == null || "".equals(extendsAction.trim())) {
//				if (method == null || "".equals(method.trim())) {
//					method = "doInit";//假如指定的方法為空,則默認(rèn)執(zhí)行邏輯中的doInit方法
//				}
//				mtd = cls.getMethod(method.trim(), new Class[]{InfoInAndOut.class});
//				infoOut = (InfoInAndOut)mtd.invoke(obj, new Object[]{infoIn});//執(zhí)行邏輯中對應(yīng)的方法
//			} else {//假如Xml中指定邏輯類使用繼承GdAction的方式
//				int voFlag = 0;//用來標(biāo)識是否對VO進(jìn)行驗證,0表示驗證成功,1表示失敗
//				try {
//					mtd = cls.getMethod("doInit", new Class[]{InfoInAndOut.class, InfoInAndOut.class});
//					mtd.invoke(obj, new Object[]{infoIn, infoOut});//在GdAction的doInit方法里對VO進(jìn)行驗證
//				} catch(Exception e) {
//					e.printStackTrace();
//					infoOut.put("msg", e.getCause().getMessage());//獲取驗證失敗的消息
//					voFlag = 1;//標(biāo)識驗證失敗
//				}
//				if (voFlag == 0) {//假如驗證成功
//					mtd = cls.getMethod("doBegin", null);//首先執(zhí)行doBegin方法
//					mtd.invoke(obj, null);
//					if (method != null && !"".equals(method)) {
//						mtd = cls.getMethod(method.trim(), null);//再執(zhí)行指定的方法
//						mtd.invoke(obj, null);
//					}
//					mtd = cls.getMethod("doEnd", null);//最后執(zhí)行doEnd方法
//					mtd.invoke(obj, null);
//				}
//			}
//			//設(shè)定系統(tǒng)名進(jìn)行infoOut
//			infoOut.put("systemName", systemName);	
//			req.setAttribute("infoOut", infoOut);
//			//返回到指定頁面
//			forward(req, res);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
		}
    }
	/**
	 * 獲取指定的邏輯名,如果沒有則默認(rèn)com.gd.mvc.action.impl.GdAction
	 * @param actionName
	 * @return
	 * @throws IOException
	 * @throws Exception
	 */
	private String getActionName(String actionName)  throws IOException, Exception {
		if (actionName == null) {
	    	return "com.gd.mvc.action.impl.GdAction";
	    } else {
	    	return actionName.trim();
	    }
	}
	/**
	 * 負(fù)責(zé)頁面的返回工作
	 * @param req
	 * @param res
	 * @throws Exception
	 */
	private void forward(HttpServletRequest req, HttpServletResponse res) throws Exception {
		InfoInAndOut infoOut = (req.getAttribute("infoOut") == null) ? new GdInfoInAndOut(req, res) : (InfoInAndOut)req.getAttribute("infoOut");
		//獲取Xml文件中使用方法對應(yīng)的返回頁面或在方法中指定的返回也
		String forwardJsp = (infoOut.get("forwardJsp") == null) ? "" : ((String)infoOut.get("forwardJsp")).trim();
		//在方法中指定的sendRedirectJsp頁面
		String sendRedirectJsp = (infoOut.get("sendRedirectJsp") == null) ? "" : ((String)infoOut.get("sendRedirectJsp")).trim();
		//在Xml中page中對應(yīng)的默認(rèn)返回頁面和路徑
		String forwardJspInit = (infoOut.get("forwardJspInit") == null) ? "" : ((String)infoOut.get("forwardJspInit")).trim();
		String forwardJspPath = (infoOut.get("forwardJspPath") == null) ? "" : ((String)infoOut.get("forwardJspPath")).trim();
		//在Xml中bean指定的頁面所在的文件夾和后綴
		String prefix = (infoOut.get("prefix") == null) ? "" : ((String)infoOut.get("prefix")).trim();
		String suffix = (infoOut.get("suffix") == null) ? "" : ((String)infoOut.get("suffix")).trim();
		
		//假如指定了sendRedirectJsp頁面
		if (null != sendRedirectJsp && !"".equals(sendRedirectJsp)) {
			res.sendRedirect(sendRedirectJsp);
		} else {//假如沒有指定sendRedirectJsp頁面
			if (!"".equals(forwardJsp)) {//表示不管是否設(shè)定forward元素,只要使用方法對應(yīng)的返回頁面或在模型層指定的頁面
				if ("".equals(prefix) || "".equals(suffix)) {//如果沒有設(shè)定id為viewResolver的bean,或設(shè)定不完整
					RequestDispatcher rd = req.getRequestDispatcher("/"+ (String)infoOut.get("systemName") +"/jsp/" + forwardJsp + ".jsp");
					rd.forward(req, res);
				} else if (!"".equals(prefix) && !"".equals(suffix)){//如果沒有設(shè)定id為viewResolver的bean,或設(shè)定不完整
					if (forwardJsp.indexOf("/") == -1) {//如果forwardJsp中沒有指定路徑
						RequestDispatcher rd = req.getRequestDispatcher(prefix + forwardJsp + suffix);
						rd.forward(req, res);
					} else {//如果forwardJsp中指定了路徑
						RequestDispatcher rd = req.getRequestDispatcher(forwardJsp);
						rd.forward(req, res);
					}
				}
			} else if ("".equals(forwardJspInit) && "".equals(forwardJsp)){//如果即沒設(shè)定forward元素,也沒設(shè)定方法對應(yīng)的返回頁面或在模型層指定的頁面,拋異常
				throw new Exception("請指定返回頁面");
			} else if (!"".equals(forwardJspInit) && "".equals(forwardJsp)){//如果設(shè)定了forward元素,沒有設(shè)定方法對應(yīng)的返回頁面或在模型層指定的頁面
				if ("".equals(prefix) || "".equals(suffix)) {//如果沒有設(shè)定id為viewResolver的bean,或設(shè)定不完整
					if ("".equals(forwardJspPath)) {//如果沒有設(shè)定forward元素的path屬性
						RequestDispatcher rd = req.getRequestDispatcher("/"+ (String)infoOut.get("systemName") +"/jsp/" + forwardJspInit + ".jsp");
						rd.forward(req, res);
					} else {//如果設(shè)定了forward元素的path屬性
						RequestDispatcher rd = req.getRequestDispatcher(forwardJspPath);
						rd.forward(req, res);
					}
				} else if (!"".equals(prefix) && !"".equals(suffix)){//如果沒有設(shè)定id為viewResolver的bean,或設(shè)定不完整
					if ("".equals(forwardJspPath)) {//如果沒有設(shè)定forward元素的path屬性
						RequestDispatcher rd = req.getRequestDispatcher(prefix + forwardJspInit + suffix);
						rd.forward(req, res);
					} else {//如果設(shè)定了forward元素的path屬性
						RequestDispatcher rd = req.getRequestDispatcher(forwardJspPath);
						rd.forward(req, res);
					}
				}
			}
		}
	}
	private String getXmlPath(String systemName) throws IOException {
		// 獲取Web環(huán)境的物理路徑D:/eclipse/workspace/myApp
		GdWebPath webPath = new GdWebPath();
		webPath.getPath();
		//Xml文件所在的路徑為工程項目文件夾下的conf文件夾下,名稱為系統(tǒng)名.xml
		String xmlPath = webPath.getWebPhysicsPath() + "/conf/" + systemName + ".xml";
		File file = new File(xmlPath);
		if (!file.exists()) {//假如在指定的位置不存在Xml,則默認(rèn)的Xml文件夾為工程項目文件夾下的/WEB-INF/config-servlet.xml
			xmlPath = webPath.getWebPhysicsPath() + "/WEB-INF/config-servlet.xml";
		}
		return xmlPath;
	}
	/**
	 * 進(jìn)行銷毀處理工作
	 */
	public void destroy() {	
		//開始銷毀連接池
		//dbManager.release();
		//System.out.println("銷毀連接池成功");
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
毛片一区二区三区| 粉嫩13p一区二区三区| 日本aⅴ亚洲精品中文乱码| 久久国产精品一区二区| 国产一区二区三区在线看麻豆| 国产v综合v亚洲欧| 精品视频在线免费看| 精品久久免费看| 亚洲成人免费看| 精品一区二区免费视频| 91色九色蝌蚪| 欧美国产一区视频在线观看| 天堂蜜桃一区二区三区| aaa亚洲精品| 欧美大片在线观看| 视频一区在线播放| 欧美在线视频不卡| 亚洲蜜臀av乱码久久精品| 国产盗摄视频一区二区三区| 91精品国产丝袜白色高跟鞋| 亚洲一卡二卡三卡四卡五卡| 懂色av一区二区三区蜜臀 | 欧美日韩国产综合一区二区三区| 久久人人超碰精品| 日本欧美在线观看| 欧美一区二区精品| 看片的网站亚洲| 精品噜噜噜噜久久久久久久久试看| 亚洲欧洲色图综合| 久久99国产精品麻豆| 欧美一级日韩不卡播放免费| 午夜不卡av在线| 51精品久久久久久久蜜臀| 日本中文在线一区| 欧美一二三区在线观看| 日本午夜精品视频在线观看| 精品国产免费久久| 精品一区二区三区在线播放| 精品处破学生在线二十三| 九九国产精品视频| 欧美激情一区二区三区在线| 成人18视频日本| 亚洲丶国产丶欧美一区二区三区| 7777精品伊人久久久大香线蕉完整版 | 欧美一区二区在线观看| 日韩一区精品视频| 久久免费国产精品| 色婷婷综合视频在线观看| 人人超碰91尤物精品国产| 日本一二三不卡| 欧美亚一区二区| 久久99久久久久| 亚洲欧美欧美一区二区三区| 欧美久久一二区| 97精品电影院| 日韩精品视频网站| 亚洲丝袜另类动漫二区| 日韩一区二区三区高清免费看看 | 在线综合视频播放| 91日韩一区二区三区| 国产在线一区二区综合免费视频| 亚洲自拍偷拍九九九| 国产欧美一区二区精品秋霞影院 | 天天av天天翘天天综合网| 成人免费一区二区三区在线观看| 日韩免费看的电影| 91麻豆精品国产| 欧美亚洲尤物久久| 91美女片黄在线观看| 懂色av一区二区三区蜜臀| 国内精品伊人久久久久av一坑| 水蜜桃久久夜色精品一区的特点| 亚洲美腿欧美偷拍| 亚洲摸摸操操av| 一区二区国产视频| 一个色妞综合视频在线观看| 青青草国产成人99久久| 亚洲一区二区高清| 亚洲国产精品一区二区久久| 亚洲综合成人在线| 五月婷婷欧美视频| 精品一区二区三区免费播放| 九色综合狠狠综合久久| 国产一区二区精品久久| 国产成人免费av在线| 日本乱人伦aⅴ精品| 欧美日韩另类一区| 91精品国产91久久综合桃花| 久久久久久免费毛片精品| 欧美国产激情一区二区三区蜜月| 国产精品视频看| 亚洲成人动漫一区| 国产99久久久精品| 在线观看不卡一区| 国产亚洲精品7777| 一级做a爱片久久| 国产乱码精品一区二区三区五月婷| 成人综合在线视频| 欧美喷潮久久久xxxxx| 久久久久久99精品| 日本欧美大码aⅴ在线播放| www.一区二区| www久久精品| 日韩黄色免费电影| 成人av网址在线| 91精品视频网| 亚洲国产精品一区二区久久| 国产成人精品免费一区二区| 欧美性猛交xxxx乱大交退制版 | www.欧美色图| 久久精品夜色噜噜亚洲a∨| 亚洲日本va午夜在线电影| 国产精品91一区二区| 日韩欧美视频在线| 首页亚洲欧美制服丝腿| 91福利区一区二区三区| 亚洲欧美区自拍先锋| av电影在线观看不卡| 中文在线免费一区三区高中清不卡| 久久不见久久见免费视频1| 717成人午夜免费福利电影| 亚洲综合区在线| 欧美性生活大片视频| 亚洲国产精品人人做人人爽| 欧洲一区在线电影| 亚洲18女电影在线观看| 欧美一区二区三区色| 亚洲自拍偷拍欧美| 亚洲成人精品在线观看| 欧美日韩一级黄| 成人爱爱电影网址| 久久电影网电视剧免费观看| 一区二区三区在线视频观看58| 色天使色偷偷av一区二区| 亚洲成a人片在线观看中文| 欧美高清视频不卡网| 国产乱码字幕精品高清av| 国产午夜精品理论片a级大结局| 国产成人在线电影| 一区二区三区欧美| 日韩欧美一区在线观看| 国产成人精品免费视频网站| 亚洲国产中文字幕| 2022国产精品视频| 欧美在线视频你懂得| 国产毛片精品视频| 国产视频不卡一区| 欧美精品在线观看播放| 91麻豆国产自产在线观看| 成人激情免费电影网址| 国产精一品亚洲二区在线视频| 亚洲人123区| 337p亚洲精品色噜噜狠狠| 99re热这里只有精品免费视频| 蜜臀精品久久久久久蜜臀| 亚洲免费大片在线观看| 国产精品初高中害羞小美女文| 日韩一区二区在线观看视频| 欧美日韩国产成人在线91| 色婷婷国产精品| 色综合久久中文综合久久牛| a在线播放不卡| 色婷婷久久久久swag精品| 欧美日韩国产电影| 欧美sm美女调教| 国产日韩v精品一区二区| 欧美午夜精品免费| 国产成人精品午夜视频免费| 国产成人免费在线| 在线综合+亚洲+欧美中文字幕| 国产精品素人视频| 麻豆免费精品视频| 91在线观看免费视频| 欧美精品tushy高清| 久久久青草青青国产亚洲免观| 最新热久久免费视频| 日本午夜一区二区| 成人av在线资源网站| 欧美男生操女生| 国产清纯美女被跳蛋高潮一区二区久久w| 国产精品毛片久久久久久久| 1024精品合集| 午夜电影久久久| www.久久精品| 日韩一区二区三区av| 亚洲精品日韩一| 理论电影国产精品| 在线不卡的av| 一区二区免费在线| 91视频在线观看| 欧美国产日本韩| 亚洲国产成人精品视频| 国产一区二区三区av电影| 欧美群妇大交群中文字幕| 亚洲成a人片综合在线| 欧美日韩在线综合| 亚洲成av人片一区二区梦乃| 色诱亚洲精品久久久久久| 国产精品国产a级| 国产在线不卡一区|