~~NOTOC~~ ====== Project 1 ====== ====== Summary ====== This project has the exact same requirement as Project 0. The difference is that we need to implement it using Java EE rather than Perl. ====== Resources ====== The (highly readable) authoritative documents on Servlets and JSP are posted under //Resources// along with their APIs. Also posted is a tutorial and a link to a site with JEE highlights. ====== Base Requirement ====== See the page of Project 0. ====== Possible Variations ====== The same variations listed in Project 0 apply as-is to this project. In addition, the following enhancements over our reference implementation (posted as ''Proj1B.war'') are to be explored: * Persist the webapp data when the controller is destroyed and load it when it starts. * When you implement the above data persistence, pay attention to concurrency. In addition, avoid mixing concerns. Specifically, saving data is the concern of the model; the name of the file is the concern of the end-user; the path leading to the file is environmental and is therefore the concern of the controller. * Migrate messages (such as //Cannot be Blank//) from the controller to the view. * Make one error message appear in red and the other in blue. * Reset the user's count if the user remained idle for 1 minute. Do this even if the session has not expired yet. * Send an error message if the used URL includes the string "York" (case insensitive), e.g. /york.do. Ideally, set some unused HTTP error status code and have web.xml auto serve an error page (see the tag in web.xml). * Deploy your webapp on red. To that end, install tomcat (via the ''tomcat_install'' command) and then start it via ''tomcat_start''. Add ''web.xml'' to your webapp (see posted sample and instructions) and comment out the annotation import line. Export your webapp to a war and put it in the ''webapps'' directory. If you need to make (minor) changes in red, edit the source files and compile them using ''tomcat_compile''. Alternatively, use the ''eclipseEE' command to launch eclipse on red. The following two variations require filters and listeners: * If a client managed to enter over five countries within a session, flag it as a "Power User" and post its IP at the top of each served page. * Inject a new validation rule: //"countries less than three characters are not allowed during lunch hour"// :-D