/******************************* controller servlet *******************************/ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class CurrencyServlet extends HttpServlet { public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { String cmd = request.getParameter( "cmd" ); if (cmd == null) { // commenting this out allows "Do another conversion" to reuse the // previous data entry // request.getSession().setAttribute( "theBean", new ConversionFormBean() ); request.getRequestDispatcher( "/InputJsp" ).forward( request, response ); } else { CurrencyBean theBean = (CurrencyBean) request.getSession().getAttribute( "theBean" ); if (theBean.validate( request )) request.getRequestDispatcher( "/ResultsJsp" ).forward( request, response ); else request.getRequestDispatcher( "/InputJsp" ).forward( request, response ); } } public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { doGet( request, response ); } } /*********************************** input JSP ************************************/ Currency Conversion Input

Enter currency conversion information below

Source Currency:    

Source Amount: " >    

Target Currency:    

/*********************************** output JSP ***********************************/ Currency Conversion Results

Results

=

Do another conversion /********************* bean: memento, intermediary, validation ********************/ import java.util.*; public class CurrencyBean { private String[] list = { "", "US Dollars", "Canadian Dollars", "British Pounds", "Japanese Yen", "Saudi Arabian Riyals", "Malaysian Ringits" }; private String sourceCurrency = ""; private String sourceAmount = ""; private String targetCurrency = ""; private double targetAmount; private String badSource = ""; private String badTarget = ""; private String badNumber = ""; public boolean validate( javax.servlet.http.HttpServletRequest request ) { sourceCurrency = request.getParameter( "sourceCurrency" ); sourceAmount = request.getParameter( "sourceAmount" ); targetCurrency = request.getParameter( "targetCurrency" ); boolean valid = true; badSource = ""; badTarget = ""; badNumber = ""; if (sourceCurrency.equals( "" )) { badSource = "Please select an entry"; valid = false; } if (targetCurrency.equals( "" )) { badTarget = "Please select an entry"; valid = false; } try { double amount = Double.parseDouble( sourceAmount ); } catch (NumberFormatException ex) { badNumber = "Not a number"; valid = false; } if (valid) try { targetAmount = calculateConversion( sourceCurrency, targetCurrency, Double.parseDouble( sourceAmount )); } catch (NumberFormatException ex) { ex.printStackTrace(); } return valid; } public void formatCurrencies( javax.servlet.jsp.JspWriter out, String selected ) { try { for (int i=0; i < list.length; i++) if (selected.equals( list[i] )) out.println( "