📄 requestprocessor.java
字号:
/* * @author : Umesh Kulkarni * @version 1.0 * * Development Environment : Oracle9i JDeveloper * Name of the File : RequestProcessor.java * Creation / Modification History * Umesh 26-Apr-2002 Created * */package oracle.otnsamples.ibfbs.control;// Import Required Packagesimport javax.servlet.http.HttpServletRequest;import javax.servlet.ServletContext;import java.util.HashMap;import java.lang.reflect.Method;/** * This Class handles all the Request Processing for this entire application. For * any request, controller Servlet (ControllerServlet.java) takes the help of this * class to handle and process the request. * * In the MVC Architecture, the Controller Component takes the responsibility of * controlling the entire execution flow. The View Layer, assumes the responsibility * of the representing the data whereas the Model Layer is responsible for implementing * the Business Logic. * * In a typical web application, there exists various events in the form of * button clicks, combo box selections etc. * * In response to these events, application executes the functionality embedded in * some methods in some classes. This Class helps to facilitate the execution of methods * in Model Layer using Java Reflection. * * @version 1.0 * @since 1.0 */public class RequestProcessor { // Declare Instance Variables private ServletContext ctx; // Data Structure to store Objects of URLMapping Class // URLMapping Maps an Event Name with the Business Method to be invoked and // the View to be used to display the data. See URLMapping.java for more info. private HashMap urlMap; // This DataStructure Stores Instances of Classes which implement various // business methods. Whenever there is a new Event which need to be processed, // this class first checks whether the Class corresponding to this event is already // present here. private HashMap objectMap; /** * Empty Constructor of this Class. * @since 1.0 */ public RequestProcessor() {} /** * Method to initialize the values of Instance Variables * * @param ctx Servlet Context passed to this method. * @since 1.0 */ public void init(javax.servlet.ServletContext ctx) { this.ctx = ctx; // Get All the URLMapping Objects initialized in the init() method // of ControllerServlet urlMap = (HashMap) ctx.getAttribute(FBSKeys.URLMAPPINGS); // Initialize Object Map to hold business classes objectMap = new HashMap(); } /** * Method to process a particular request. A particular request is characterized * by the distinct EVENT_NAME. Each EVENT_NAME is associated with a particular * business method in a particular business class. This relationship is captured in * an XML file and uploaded as URLMapping Objects during initialization of the * controller servlet. * * Note that this method makes use of Reflection APIs to invoke a particular * method in a particular class. * * @param request Incoming HTTP Request. From the Request we can find out the Event * occured. * @exception Throwable * @since 1.0 */ public void processRequest(HttpServletRequest request) throws Throwable { // Every Business Method takes HttpServletRequest as a parameter // We construct args and params for executing the method using Reflection API Class[] args = { HttpServletRequest.class }; Object[] params = { request }; //Get the Event Name String eventName = (String) request.getAttribute("EVENTNAME"); if (eventName == null) { eventName = request.getParameter("EVENTNAME"); } try { if ( (eventName != null)&& (!eventName.equals(""))) { // Get the URL Map for the Event Occured URLMapping u1 = (URLMapping) urlMap.get(eventName); if (u1 == null) { u1 = (URLMapping) urlMap.get("FIRSTPAGE"); } if (u1.getClassName() != null) { // When there is a valid Class Name and valid Method Name present in the // URL Map, then invoke the method using Java Reflection if (!(u1.getClassName().equals("")) &&!(u1.getMethodName().equals(""))) { // Try to get the required Class from the Object Map Object obj = objectMap.get(u1.getClassName()); // When the Class does not exist in the Object Map, instantiate a // new instance and put the Class in the Object Map if (obj == null) { obj = Class.forName(u1.getClassName()).newInstance(); objectMap.put(u1.getClassName(), obj); } // Get the required Method to be invoked Method m1 = obj.getClass().getMethod(u1.getMethodName(), args); // Invoke the method and get the Result as an object Object obj1 = m1.invoke(obj, params); // Put the result object in the Session so that result can be // accessed in the pages which show the result. request.getSession().setAttribute(eventName + ".RESPONSE", obj1); } } } } catch (ClassNotFoundException ex) { // Trap Errors When Class not present in CLASSPATH System.out.println("Class Not Found " + ex.toString()); } catch (IllegalAccessException ex) { // Trap Errors When you try to execute methods illegally System.out.println("Illegal Access " + ex.toString()); } catch (InstantiationException ex) { // Trap Errors When Class can not be instantiated System.out.println("Instantiation Exception " + ex.toString()); } catch (NoSuchMethodException ex) { // Trap Errors When Method Name do not match System.out.println("Instantiation Exception " + ex.toString()); } catch (java.lang.reflect.InvocationTargetException ex) { // Trap Errors when // Execution of Methods raised some exceptions. We need the similar exceptions Throwable e = ex.getTargetException(); throw e; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -