CSc 473 Fall 2005 Final Project   

Added 12.2.2005: Here is what you need for the prototype, which is now due Thursday, December 8. I said this to a fair number of teams in person; here it is for everybody.

Get a version of HW4 running that uses MySQL. That's it. Show you can put up a Web page, with forms fields, that get info from a database. If it is convenient to use a HashMap also, that's fine. If  you have switched to PHP, that's fine too. Early reports from interviews suggest that any concrete experience with these things is to your benefit. Get it on your record.

Added 11.25.2005: Complete specs in pieces as we go along, which is to prepare  you for the Real World. Here is a general outline.

And please see list of deliverables.

  1. We continue with the idea of presenting information about musicians, as in HW2 and following.
  2. You are to have a home page with a design of your choosing, saying what the site is about--but no nine pictures.
  3. Provided a puldown list of musicians the site knows about, alphabetized of course.
  4. When the user selects a musician new page is produced, containing approximately what your pages did before, but without breadcrumbs or global navigation.
  5. You must have a picture for every musician.
  6. You must have music for some musicians.
  7. You are to build a database containing everything you need about each musician. The primary key should be the musicians' names, but presumably in a one-word internal format. The full, regular name can be stored as a string in another column.
  8. I sure hope every team includes one person with a laptop. The database is going to be much too big to attach as email.
  9. You need to know how to store pictures and music in a BLOB (Binary Large Object) column. As of this writing, after considerable Googling, I don't know how to do that. Whoever figures it out, SEND MAIL. Your name will go up in lights. Bear in mind that I do not grade on the curve: for you to help other teams does not lower the grade for your team, as it could with curving.
  10. There will be several deliverables, to be detailed this weekend. Plan on at least a preliminary presentation of a prototype, and a PowerPoint-based report on user testing.
  11. Time has marched on. Three weeks from today all this will be history.

    Added 11.26.2005
  12. I suppose it goes without saying, but I'll say it anyway: your project must use Tomcat, servlets and JSPs or something else you've learned that does all that, and MySQL. Implementation details are entirely up to you. You could put the images and the music in ordinary files, with the database entries simply giving the matching file names. You might choose to put the pictures in a HashMap, again with the key taken from some column in the database. If you have learned how to use Java Server Faces, by all means show us how it works. If you are using Tomcat and MySQL but decided on PHP, go for it. Practice anything you've learned. It will look good on an interview, if things work out that way.
  13. Test your program with data from previous homeworks. I talked earlier of getting five musicians from each class member, for a database of a couple of hundred. That isn't going to happen, but perhaps I will consolidate enough team submissions to provide data on a couple dozen. Stay tuned.
     
  14. Deliverables:
    1. By Tuesday, December 6: a prototype, demonstrated to class or perhaps just to me. Must have a page that POSTs to the Web server, and returns something from the MySQL database. 30% of project grade.
    2. By Tuesday, December 13: A PowerPoint show emailed to me, giving the results of user testing. 10% of project grade.
    3. By Thursday, December 15: Your final project, demonstrated to class, with your PowerPoint show. 50% for completeness and usability of project; 10% on your presentation. All members of a team must speak in the presentation.
       
  15. Pointers to BLOB handling, from Mike Malenowski:

    Blob in PHP and MYSQL:
    http://www.wellho.net/solutions/php-example-php-form-image-upload-store-in-mysql-database-retreive.html

    Discussion of whether to put a BLOB in the database, or to put only the path to it in the database with the actual BLOB simply in a file:

    http://www.faqts.com/knowledge_base/view.phtml/aid/1241/fid/102

    Sample code for Oracle but similar with MySQL

    http://www.grallandco.com/blog/archives/2004/10/sample_code_blo_1.html

    Also, try forums such as
    http://forum.java.sun.com/thread.jspa?forumID=48&threadID=549705

    http://forum.java.sun.com/thread.jspa?threadID=667040
    http://forum.java.sun.com/thread.jspa?threadID=666222
     
  16. Important notice from Hazem Salama:

    Professor,

    I am not sure if I made myself clear on the issue of putting the data access code in a normal Java class.  After discussing the issue with Sue Peters, I think I got an idea of what students were actually looking for. What I meant is that you can spare your servlets and jsp files from doing data access, which is the best practice.  You should never see any database access code in a jsp at least.  We only do it to test connectivity, since it is the easiest way, to limit any errors that might be servlet or JNDI specific.  So by putting all your database access code in a separate class gives you an extra degree of separation, but that class (bean) is still being controlled by Tomcat (or whatever application server you use).  So you still need to have the database driver in the right place for your application server to use it.  If the scenario, as I understood later, is that you may have a working Java program that already does the database
    access and you just need your Tomcat application to talk to it, then were are talking about a whole different problem.  You would have to have that class also defined in your classpath.  But I would assume that you still need to have the driver in the right place for Tomcat.  I never did it, so I cannot be so sure.  Another way is to access an object that is already running in a different JVM, but now we are talking about distributed applications, which will involve something like RMI or EJBs.  Hopefully that makes it clear.

    Thanks,
    Hazem Salama

     

 

Back to Dan McCracken's  Home Page