⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modbaseservlet.java

📁 一个日本流行的,功能较全的开源Web办公管理(Groupware)系统。
💻 JAVA
字号:
package jp.co.sjts.gsession.tools;

import java.io.OutputStream;
import java.io.IOException;
import java.io.File;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Hashtable;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.ServletConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import jp.co.sjts.gsession.main.Holiday;

/**
 * <p>奺儌僕儏乕儖梡偺儀乕僗僋儔僗
 *
 * @author Satoru K<br>
 * @author Hideyuki KITADE &lt;kitade@sjts.co.jp&gt;<br>
 *
 */
abstract public class ModBaseServlet extends HttpServlet {

	/** */
	private String rootDir = null;
	/** */
	private String mapURL = null;
	/** */
	private String mainURL = null;
	/** */
	private String helpURL = null;

	/**
	 * <p>GET儕僋僄僗僩偺張棟傪峴偆丅昁偢幚憰偡傞昁梫偑偁傞
	 *
	 * <p>Session僆僽僕僃僋僩偵偼丄儐乕僓ID丄儐乕僓柤丄偑擺傔傜傟偰偄傞丅
	 *
	 * <p>僷儔儊乕僞柤傪僉乕偲偟偰丄僷儔儊乕僞抣傪偱庢摼偱偒傞丅僷儔儊乕僞抣偼丄暥帤楍攝楍偱庢摼偱偒傞丅
	 *				 
	 * @param hsPara 僋儔僀傾儞僩偐傜搉偝傟偨僷儔儊乕僞丅(儅儖僠僷乕僩偵懳墳)
	 * @param res HttpServletRequest
	 * @param res HttpServletResponse
	 * @exception ServletException
	 * @exception IOException
	 */
	abstract public void GSdoPost(Hashtable hsPara,HttpServletRequest req,HttpServletResponse res)
		throws ServletException, IOException;

	/**
	 * <p>POST儕僋僄僗僩偺張棟傪峴偆丅昁偢幚憰偡傞昁梫偑偁傞
	 *
	 * <p>Session僆僽僕僃僋僩偵偼丄儐乕僓ID丄儐乕僓柤丄偑擺傔傜傟偰偄傞丅
	 *
	 * <p>僷儔儊乕僞柤傪僉乕偲偟偰丄僷儔儊乕僞抣傪偱庢摼偱偒傞丅僷儔儊乕僞抣偼丄僼傽僀儖僞僀僾偺傕偺偼Hashtable偱峔惉偝傟偰偄傞丅
	 * 偙偺Hashtable偵偼俀偮偺僨乕僞偑擺傔傜傟偰偄傞丅"filename"偵傛傝僼傽僀儖柤傪庢摼偱偒傞丅"content"偵傛傝
	 * Byte攝楍傪庢摼偱偒傞丅<BR>
	 * 偦傟埲奜(捠忢偺暥帤楍僷儔儊乕僞)偼丄暥帤楍攝楍偱庢摼偱偒傞丅
	 *				 
	 * @param hsPara 僋儔僀傾儞僩偐傜搉偝傟偨僷儔儊乕僞丅(儅儖僠僷乕僩偵懳墳)
	 * @param res HttpServletRequest
	 * @param res HttpServletResponse
	 * @exception ServletException
	 * @exception IOException
	 */
	abstract public void GSdoGet(Hashtable hsPara,HttpServletRequest req,HttpServletResponse res)
		throws ServletException, IOException;

	/**
	 * 僀儊乕僕僼傽僀儖偑奿擺偝傟偰偄傞URL暥帤楍傪庢摼偡傞
	 *
	 * @return 僀儊乕僕僨傿儗僋僩儕偺URL暥帤楍
	 */
	public final String getMapURL() {
		return mapURL;
	}

	/**
	 * 儊僀儔乕偑愝掕偝傟偰偄偨応崌偼丄儊僀儔乕偺 dipacher.forword() 梡偺
	 * URL傪曉偡丅愝掕偝傟偰偄側偄応崌偼丄null
	 *
	 * @return 儊僀儔乕偺 dipacher.forword() 梡 URL
	 */
	public final String getMailerURL() {
		File file = new File(rootDir,"gsmail");
		if(file.exists()) {
			String mailer=null;
			java.io.BufferedReader reader=null;
			try {
				reader = GSTextFile2.OpenLoad(file);
				mailer = reader.readLine();
				reader.close();
			} catch(Exception e) {
				e.printStackTrace( );
				return null;
			} finally {
				try {
					reader.close();
				} catch(Exception e) {
					e.printStackTrace( );
					return null;
				}
			}		
			return mailer;
		} else {
			return null;
		}
	}

	/**
	 * 儊僀儞偺僨乕僞僨傿儗僋僩儕傪庢摼偡傞
	 *
	 * @return 儊僀儞偺僨乕僞僨傿儗僋僩儕
	 */
	public final File getMainDataDir() {
		return new File(rootDir);
	}

	/**
	 * 儊僀儞偺URL傪庢摼偡傞
	 *
	 * @return 儊僀儞偺URL暥帤楍
	 */
	public final String getMainURL() {
		return mainURL;
	}

