?? mainservlet.java
字號:
package com.sun.j2ee.workflow.control.web;import javax.servlet.ServletException;import javax.servlet.ServletContext;import javax.servlet.ServletConfig;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.PrintWriter;import java.beans.Beans;import java.io.IOException;import java.util.HashMap;import java.util.Locale;import javax.naming.NamingException;import javax.naming.InitialContext;import com.sun.j2ee.workflow.util.JNDINames;import com.sun.j2ee.workflow.control.exceptions.SigninFailedException;import com.sun.j2ee.workflow.control.exceptions.GeneralFailureException;import com.sun.j2ee.workflow.util.Debug;import com.sun.j2ee.workflow.control.warner.ScheduledTask;import com.sun.j2ee.workflow.control.web.ScreenFlowXmlDAO;import com.sun.j2ee.workflow.control.web.RequestProcessor;import com.sun.j2ee.workflow.util.WebKeys;import com.sun.j2ee.workflow.util.JSPUtil;/** * @author Jian (James) Cai */public class MainServlet extends HttpServlet { private HashMap urlMappings; public void init() { Debug.println("MainServlet: Initializing"); String requestMappingsURL = null; try { requestMappingsURL = getServletContext().getResource("/WEB-INF/xml/requestmappings.xml").toString(); } catch (java.net.MalformedURLException ex) { Debug.println("ScreenFlowManager: initializing ScreenFlowManager malformed URL exception: " + ex); } urlMappings = ScreenFlowXmlDAO.loadRequestMappings(requestMappingsURL); getServletContext().setAttribute(WebKeys.URLMappingsKey, urlMappings); Debug.println("MainServlet: loaded urlMappings"); String serverType = null; try { InitialContext ic = new InitialContext(); serverType = (String)ic.lookup(JNDINames.SERVER_TYPE); getServletContext().setAttribute(WebKeys.ServerTypeKey, serverType); } catch (NamingException ex) { Debug.println("Server Type not specified in deployment descriptor: using default J2ee Security Adapter"); } getScreenFlowManager(); getRequestProcessor(); //warn task init ServletConfig scg = this.getServletConfig(); String runtask = scg.getInitParameter("RunScheduleTask"); if (runtask!=null) { if ((runtask.equals("True"))) { Debug.println("MainServlet: Running Scheduled Task"); ScheduledTask stask = new ScheduledTask(); } } Debug.println("MainServlet: Initialization complete"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doGet(request, response); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String selectedURL = request.getPathInfo(); String client = request.getParameter("client"); // the following tests the request event feature of servlet 2.4 // the code change event attributes to generate request events String setdate = request.getParameter("setdate"); if (setdate!=null) { if (setdate.equals("true")) { generateEvent(request); } } // the current tomcat is resetting the outputstream so this is a workaround if ((selectedURL != null) && selectedURL.equals("/white")) return; HttpSession session = request.getSession(); ScreenFlowManager screenManager = null; Debug.println("MainServlet: url " + selectedURL); Debug.println("MainServlet: character encoding " + request.getCharacterEncoding()); // check if url is protected before processing request URLMapping current = getURLMapping(selectedURL); /* *This login check can be implemented as Filter */ session.setAttribute(WebKeys.SigninTargetURL, selectedURL); if ((current != null) && current.requiresSignin()) { UserBean user = getUserBean(session); Debug.println("Mainservlet request require signin"); if (user.isLoggedIn()) { doProcess(request); } else { String signinScreen = getScreenFlowManager().getSigninScreen(); session.setAttribute(WebKeys.CurrentScreen, signinScreen); /* if (!selectedURL.equals("/verifysignin")) { session.setAttribute(WebKeys.SigninTargetURL, selectedURL); } */ Debug.println("MainServlet: not signon yet"+ request.getParameter("proj_ID")); } } else { doProcess(request); } Locale locale = JSPUtil.getLocale(request.getSession()); Debug.println("local :" + locale); Debug.println("MainServlet: forward to " + getScreenFlowManager().getTemplate(locale)); try{ getServletConfig().getServletContext().getRequestDispatcher(getScreenFlowManager().getTemplate(locale)).forward(request, response); } catch (Throwable ex) { Debug.println("error"+ex); } } private void doProcess(HttpServletRequest request) throws ServletException { try { getRequestProcessor().processRequest(request); getScreenFlowManager().getNextScreen(request); } catch (Throwable ex) { Debug.println("MainServlet Excpetion: " + ex); String className = ex.getClass().getName(); String exceptionScreen = getScreenFlowManager().getExceptionScreen(className); Debug.println("MainServlet: Error target screen is: " + exceptionScreen); // put the exception in the request request.setAttribute("javax.servlet.jsp.jspException", ex); if (exceptionScreen != null) { request.getSession().setAttribute(WebKeys.CurrentScreen, exceptionScreen); } else { // send to general error screen Debug.println("MainServlet: unknown exception: " + className); throw new ServletException("MainServlet: unknown exception: " + ex.toString()); } } } private RequestProcessor getRequestProcessor() { RequestProcessor rp = (RequestProcessor)getServletContext().getAttribute(WebKeys.RequestProcessorKey); if ( rp == null ) { Debug.println("MainServlet: initializing request processor"); rp = new RequestProcessor(); rp.init(getServletContext()); getServletContext().setAttribute(WebKeys.RequestProcessorKey, rp); } return rp; } private ScreenFlowManager getScreenFlowManager() { ScreenFlowManager screenManager = (ScreenFlowManager)getServletContext().getAttribute(WebKeys.ScreenManagerKey); if (screenManager == null ) { Debug.println("MainServlet: Loading screen flow definitions"); screenManager = new ScreenFlowManager(); screenManager.init(getServletContext()); getServletContext().setAttribute(WebKeys.ScreenManagerKey, screenManager); } return screenManager; } private URLMapping getURLMapping(String urlPattern) { if ((urlMappings != null) && urlMappings.containsKey(urlPattern)) { return (URLMapping)urlMappings.get(urlPattern); } else { return null; } } public UserBean getUserBean(HttpSession session) { UserBean user = (UserBean) session.getAttribute(WebKeys.UserBeanKey); if (user == null) { user = new UserBean(); session.setAttribute(WebKeys.UserBeanKey, user); } return user; } public void generateEvent(HttpServletRequest request) { java.util.Calendar rdate = java.util.Calendar.getInstance(); rdate.set(102 + 1900, 8, 27, 18, 20); request.setAttribute("requestStartDate", rdate); request.setAttribute("requestStartDate", "current"); request.removeAttribute("requestStartDate"); } public void destroy() { Debug.println("MainServlet: destroy()"); }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -