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

📄 gsession.java

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

import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
import java.io.File;
import java.util.Hashtable;
import java.util.HashSet;
import java.util.List;
import java.util.Iterator;
import java.net.URL;
import java.net.MalformedURLException;
import javax.servlet.ServletException;
import javax.servlet.ServletContext;
import javax.servlet.RequestDispatcher;
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.tools.*;
import jp.co.sjts.gsession.tools.mail.*;

/**
 * <p>GSession 偺儊僀儞
 *
 * @author Satoru Konishi
 * @author Hideyuki KITADE &lt;kitade@sjts.co.jp&gt; 
 */
public class GSession extends MainBaseServlet {
    
    /** 儊僀儞愝掕僼傽僀儖 */
	private MainConfFile conf=null;
    /** 儐乕僓儅僱乕僕儍乕 */
	private UserManager usermanager = null;

    /**
     * <p>弶婜壔張棟
     */
	public void init() throws ServletException {
		super.init();

		try{
			// 婎杮愝掕僼傽僀儖庢摼
			conf = new MainConfFile(getRootDir());
			conf.Load();

			// 儐乕僓娭學偺僼傽僀儖庢摼
			usermanager = new UserManager(getRootDir());
			usermanager.Load();

		} catch (Exception e) {
//			getServletContext().log(e, "err");
			throw new ServletException(e.toString());
		}

	}

    /**
     * <p>僒乕僽儗僢僩廔椆帪偵屇傃弌偝傟傑偡丅
     */
	public void destroy() {
		super.destroy();
	}


    /**
     * <p>GET儕僋僄僗僩張棟
     *
     * @param hsPara 擔杮岅張棟嵪傒僷儔儊乕僞
     * @param req 儕僋僄僗僩
     * @param res 儗僗億儞僗
     */
	public void GSdoGet(Hashtable hsPara,HttpServletRequest req,HttpServletResponse res)
		throws ServletException, IOException {

		try {
			// 僙僢僔儑儞忣曬庢摼
			HttpSession session = req.getSession(false);

			// 僷儔儊乕僞側偟
			if(hsPara == null){
				if(session != null) {
					hsPara = __createMainHash(req);
				} else {
					String[] value = new String[1];
					hsPara = new Hashtable();
					value[0] = Integer.toString(GSCmd.GS_LOGIN);
					hsPara.put(GSCmd.GS_PARA_CMD,value);
				}
			} else if(session == null) {
				if( (hsPara.size()==1)&&(hsPara.get(GSCmd.GS_PARA_USER)!=null) ) {
					String[] value = new String[1];
					value[0] = Integer.toString(GSCmd.GS_LOGIN);
					hsPara.put(GSCmd.GS_PARA_CMD,value);
				} else {
					int cmd = (hsPara.get(GSCmd.GS_PARA_CMD)!=null)?
						Integer.parseInt(((String[])hsPara.get(GSCmd.GS_PARA_CMD))[0]) : -1;

					if((cmd!=GSCmd.GS_LOGIN)&&(cmd!=GSCmd.GS_LOGOUT)) {
							CreateErrorPage page = new CreateErrorPage(
												CreateErrorPage.ERR_SESSION, getMapURL(),
												GSTool.removeParaFormURI(req.getRequestURI())+"?"
												+GSCmd.GS_PARA_CMD+"="+GSCmd.GS_LOGIN);
							page.setTarget("_top");
							page.write(req,res);
							return;
					}
				}
			} else {
				if( (hsPara.size()==1)&&(hsPara.get(GSCmd.GS_PARA_USER)!=null) )
					hsPara = __createMainHash(req);

				SessionUpdate(session);
			}

			Dispatch(hsPara,req,res);

		} catch(Exception e) {
			log("GSession::GSdoPost",e);
			unKnownError(req,res);
		}
	}

