Implement (Separate) Components, Using Appropriate Technology (e.g., Java
POJO, JSP, etc.)
Navigated to from Control
In Servlet Context, Provide any Necessary HTTP Header Parameters.
Render Results (e.g., Generate HTML for Form, Report, or Display).
Example, Using JSP:
<html>
<head>
<%@ page
language="java"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"
%>
<%! String projectName = jbs.eb2cbasicjsp.util.Context.getProjectName(); %>
<META http-equiv='Content-Style-Type' content='text/css'>
<LINK href='/<%= projectName %>/theme/Master.css' rel='stylesheet' type='text/css'>
<title>eb2cbasicjsp login</title>
</head>
<jsp:useBean id="beanUser" scope="request" class="jbs.eb2cbasicjsp.databean.BeanUser"/>
<body>
<h1>Welcome to MyStore</h1>
<h3>Please Login</h3>
<form action='/<%= projectName %>/servlet/jbs.eb2cbasicjsp.control.ControlSwitch' method='post'>
<INPUT type='hidden' name='source' value='login'/>
<table cellpadding='0' cellspacing='0' width='100%' border='0'>
<TBODY>
<tr>
<td align='right' width='20%'><b>Email: </b></td>
<TD align='left' width='60%'>
<INPUT type='text' name='email' value='
<jsp:getProperty name='beanUser' property='email'/>
' size='20'>
</TD>
</tr>
<tr>
<td align='right' width='20%'><b>Password: </b></td>
<TD align='left' width='60%'>
<INPUT type='password' name='password' value='
<jsp:getProperty name='beanUser' property='password'/>
' size='20'>
</TD>
</tr>
<tr>
<td align='left' width='20%'> </td>
</tr>
<tr>
<td align='right' width='20%'></td>
<td align='left' width='60%'>
<INPUT type='submit' name='userAction' value='Login' style='background-color: rgb(224, 250, 226)'>
</td>
</tr>
<tr>
<td align='left' width='20%'> </td>
</tr>
<tr>
<td align='right' width='20%'><b>Messages: </b></td>
<TD align='left' width='60%'>
<TEXTAREA name='message' rows='4' columns='40'>
<jsp:getProperty name='beanUser' property='message'/>
</TEXTAREA>
</TD>
</tr>
<tr>
<td align='left' width='20%'> </td>
</tr>
</TBODY>
</table>
</form>
</body>
</html>
Minimal Function
Implement as Java Servlet or Framework Component
Map User Data to DataBean & Verify
- Mapper Methods
- Extract Individual Parameters, by Name
- Insert Parameters into DataBean
- Call DataBean's verify Methods
Determine User Action (e.g., getParameter("userAction"); )
Implement as Case Statement or sequence of if - else if - else
Statements
Perform Function for Each User Action by Preparing DataBean for Model and
Processing Results from Model, most Likely a Bean
Update Session State (e.g., Using HTTPSession & get/set Attribute)
Pass Data to Appropriate View
Example:
package jbs.eb2cbasicjsp.control;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import jbs.eb2cbasicjsp.databean.BeanUser;
import jbs.eb2cbasicjsp.model.IModelUser;
import jbs.eb2cbasicjsp.model.ModelUser;
import jbs.eb2cbasicjsp.model.ModelUserStub;
import jbs.eb2cbasicjsp.util.Constant;
import jbs.eb2cbasicjsp.util.Util;
/**
* @author jbs
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class ControlUser extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// path following welcome
doPost( request, response );
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// get session state
HttpSession session = request.getSession();
// DataBean version of input
BeanUser dataBean = mapParamsToDataBean( request );
BeanUser dataBeanNew;
// get action requested
String userAction = ( (String)(request.getParameter("userAction")) ).trim(); // edited to generalize
// instantiate model
IModelUser model = new ModelUser();
if ( (userAction.equalsIgnoreCase("register")) ) {
// call model
dataBeanNew = model.add( dataBean );
if ( ! dataBeanNew.isOk() ) {
dataBean.setMessage( "Error in Register." );
request.setAttribute( "beanUser", dataBean );
forward( request, response, Constant.VIEW_REGISTER );
return;
} else {
// maintain user state
session.setAttribute( "userId", dataBeanNew.getUserId() );
// generate home view
forward( request, response, Constant.VIEW_HOME );
return;
}
.
.
.
} else if ( (userAction.equalsIgnoreCase("update")) ) {
// get userId
String userId = (String) session.getAttribute( "userId" );
dataBean.setId( userId );
dataBeanNew = model.update( dataBean );
if ( ! dataBeanNew.isOk() ) {
dataBean.setMessage( "Error in updateUser" );
request.setAttribute( "beanUser", dataBean );
forward( request, response, Constant.VIEW_USERUPDATE );
return;
} else {
// pass data to view
dataBeanNew.setMessage( "UpdateUser ok" );
request.setAttribute( "beanUser", dataBeanNew );
// generate view
forward( request, response, Constant.VIEW_USERUPDATE );
return;
}
} else if ( (userAction.equalsIgnoreCase("Logout")) ) {
// delete session
session.invalidate();
// generate view
forward( request, response, Constant.VIEW_LOGOUT );
return;
} else {
forward( request, response, Constant.VIEW_ERROR );
return;
}
}
// ******************** Utility Methods
public BeanUser mapParamsToDataBean ( HttpServletRequest request ) {
BeanUser bean = new BeanUser();
bean.setNameFirst ( request.getParameter( "nameFirst" ) );
.
.
.
return bean;
}
private boolean verifyLoginAndPassword ( BeanUser bean ) {
}
private boolean verifyPasswordsMatch( BeanUser bean ) {
}
// ****************** Navigation Methods ******************
private void forward(HttpServletRequest req, HttpServletResponse resp, int next )
throws ServletException, IOException
{
String url;
switch ( next ) {
// register
case Constant.VIEW_REGISTER:
url = "/view/eb2cbasic/register.jsp";
break;
.
.
.
// default
default:
url = "/view/eb2cbasic/error.jsp";
break;
}
RequestDispatcher disp = getServletContext().getRequestDispatcher( url );
disp.forward(req, resp);
}
}