C03—CISC474, Spring 2007
Java servlet/JSP application: you design it
Proposal Due |
Code Due |
Presentation Due |
Points |
Group or Individual |
Wednesday:
03/14/2007 |
Friday:
05/04/2007 |
Monday:
05/07/2007 |
100-300 |
your choice |
For this assignment, you implement a webapp using Java Servlets and JSP. The development platform is the clients of Porsche (your own Tomcat server) for the servlet, and either jaguar.cis.udel.edu or cisc474.acad.cis.udel.edu for the MySQL database.
- First prepare a proposal, which you must submit by Wednesday March 14th. The proposal should provide a brief description of the main functionalities of the web app—all the "stories". It should also indicate whether you plan to do the project as an individual or as a group.
- You are encouraged to make a proposal that contains at least "two phases", i.e. phase I will is this basic app, phase II will add these features, phase III will add these other features. That way, if you are not successful in completing all of the phases, you can at least get partial credit for the parts that do work.
- I will let you know if your proposal is accepted no later than Wednesday March 4, and indicate the point value for each phase. The total value of all phases proposed will be between 100 and 300 points, depending on the scope of what is proposed.
- You develop the web site, along with documentation in the form of a wiki, and source code as both an SVN repository, and as a tarball or zip file.
- The distribution should contain a README.txt and/or INSTALL.txt with instructions for taking your code and producing a WAR file that can be dropped into a running Tomcat to deploy the app. You must have an Ant build.xml file that will produce a WAR file and Javadoc.
- The final version of the code (tarball / zip file) plus a WAR file should be submitted on WebCT and the SVN repository "frozen" by midnight 05/04, though you are encouraged to finish it sooner.
- The documentation should enable a future CISC474 to take your SVN repository and/or your distribution, and pick up the project from where you left off (to make enhancements, bug fixes, etc.)
- You agree to leave the code with an open source license so that future CISC474 students can continue work on it.
- You agree to be ready to present your code to the class by Monday 05/07/2007.
Grading
Grading will be based on whether the final product is usable and useful—not on "how hard you worked on it". So, it is important to be modest in what you propose. A very simple, modest application that is useful, written skillfully, and works well will earn more points that a flashy ambitious one that falls on its face. Go for functionality, not flash—but don't negect usability.
Some things that should be true for every Java Servlet/JSP app
It should be possible to take your tarball or zip file, unpack it, go through a straightforward and well-documented configuration step, use Ant to produce a WAR file that can be dropped into Tomcat and be up and running.
Some tips:
- If your application relies on a MySQL database with certain tables, you should include a script that creates the necessary tables, and populates them with any initial data that needs to be stored in them.
- There should be no hard coded dependencies on being deployed on a specific host. Where possible, all URLs within the app should be relative URLs. Where this is not possible, there should be a simple, well-documented configuration process.
- All configuration should be done in ONE configuration file (typically a properties file used by Ant).
- The configuration should not involve any "search and replace", i.e. do NOT include in your configuration instructions such as "Do a search and replace and change all references in the code to foo.udel.edu to the name of your host". The reference to "foo.udel.edu" should only need to be changed in one place—most likely, in a properties file.
- The same is true of the MySQL database. You should not hard code the name of the database, the host on which it resides, or the MySQL username/password used to access it—all of those should be configurable.
- All of the database tables for your app should use some common prefix in the table name, e.g. (xyx_customers,xyz_products,xyz_users), rather than (customers,products,users).
- If your application relies on a MySQL database with certain tables, you should include a script that creates the necessary tables, and populates them with any initial data that needs to be stored in them.
- You should use an MVC approach to building your app. There should be JUnit tests for the the model classes, and an "ant test" step to run these tests.
- You should follow any and all other conventions and good programming practices for JSP/Servlet apps that may be defined as the course progresses.
Suggestions
Choosing good "phases", each of which is independently useful, is very important. So is doing unit testing, and disciplined version control—be sure to get something simple working first and check it in to the repository before moving on to something more complex, and don't check in broken code!