    /**
     * <p>POST儕僋僄僗僩張棟
     *
     * @param hsPara 擔杮岅張棟嵪傒僷儔儊乕僞
     * @param req 儕僋僄僗僩
     * @param res 儗僗億儞僗
     */
	public void GSdoPost(Hashtable hsPara,HttpServletRequest req,HttpServletResponse res)
		throws ServletException, IOException {

		try {
			int cmd = 0;
			HttpSession session = req.getSession(false);

			// 僷儔儊乕僞側偟偺帪偼MAIN儁乕僕偲偡傞
			if(hsPara == null) {
				hsPara = __createMainHash(req);
			}

			cmd = Integer.parseInt((String)((String[])hsPara.get(GSCmd.GS_PARA_CMD))[0]);
			if(cmd == GSCmd.GS_LOGINCHK) {

				String user = (String)((String[])hsPara.get(GSCmd.GS_PARA_USER))[0];
				String pass = (String)((String[])hsPara.get(GSCmd.GS_PARA_PASS))[0];

				int uid = usermanager.canLogin(user,pass);
				if(uid >= 0) { // 儘僌僀儞惉岟
					session = req.getSession(true);
					synchronized(conf) {
						session.setMaxInactiveInterval(conf.GetSessionTime());
					}
					session.setAttribute(GSBase.SESSION_PARA_UID, new Integer(uid));
					session.setAttribute(GSBase.SESSION_LAST_LOGIN,usermanager.getLastLoginTime(uid));
					session.setAttribute(GSBase.SESSION_USERMNG,usermanager);
					SessionUpdate(session);
					GSDate date = new GSDate();
					usermanager.setLastLoginTime(uid,date.getYMDHMS());

					//儊僀儞儁乕僕傊
					hsPara = __createMainHash(req);
				} else { // 儐乕僓乕幆暿僄儔乕
					CreateErrorPage page = new CreateErrorPage(
						CreateErrorPage.ERR_AUTH, getMapURL(),
						GSTool.removeParaFormURI(req.getRequestURI())+"?"
							+GSCmd.GS_PARA_CMD+"="+GSCmd.GS_LOGIN);
					page.write(req,res);
					return;
				}
			}

			// Session僠僃僢僋
			if(session == null) {
				if(cmd != GSCmd.GS_LOGIN) {
					CreateErrorPage page = new CreateErrorPage(
						CreateErrorPage.ERR_SESSION, getMapURL(),
						GSTool.removeParaFormURI(req.getRequestURI())+"?"
							+GSCmd.GS_PARA_CMD+"="+GSCmd.GS_LOGIN);
					page.write(req,res);
					return;
				}
			} else {
				SessionUpdate(session);
			}

			Dispatch(hsPara,req,res);

		} catch(Exception e) {
			log("GSession::GSdoPost",e);
			unKnownError(req,res);
		}
	}


	/**
     * <p>僙僢僔儑儞忣曬傪峏怴
     *
     * @param session 僙僢僔儑儞僆僽僕僃僋僩
     */
	private void SessionUpdate(HttpSession session) {

		Integer i = (Integer)session.getAttribute(GSBase.SESSION_PARA_UID);
		int uid = i.intValue(); 
		synchronized(conf) {
			session.setMaxInactiveInterval(conf.GetSessionTime());
		}
		session.setAttribute(GSBase.SESSION_PARA_UNAME,usermanager.getUName(uid));
	}

    /**
     * <p>
     *
     * @param req 儕僋僄僗僩
     */
	private Hashtable __createMainHash(HttpServletRequest req) {

		Hashtable hsPara = new Hashtable();
		String url = GSTool.removeParaFormURI(req.getRequestURI())+"?"
			+GSCmd.GS_PARA_CMD+"="+GSCmd.GS_MAIN;
		String[] value = {Integer.toString(GSCmd.GS_FRAMESET)};
		String[] idx = {"1"};
		String[] bodyUrl = {url};
		String[] title = {"儊僀儞"};
		hsPara.put(GSCmd.GS_PARA_CMD,value);
		hsPara.put(GSCmd.GS_PARA_IDX,idx);
		hsPara.put(GSCmd.GS_PARA_BODYURL,bodyUrl);
		hsPara.put(GSCmd.GS_PARA_TITLE,title);
		return hsPara;
	}

    /**
     * <p>僒乕僽儗僢僩忣曬
     */
	public String getServletInfo() {
		return GSBase.GS_VERSION;
	}