	/**
	 * 僿儖僾偑奿擺偝傟偰偄傞僩僢僾僨傿儗僋僩儕偺URL傪庢摼偡傞
	 *
	 * @return 僿儖僾偑奿擺偝傟偰偄傞僩僢僾僨傿儗僋僩儕偺URL暥帤楍
	 */
	public final String getHelpURL() {
		return helpURL;
	}

	/**
	 * IUserManager僀儞僞僼僃乕僗傪庢摼偡傞
	 *
	 * @param req HttpServletRequest
	 * @return 儐乕僓乕儅僱乕僕儍乕
	 */
	public IUserManager getUserManager(HttpServletRequest req) {
		HttpSession session = req.getSession(false);
		return (GSUserManager)session.getAttribute(GSBase.SESSION_USERMNG);
	}

	/**
	 * <p>IHoliday僀儞僞僼僃乕僗傪庢摼偡傞
	 *
	 * <p>儊僜僢僪屇傃弌偟偵傛傝怴偨偵僼傽僀儖傪撉傒崬傫偱僆僽僕僃僋僩傪惗惉偟傑偡丅
	 * 僀儞僗僞儞僗偼巊偄夞偝側偄曽偑傛偄
	 *
	 * @param yyyy 擭
	 * @return IHoliday
	 * @exception GSException 僼傽僀儖偺撉崬僄儔乕側偳
	 * @see IHoliday
	 */
	public final IHoliday getHoliday(String yyyy) throws GSException {
		return new Holiday(new File(rootDir),yyyy);
	}

	/**
	 * <p>儊僀儞儃僨傿乕傊昞帵偡傞応崌偼偙傟傪僆乕僶儔僀僪偡傞丅
     * <p>GSMail摍偺桳彏僾儔僌僀儞傪僶乕僕儑儞傾僢僾偡傞傑偱巆偡儊僜僢僪
     * <p>壓偺堷悢偺堘偆GSMainBodyWrite傊偄偢傟曄峏偡傞丅
	 *
	 * @param pw 偙偺PrintWriter傪巊偄body偵彂崬傪峴偆丅&lt;BODY&gt;僞僌偼娷傔偰偼偄偗側偄丅
	 * @param myUrl 儌僕儏乕儖偺URL
	 * @param sessionid 偙偺僙僢僔儑儞傪帩偭偰偄傞儐乕僓偺ID
	 * @exception ServletException
	 * @exception IOException
     * @deprecated 偙偺儊僜僢僪偼GroupSession1.1.8偱嶍彍偡傞梊掕偱偡丅
	 */
	public void GSMainBodyWrite(PrintWriter pw,String myUrl,int sessionUid)
		throws ServletException, IOException {
	}

	/**
	 * <p>儊僀儞儃僨傿乕傊昞帵偡傞応崌偼偙傟傪僆乕僶儔僀僪偡傞丅
	 *
	 * @param pw 偙偺PrintWriter傪巊偄body偵彂崬傪峴偆丅&lt;BODY&gt;僞僌偼娷傔偰偼偄偗側偄丅
	 * @param myUrl 儌僕儏乕儖偺URL
	 * @param sessionUid 偙偺僙僢僔儑儞傪帩偭偰偄傞儐乕僓偺ID
     * @param IUserManager 儐乕僓儅僱乕僕儍乕
	 * @exception ServletException
	 * @exception IOException
	 */
	public void GSMainBodyWrite(PrintWriter pw,String myUrl,int sessionUid,IUserManager userMgr)
		throws ServletException, IOException {
	}
    
	/**
	 * <p>儊僀儞儃僨傿乕傊昞帵偡傞応崌偼偙傟傪僆乕僶儔僀僪偡傞丅
	 *
	 * @exception ServletException
	 * @exception IOException
	 */
	public void GSMainBodyWrite(MainBodyParam mbp)
		throws ServletException, IOException {
	}

	/**
	 * <p>弶婜壔傪峴偄傑偡丅
	 * <p>僒乕僽儗僢僩僐儞僥僫婲摦帪偵屇傃弌偝傟傑偡丅
	 */
	public void init() throws ServletException {
		// 儊僀儞僨乕僞奿擺梡偺僨傿儗僋僩儕傪庢摼(椺丗"c:\DATADIR\")
		rootDir = getServletContext().getInitParameter("DataDir");
		if(rootDir==null)
			throw new GSException("弶婜抣偺庢摼偵幐攕(僥乕僞僨傿儗僋僩儕)");

		if(!rootDir.endsWith("/"))
			rootDir+="/";

		rootDir = rootDir.replace('/',File.separatorChar);

		// 僨傿儗僋僩儕偺桳岠惈傪僠僃僢僋
		try{
			File file = new File(rootDir);
			if(!file.exists())		// 僼傽僀儖偑懚嵼偡傞偐
				if(!file.mkdirs())	// 僼傽僀儖偑懚嵼偟側偄応崌偼丄嶌惉傪帋傒傞
					throw new ServletException("僨傿儗僋僩儕嶌惉偵帋傒偨偑幐攕偟傑偟偨丅");
						
		} catch (SecurityException e) {
			throw new GSException("傾僋僙僗尃僄儔乕:"+rootDir);
		}

		// 儅僢僾梡偺url傪庢摼
		mapURL = getServletContext().getInitParameter("MapUrl");
		if(mapURL==null)
			throw new GSException("弶婜抣偺庢摼偵幐攕(儅僢僾倀俼俴)");

		// 儊僀儞偺URL傪庢摼
		mainURL = getServletContext().getInitParameter("MainUrl");
		if(mainURL==null)
			throw new GSException("弶婜抣偺庢摼偵幐攕(儊僀儞倀俼俴)");

		// 傊儖僾偺URL傪庢摼
		helpURL = getServletContext().getInitParameter("HelpUrl");
		if(helpURL==null)
			throw new GSException("弶婜抣偺庢摼偵幐攕(傊儖僾倀俼俴)");

	}

