Servlet M - V - C:

Design and Implementation


public class ControlAB extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
			
		//  path should not occur
		forward( request, response, View.VIEW_ERROR );

	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {

		//  get session state
		HttpSession session = request.getSession();	//  edited to generalize
				
		//  get user information
		SessionBean sessionBean = (SessionBean)session.getAttribute( "sessionBean" );
		String loginName = sessionBean.getLoginName();  //  edited to generalize		String loginType = userBean.getLoginType();  //  edited to generalize
		
		// get DataBean version of input and return values		
		BeanPerson dataBean = mapParamsToDataBean( request );  //  edited to generalize
		dataBean.setOwner( loginName );
		BeanPerson dataBeanNew;
		
		// get action requested
		String userAction = ( (String)(request.getParameter("userAction")) ).trim();  //  edited to generalize

		// instatiate model
		ModelAB model = new ModelAB();
		
		if ( (userAction.equalsIgnoreCase("Add")) )  {

			//  call model
			dataBeanNew = model.add( dataBean );


			//  check results
			if (dataBeanNew == null )  {
					
				dataBean.setMessage( "Add Failed." );
				request.setAttribute( "beanPerson", dataBean );
				forward( request, response, View.VIEW_AB );
					
			//  process results			
			}  else  {
				 			
				//  set message to be returned
				dataBeanNew.setMessage( "Add OK." );
				//  set data to be returned
				request.setAttribute( "beanPerson", dataBeanNew );
				//  forward control/navigate
				forward( request, response, View.VIEW_AB );
				
			}

		}  else  if ( another action )  {

		//  error condition
		}  else  {

			DataBean db = new DataBean();
			dataBean.setMessage( "ABJSP error:  No userAction specified." );
			request.setAttribute( "dataBean", db );
			forward( request, response, View.VIEW_ERROR );
		
		}


	}
	
	
//	**********  Utility Methods  **********


	public BeanPerson mapParamsToDataBean ( HttpServletRequest request )  {
						
		BeanPerson bean = new BeanPerson();
		
		bean.setPersonID    ( request.getParameter("personID") );
	   
		bean.setNameFirst   ( request.getParameter("nameFirst") );
		bean.setNameMiddle  ( request.getParameter("nameMiddle") );
		bean.setNameLast    ( request.getParameter("nameLast") );

                //  process additional parameters
		
		//  save reference to (possible) search result
		bean.setCollectionBeanID( request.getParameter("collectionBeanID") );

		return bean;
						
	}

//	******************  Navigation Methods  ******************


	 private void forward(HttpServletRequest req, HttpServletResponse resp, int next )
	 throws ServletException, IOException
	 {
	    				 
		String url;

		switch ( next )  {

				
			//  ab
			case  View.VIEW_AB:
				url = "/ab.jsp";
				break;
				
			//  logout
			case  View.VIEW_LOGOUT:
				url = "/logout.jsp";
				break;
				
			//  error
			case View.VIEW_ERROR:
				url = "/error.jsp";
				break;

			//  default
			default:
				url = "/error.jsp";
				break;
			
		}

		//  prepare to forward control
		RequestDispatcher disp = getServletContext().getRequestDispatcher( url );
		
		//  forward control
		disp.forward(req, resp);
		
	 }


}