    /**
     * <p>奺儁乕僕傪嶌惉
     *
     * @param hsPara 擔杮岅張棟嵪傒僷儔儊乕僞
     * @param req 儕僋僄僗僩
     * @param res 儗僗億儞僗
     */
	private void Dispatch(Hashtable hsPara,HttpServletRequest req,HttpServletResponse res)
		throws GSException {

		int cmd = Integer.parseInt((String)((String[])hsPara.get(GSCmd.GS_PARA_CMD))[0]);
		CreatePage page=null;
		String[] buf,buf2;
		HttpSession session = req.getSession(false);
		int sessionUID = (session!=null) ?
				((Integer)session.getAttribute(GSBase.SESSION_PARA_UID)).intValue()
				 : -1;

		switch(cmd) {
		case GSCmd.GS_LOGINCHK://儘僌僀儞僠僃僢僋
			break;
		case GSCmd.GS_LOGOUT:{
			if(session!=null)
				session.invalidate();
		}
		case GSCmd.GS_LOGIN:{//儘僌僀儞儁乕僕
			page = new CreateLoginPage(hsPara,getMapURL());
			break;
		}
		case GSCmd.GS_FRAMESET:{//嫟捠僼儗乕儉僙僢僩儁乕僕
			page = new CreateFramesetPage(hsPara);
			break;
		}
		case GSCmd.GS_TOOLBAR:{// 僣乕儖僶乕
			page = new CreateToolbarPage(hsPara,conf.GetModList(),getMapURL(),
										 GSTool.removeParaFormURI(req.getRequestURI()));
			break;
		}
		case GSCmd.GS_MAIN:{// 儊僀儞儃僨傿乕
			GSDate toDay = new GSDate();
			page = new CreateMainBodyPage(getRootDir(),conf.GetModList(),getMainURL(),getMapURL(),getHelpURL()
										  ,getHoliday(toDay.getstrYear()));
			break;
		}
		case GSCmd.GS_PERSONAL:{// 屄恖愝掕
			page = new CreatePersonalPage(hsPara,getRootDir(),getMapURL(),usermanager,getHelpURL());
			break;
		}
		case GSCmd.GS_CHANG_PASS:{//屄恖僷僗儚乕僪曄峏
			page = new CreatePsPassEditPage(hsPara,getRootDir(),getMapURL(),usermanager,getHelpURL());
			break;
		}
		case GSCmd.GS_P_SET_BASE:{// 屄恖婎杮愝掕
			page = new CreatePsSetBasePage(hsPara,getRootDir(),getMapURL(),getHelpURL());
			break;
		}
		case GSCmd.GS_P_INFO_DEIT:{//屄恖忣曬曇廤
			if(sessionUID>0) {
				page = new CreatePsUserEditPage(hsPara,getRootDir(),getMapURL(),usermanager,getHelpURL());
			} else {
				page = new CreateErrorPage("娗棟幰偼巊梡偱偒傑偣傫丅",getMapURL(),null);
			}
			break;
		}
		case GSCmd.GS_ADMINTOOL:{// 娗棟幰僣乕儖
			if(!superUserCheck(sessionUID,req,res,
							   getMainURL()+"?"+GSCmd.GS_PARA_CMD+"="+GSCmd.GS_MAIN))
				return;

			page = new CreateAdminToolPage(getMapURL(),getHelpURL());
			break;
		}
		case GSCmd.GS_AD_SET_BASE:{// 娗棟幰婎杮愝掕
			if(!superUserCheck(sessionUID,req,res,
							   getMainURL()+"?"+GSCmd.GS_PARA_CMD+"="+GSCmd.GS_MAIN))
				return;

			buf = (String[])hsPara.get(GSCmd.GS_PARA_INSERTX);
			// 婡擻捛壛夋柺傊
			if(buf!=null) { page = new CreateModAddPage(getMapURL(),getHelpURL()); break; }
			buf = (String[])hsPara.get(GSCmd.GS_PARA_EDITX);
			// 婡擻曇廤夋柺傊
			if(buf!=null) { page = new CreateModEditPage(hsPara,getMapURL(),conf,getHelpURL()); break; }
			buf = (String[])hsPara.get(GSCmd.GS_PARA_DELETEX);
			// 婡擻嶍彍夋柺傊
			if(buf!=null) { page = new CreateModDelPage(hsPara,getMapURL(),conf); break; }
			
			page = new CreateAdminSetBasePage(hsPara,getMapURL(),conf,getHelpURL());
			break;
		}
		case GSCmd.GS_GRUP_MNG:{ // 僌儖乕僾儅僱僕儍乕
			if(!superUserCheck(sessionUID,req,res,
							   getRootDir()+"?"+GSCmd.GS_PARA_CMD+"="+GSCmd.GS_MAIN))
				return;

			// 僌儖乕僾捛壛夋柺傊
			if(hsPara.get(GSCmd.GS_PARA_INSERTX)!=null) {
				page = new CreateGroupAddPage(getMapURL(),getHelpURL());
				break;
			}

			int num=-1;
			if((buf=(String[])hsPara.get(GSCmd.GS_PARA_GID))!=null)
				num = Integer.parseInt(buf[0]);
			// 僌儖乕僾曇廤夋柺傊
			if(	(hsPara.get(GSCmd.GS_PARA_EDITX)!=null)&&(num>0)||
				(hsPara.get(GSCmd.GS_PARA_RIGHTX)!=null)&&(num>0)||
				(hsPara.get(GSCmd.GS_PARA_LEFTX)!=null)&&(num>0)) {

				page = new CreateGroupEditPage(hsPara,usermanager,getRootDir(),getMapURL(),num,getHelpURL());
				break;
			}
			// 僌儖乕僾嶍彍夋柺傊
			if( (hsPara.get(GSCmd.GS_PARA_DELETEX)!=null)&&(num>0) ) {
				 page = new CreateGroupDelPage(hsPara,getMapURL(),usermanager);
				 break;
			}
			// 僌儖乕僾儕僗僩夋柺傊
			if( (hsPara.get(GSCmd.GS_PARA_GLISTX)!=null)&&(num>0) ) {
				page = new CreateGroupListPage(hsPara,getRootDir(),usermanager,getMapURL(),getHelpURL());
				break;
			}

			page = new CreateGroupMngPage(hsPara,usermanager,getRootDir(),getMapURL(),getHelpURL());
			break;
		}
		case GSCmd.GS_USER_MNG:{ // 儐乕僓儅僱僕儍乕
			if(!superUserCheck(sessionUID,req,res,
							   getMainURL()+"?"+GSCmd.GS_PARA_CMD+"="+GSCmd.GS_MAIN))
				return;

			// 幨恀偺弌椡
			if(hsPara.get(CreateUserAddPage.CMD_TEMPMAPX)!=null) {
				Integer i=(Integer)req.getSession(false).getAttribute(GSBase.SESSION_PARA_UID);
				TempUserFile uf = new TempUserFile(getRootDir()+GSFilename.GS_DIR_USER
												   +File.separator+i.toString());
				GSGifDownLoad gifdf=new GSGifDownLoad(uf.getShashinGifFilePath(),"shashin.gif");
				gifdf.write(res);
				return;
			}

			int subcmd=-1;
			if((buf=(String[])hsPara.get(GSCmd.GS_PARA_SUBCMD))!=null)
				subcmd = Integer.parseInt(buf[0]);
			// 儐乕僓捛壛夋柺傊
			if(	(hsPara.get(GSCmd.GS_PARA_INSERTX)!=null)||
				((hsPara.get(GSCmd.GS_PARA_RIGHTX)!=null)&&(subcmd==GSCmd.SUB_ADD_USER))||
				((hsPara.get(GSCmd.GS_PARA_LEFTX)!=null)&&(subcmd==GSCmd.SUB_ADD_USER)) ) {

				 page = new CreateUserAddPage(hsPara,getRootDir(),usermanager,getMapURL(),getHelpURL());
				 break;
			}

			int uid=-1;
			if((buf=(String[])hsPara.get(GSCmd.GS_PARA_UID))!=null)
				uid = Integer.parseInt(buf[0]);
			// 儐乕僓曇廤夋柺傊
			if(	((hsPara.get(GSCmd.GS_PARA_EDITX)!=null)&&(uid>0)) ||
				((hsPara.get(GSCmd.GS_PARA_RIGHTX)!=null)&&(subcmd==GSCmd.SUB_EDIT_USER)&&(uid>0))||
				((hsPara.get(GSCmd.GS_PARA_LEFTX)!=null)&&(subcmd==GSCmd.SUB_EDIT_USER)&&(uid>0)) ||
				((hsPara.get(GSCmd.GS_PARA_DELETEX)!=null)&&(subcmd==GSCmd.SUB_EDIT_USER)&&(uid>0)) ) {

				page = new CreateUserEditPage(hsPara,getRootDir(),usermanager,getMapURL(),getHelpURL());
				break;
			}
			// 儐乕僓嶍彍夋柺傊
			if( (hsPara.get(GSCmd.GS_PARA_DELETEX)!=null)&&(uid>0) ) {
				 page = new CreateUserDelPage(hsPara,getMapURL(),usermanager);
				 break;
			}

			page = new CreateUserMngPage(hsPara,getRootDir(),usermanager,getMapURL(),getHelpURL());
			break;
		}
		case GSCmd.GS_LASTLOG:{ // 嵟廔儘僌僀儞帪娫堦棗
			if(!superUserCheck(sessionUID,req,res,
							   getMainURL()+"?"+GSCmd.GS_PARA_CMD+"="+GSCmd.GS_MAIN))
				return;

			page = new CreateLastlog(hsPara,getMapURL(),usermanager);
			break;
		}

		case GSCmd.GS_HDAY:{ //媥擔愝掕
			if(!superUserCheck(sessionUID,req,res,
							   getMainURL()+"?"+GSCmd.GS_PARA_CMD+"="+GSCmd.GS_MAIN))
				return;

⌨️ 快捷键说明

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