	public final void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException {

		//res.setHeader("Pragma", "no-cache");
		//res.setHeader("Cache-Control","no-store");

		Hashtable hsParam = getParam(req);

		if(hsParam!=null) {
			// 儊僀儞夋柺弌椡
			String[] mainbodywrite = (String[])hsParam.get(GSBase.PARA_MAINBODYWRITE);
			if(mainbodywrite!=null) {
		  		int sessionUid=(hsParam.get(GSBase.SESSION_PARA_UID)!=null)?
					Integer.parseInt(((String[])hsParam.get(GSBase.SESSION_PARA_UID))[0]):-1;
				String url = ((String[])hsParam.get(GSBase.SESSION_MOD_URL))[0];

				OutputStreamWriter osw =
					new OutputStreamWriter(res.getOutputStream(),mainbodywrite[0]);

				PrintWriter pw = new PrintWriter(osw);

				GSMainBodyWrite(pw,url,sessionUid);//偄偢傟攑巭
                IUserManager userMgr = getUserManager(req);
                GSMainBodyWrite(pw,url,sessionUid,userMgr);

				MainBodyParam mbp = new MainBodyParam();
				mbp.setWriter(pw);
				mbp.setMyUrl(url);
				mbp.setUid(sessionUid);
				mbp.setUserManager(userMgr);
                GSMainBodyWrite(mbp);

				pw.flush();
				return;
			}
		}

		HttpSession session = req.getSession(false);
		if(session==null) {
			CreateErrorPage page = new CreateErrorPage(CreateErrorPage.ERR_SESSION,getMapURL(),mainURL);
			page.setTarget("_top");
			page.write(req,res);
			return;
		}

		try {
			GSdoGet(hsParam,req,res);
		} catch(GSException e) {
			CreateErrorPage page = new CreateErrorPage(CreateErrorPage.ERR,getMapURL(),null);
			page.write(req,res);
		}
	}

	public final void doPost(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException {

		Hashtable hsParam;
		if(req.getContentType().toLowerCase().startsWith("multipart/form-data")) {
			// ContentType偑"multipart/from-data"偺帪乮僼傽僀儖揮憲乯
			MultiParse multiParse = new MultiParse(req,res);
			multiParse.parse();
			hsParam = multiParse.getHash();
		} else {
			hsParam = getParam(req);
		}


		// 僙僢僔儑儞僠僃僢僋
		HttpSession session = req.getSession(false);
		if(session==null) {
			CreateErrorPage page = new CreateErrorPage(CreateErrorPage.ERR_SESSION,getMapURL(),mainURL);
			page.setTarget("_top");
			page.write(req,res);
			return;
		}

		try {
			GSdoPost(hsParam,req,res);
		} catch(GSException e) {
			CreateErrorPage page = new CreateErrorPage(CreateErrorPage.ERR,getMapURL(),null);
			page.write(req,res);
		}
	}

	protected Cookie GetCookieValue(HttpServletRequest req,String cookieName) {
		Cookie cookies[] = null;
		Cookie cookie = null;

		if((cookies = req.getCookies()) != null) {
			for(int i=0;i<cookies.length;i++) {
				if(cookies[i].getName().equals(cookieName)) {
					synchronized(this){
						return (Cookie)cookies[i].clone();
					}
				}
			}
		}
		return null;
	}

	// 儕僋僄僗僩僷儔儊乕僞庢摼
	protected Hashtable getParam(HttpServletRequest req) throws IOException {
		Hashtable hashdata = null;
		Enumeration e = req.getParameterNames();
		while(e.hasMoreElements()) {
			if(hashdata == null)
				hashdata = new Hashtable();

			String name = (String)e.nextElement();
			String[] values = req.getParameterValues(name);
			String values2[] = null;
			values2 = new String[values.length];
			for(int i=0;i<values.length;i++)
				values2[i] = new String(values[i].getBytes("8859_1"),"JISAutoDetect");

			hashdata.put(name,values2);
//            System.out.println("");
//            System.out.println("name = " + name);
//            System.out.println("value = " + values2[0]);
		}
//        System.out.println("");
//        System.out.println("");
		return hashdata;
	}

	public String getServletInfo() {
		return GSBase.GS_VERSION;
	}

}; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -