This class will cover database applications using SQL and Java as the
main programming languages. We will start with simple Java line-oriented
user interaction for database applications, and later cover web-based
GUIs, working up to web-enabled applications involving database back ends.
You need proficient Java programming skills and CS430/630 for SQL, or an
equivalent introductory database course covering SQL, E-R diagrams, and
client programming (in C, Java or PL/SQL) including elementary
transactions. It is good to know basic HTML, including forms, and basic
XML, but these topics will be covered in homework. There are plenty of
tutorials for HTML and XML on the Web.
Note that I also teach CS437/637 Database-Backed Web Sites and Web Services, another web applications course, usually in the spring. You may take both classes if you wish. Both classes use databases for holding persistent data and use HTML5 and MVC for web UI, so there is some overlap. If you want to take both classes in different terms, please consider taking cs637 first, since it is more elementary. Here is a quick comparison of these classes:
|use Java for business logic||use PHP for business logic|
|requires Java expertise (cs310 or equivalent)||requires intermediate Java (cs210 or equivalent)|
|focus on large or enterprise sites||focus on smaller sites|
|basic HTML5, minimal CSS||more HTML5, CSS|
|layered architecture (presentation/service/DAO)||simpler sites, less layering emphasis|
|use MVC (Model/View/Controller) pattern for web UI||use MVC (Model/View/Controller) pattern for web UI|
|use Oracle or mysql interchangeably||use mysql|
|default to using eclipse IDE||default to using NetBeans IDE|
|run your own tomcat application server||run XAMPP, your own Apache webserver, mysql, PHP site|
|only discuss web services||study and implement web services|
If you are interested in preparing to use .NET, you should probably take CS436/636, since .NET is an enterprise platform, like JEE.
sheet, with list of essential skills needed for this course
Text: print edition required for open-book exam use Java Servlets and JSP , third edition, by Joel Murach and Andrea Steelman, Murach & Assoc, 2014, ISBN 978-1-890774-44-8, available for example at Amazonor the bookstore. This book cover basic web technology (HTTP, HTML), servlets, JSP, using the MySQL database, JDBC and tomcat. Follow the book link for free sample chapters and code.
Pro JPA2 , second edition, Mastering the Java Persistence API, by Mike Keith and Merrick Schincariol, APress, 2013, ISBN 978-1-4302-4926-9, available for example at Amazon. JPA2 is the API we will be using for object-relational mapping, i.e., automating the relationship between application data in Java objects and the same data in database table rows. Follow the book link for errata, code
Check out your development PC: A Windows 7 system with at least 2GB of memory works well with these tools. Windows 8 or 10 is also OK. Alternatively, a Linux system or recent MacOSX system will work well. Setup directions are provided for Windows, Linux, and MacOSX.
First week: Get a UNIX/Linux account for cs636 by running apply, even if you already have a UNIX account here. This should be done by Fri., Sept. 9 to list your username for Oracle and mysql accounts. Follow the Java/ant setup instructions for UNIX/Linux and your own home system.
Fri., Sep. 9: Oracle and mysql accounts will be created for students with cs636 class accounts already. Done at 4:15pm. Account name is your UNIX username, as is the password. See Database Setup linked below for more information.
Mon, Sept. 12 notes Oracle and mysql,
Wed., Sept.. 14 notes JdbcCheckup, XML, build.xml
Mon., Sept. 19 notes build.xml, jar files, Intro to the Pizza Project
Wed., Sept. 21 notes Demo on Pizza Project, discussion of its database, its objects
Mon., Sept. 26 notes Pizza Project layers, APIs
Wed., Sept. 28 notes Pizza Project configuration
Mon., Oct. 3 notes Stateless Service layer and other architectural principles
Wed., Oct 5 notes Intro to the Music Project
Wed., Oct 12 notes JUnit testing
Mon., Oct. 17 notes Transactions
Wed., Oct. 19 notes Project 1, HTTP
Mon., Oct. 24 notes slides (6 per page) Intro tomcat, intro JPA
Wed., Oct. 26 notes intro JPA, demo on debugging, intro to pizza2
Mon., Oct. 31 notes pizza2, JPA
Wed., Nov. 2 notes pizza2 service methods, intro to servlets
Mon., Nov. 7 notes Midterm Review Layers Summary (QsAndAs)
Midterm Exam Wed., Nov. 9 Practice Midterm Exam (solution)
Mon., Nov. 14 notes Servlets Chapter5slides (6pp) ch05email (zip)
Wed., Nov. 16 notes Servlets, Session variables chapter7slides (6pp) ch07cart (zip) ch07download (zip)
Mon., Nov. 21 notes Moving our system into the web container, Connection pooling, JNDI
Wed., Nov. 23 no class
Mon., Nov. 28 notes The MVC servlets in pizza3
Wed., Nov. 30 notes Web app initialization, scaling up
Mon., Dec. 5 notes Debugging demo, SQL injection, scaling way up
Wed., Dec. 7 notes Using the shared cache, Internationalization
Mon., Dec. 12 notes REST web services in Java
Wed., Dec. 14 notes Review
Mon., Dec. 19 Final Exam 6:30-9:30 in W-2-200 (we'll try to start at 6:15) Practice Final (Solution) (revised Sat. 12/17)
Notes, etc. from Fall, 2015
Access to cs.umb.edu systems from offsite Logging in and transferring files.
Development Setup Installing Java and ant (if necessary) on your home system. Installing eclipse. A few things needed on cs.umb.edu hosts as well.
Database Setup Setting up direct SQL access for Oracle, setting up the needed tunnels to our database servers, using eclipse to access databases.
Java We are using version 7 or 8. JDK API Java classpath explained. javac tool doc java tool doc
eclipse : We are using version Mars, of the Eclipse IDE for Java EE Developers
ant : We are using version 1.8 or 1.9. Apache Ant documentation site. For the tutorial, select the topic "Developing with Ant", and within that, "Hello World with Ant".
SQL Try out SQL queries at sqlzoo.net, Also see product SQL manuals below under Oracle, Mysql, HSQLDB. We will write portable SQL, so one script will work on all three databases, as much as possible.
JDBC: jdbc directory for JdbcCheckup and drivers tutorial Note that the JDBC API is part of the standard Java library. Chap. 12 of Murach has useful coverage.
at www.w3schools.com forms
tutorial tag reference,
with HTML 4/5 info HTML5
XML: XML tutorial at www.w3schools.com. We need basic XML for ant from the start, and for JPA configuration later
JUnit4: We are using version 4.12. JUnit4 in eclipse tutorial Calculator example project (zip)
Oracle: We are using version 12c. Sign up (free) for Oracle Technical Network. Oracle 12c documentation (SQL) Oracle error messages info.
MySQL MySql Setup We are using version 5.6 on topcat.cs.umb.edu. docs (SQL)
HSQLDB : We are using version 2.3.4. HSQLDB is an open-source in-memory DB with JDBC, great for unit testing. docs (SQL)
curl HTTP tool (do HTTP GETs, POSTs using command line, or from build.xml) Windows install instructions (usually available on Mac/Linux)
JEE, Java Enterprise Edition (API) We are using version 7, but only certain of its technologies: servlets, JSP, EL, JSTL, and JPA2, so all we need are certain jar files in addition to the Java JDK, plus tomcat to run the servlets.
Apache tomcat, our servlet container, i.e., web server with servlet capability: We are using version 8
REST: firstRest (zip) REST tutorial project from vogella.com, with build.xml similar to our other projects. You can reach it on topcat at http://topcat.cs.umb.edu:11600/firstRest/rest/hello or http://localhost:11600/firstRest/rest/hello with tunnel if my tomcat is running.