import java.io.*; import java.util.*; import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class InfoServlet extends HttpServlet { private String userName; private String userPassword; private static final String dbDriverName = "sun.jdbc.odbc.JdbcOdbcDriver"; private static final String dbURL = "jdbc:odbc:MembersOnly"; private Connection dbConnection; private void connectToDatabase() { try { Class.forName (dbDriverName); dbConnection = DriverManager.getConnection( dbURL, userName, userPassword); dbConnection.setAutoCommit(false); } catch(Exception e) { System.out.println("InfoServlet - failed to connect to database"); System.out.println(e.toString()); } } public void init() { // System.out.println("Infoservlet initializing"); userName = getInitParameter("User"); userPassword = getInitParameter("Password"); connectToDatabase(); // System.out.println("Infoservlet initialized"); } public void destroy() { if(dbConnection != null) { try { dbConnection.close(); } catch(Exception e) { } } } private void sendRetryResponse( HttpServletResponse response, SubscriberRecord aRecord ) throws ServletException, IOException { String tempStr = null; response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("" + "Please re-enter data" ); out.println("

You need to resubmit your form

"); out.println("

Some of the data that you sent was incomplete or invalid"); out.println("



"); out.println("

"); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println("
Subscriber details
Given name
Family name
Age (must exceed 17)
Sex
Email
"); } private void sendWelcome(HttpServletResponse response, int membernum, String name) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("" + "Welcome " + name + "" ); out.println(""); out.println("

Welcome

"); out.println("

"); out.println(name + " : your membership number is " + membernum); out.println(""); out.println("

Hello " + name); out.println("

Glad to have you in our group."); out.println("Please record your membership number."); out.println("

Links to useful information"); } public void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // System.out.println("Infoservlet trying to handle post"); if(dbConnection==null) { System.out.println("but don't have a database"); response.sendRedirect("/membership/NoDB.html"); return; } SubscriberRecord aRecord = new SubscriberRecord(); // System.out.println("Infoservlet filling in a new SubscriberRecord"); aRecord.setGivenName(request.getParameter("GivenName")); aRecord.setFamilyName(request.getParameter("FamilyName")); int anAge = 0; try { String ageStr = request.getParameter("Age"); anAge = Integer.parseInt(ageStr.trim()); } catch(NumberFormatException nfe) { } aRecord.setAge(anAge); aRecord.setSex(request.getParameter("Sex")); aRecord.setEMail(request.getParameter("Email")); // System.out.println("Infoservlet - record initialized, checking"); if(!aRecord.isValid()) { sendRetryResponse(response, aRecord); return; } // System.out.println("Infoservlet: About to save in database"); int membernum = aRecord.createInDatabase(dbConnection); if(membernum<1) { System.out.println("save failed"); response.sendRedirect("/membership/NoDB.html"); return; } // System.out.println("Infoservlet sending OK response"); sendWelcome(response, membernum, request.getParameter("GivenName")); } }