Stage One: 

  (a) a short document describing Stage Two and Three 

  (b) maybe a prototype 

Shopping Cart: 

  (a) won't have a database

Options: MySQL (RDBMS), MongoDB (NoSQL) 

  (b) merchandise in the code, Java servlets, JSP

  (c) existing patterns and frameworks: MVC

Start by understanding the basics. 

Lab will be 80% about the shopping cart: notes, code. 

[cj208@silo ~]$ cd c212-workspace/
[cj208@silo c212-workspace]$ cd apache-tomcat-7.0.35/
[cj208@silo apache-tomcat-7.0.35]$ cat .tomcat-settings
JAVA_HOME=/usr/lib/jvm/java-1.7.0
export JAVA_HOME

CATALINA_HOME=/u/cj208/c212-workspace/apache-tomcat-7.0.35
export CATALINA_HOME

CLASSPATH=.:$CATALINA_HOME/lib/servlet-api.jar
export CLASSPATH
[cj208@silo apache-tomcat-7.0.35]$ source .tomcat-settings
[cj208@silo apache-tomcat-7.0.35]$ echo $CATALINA_HOME
/u/cj208/c212-workspace/apache-tomcat-7.0.35
[cj208@silo apache-tomcat-7.0.35]$

Now let's develop some servlet. 

https://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html

https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpServlet.html

[cj208@silo apache-tomcat-7.0.35]$ pwd
/u/cj208/c212-workspace/apache-tomcat-7.0.35
[cj208@silo apache-tomcat-7.0.35]$ cd webapps/
[cj208@silo webapps]$ ls
chat  docs  examples  host-manager  iceblox  manager  ROOT
[cj208@silo webapps]$ mkdir dog
[cj208@silo webapps]$ cd dog
[cj208@silo dog]$ mkdir WEB-INF
[cj208@silo dog]$ cd WEB-INF/
[cj208@silo WEB-INF]$ mkdir lib
[cj208@silo WEB-INF]$ mkdir classes
[cj208@silo WEB-INF]$ cd classes/
[cj208@silo classes]$ nano -w One.java
[cj208@silo classes]$ cat One.java


public class One extends HttpServlet {

}
[cj208@silo classes]$ $JAVA_HOME/bin/javac One.java
Picked up _JAVA_OPTIONS: -Xms512m -Xmx512m
One.java:3: error: cannot find symbol
public class One extends HttpServlet {
                         ^
  symbol: class HttpServlet
1 error
[cj208@silo classes]$ echo $CLASSPATH
.:/u/cj208/c212-workspace/apache-tomcat-7.0.35/lib/servlet-api.jar
[cj208@silo classes]$ nano -w One.java
[cj208@silo classes]$ cat One.java
import javax.servlet.http.*;

public class One extends HttpServlet {

}
[cj208@silo classes]$ javac One.java
Picked up _JAVA_OPTIONS: -Xms512m -Xmx512m
[cj208@silo classes]$

Let's make the servlet do something. 

http://docs.oracle.com/javase/tutorial/reallybigindex.html

http://docs.oracle.com/javase/6/docs/api/

http://docs.oracle.com/javase/tutorial/index.html

http://silo.cs.indiana.edu:24169/docs/appdev/

Find this on your server:

https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpServlet.html

http://silo.cs.indiana.edu:24169/dog/servlet/One

[cj208@silo logs]$ cd ..
[cj208@silo apache-tomcat-7.0.35]$ cd webapps/
[cj208@silo webapps]$ tree dog
dog
├── index.html
└── WEB-INF
    ├── classes
    │   ├── One.class
    │   └── One.java
    ├── lib
    └── web.xml

3 directories, 4 files
[cj208@silo webapps]$

[cj208@silo webapps]$ cat dog/WEB-INF/classes/One.java
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class One extends HttpServlet {
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
              throws IOException {
    PrintWriter out = response.getWriter();
    out.println( new Date() );
  }
}
[cj208@silo webapps]$ cat dog/WEB-INF/web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

  <servlet>
    <servlet-name>One</servlet-name>
    <servlet-class>One</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>One</servlet-name>
    <url-pattern>/servlet/One</url-pattern>
  </servlet-mapping>

</web-app>
[cj208@silo webapps]$

Now what? 

[cj208@silo apache-tomcat-7.0.35]$ cd $CATALINA_HOME
[cj208@silo apache-tomcat-7.0.35]$ pwd
/u/cj208/c212-workspace/apache-tomcat-7.0.35
[cj208@silo apache-tomcat-7.0.35]$ ls -l
total 120
drwx------  2 cj208 students  4096 Oct 28 14:43 bin
drwx------  3 cj208 students  4096 Nov  4 16:52 conf
drwx------  2 cj208 students  4096 Oct 28 14:43 lib
-rw-------  1 cj208 students 56812 Jan 10  2013 LICENSE
drwx------  2 cj208 students  4096 Nov 30 15:23 logs
-rw-------  1 cj208 students  1192 Jan 10  2013 NOTICE
-rw-------  1 cj208 students  8826 Jan 10  2013 RELEASE-NOTES
-rw-------  1 cj208 students 16163 Jan 10  2013 RUNNING.txt
drwx------  2 cj208 students  4096 Oct 28 14:43 temp
-rw-------  1 cj208 students   170 Oct 28 15:10 tomcat-users.xml
drwx------ 10 cj208 students  4096 Nov 30 14:47 webapps
drwx------  3 cj208 students  4096 Oct 28 15:18 work
[cj208@silo apache-tomcat-7.0.35]$

Let's develop a JSP. 

[cj208@silo apache-tomcat-7.0.35]$ pwd
/u/cj208/c212-workspace/apache-tomcat-7.0.35
[cj208@silo apache-tomcat-7.0.35]$ cd webapps/
[cj208@silo webapps]$ cd dog
[cj208@silo dog]$ ls
index.html  WEB-INF
[cj208@silo dog]$ nano -w one.jsp
[cj208@silo dog]$ pwd
/u/cj208/c212-workspace/apache-tomcat-7.0.35/webapps/dog
[cj208@silo dog]$ cat one.jsp
The time is now:
[cj208@silo dog]$

Look what happened: 

[cj208@silo apache-tomcat-7.0.35]$ pwd
/u/cj208/c212-workspace/apache-tomcat-7.0.35
[cj208@silo apache-tomcat-7.0.35]$ ls work/Catalina/localhost/dog/org/apache/jsp/one_jsp.java
work/Catalina/localhost/dog/org/apache/jsp/one_jsp.java
[cj208@silo apache-tomcat-7.0.35]$

Now the end:

[cj208@silo apache-tomcat-7.0.35]$ cd webapps/
[cj208@silo webapps]$ cd dog/
[cj208@silo dog]$ nano -w index.html
[cj208@silo dog]$ cat index.html
Welcome to the shopping cart project! <p>

Here'<a href="servlet/One">s a link t</a>o a servlet. <p>

Here'<a href="one.jsp">s a link t</a>o a JSP.


[cj208@silo dog]$ nano -w one.jsp
[cj208@silo dog]$ cat one.jsp
The time is now: <%=new java.util.Date()%>
[cj208@silo dog]$

We design:

  (a) the model 

  (b) the views

  (c) the controller in between

Watch the lab notes for the steps needed for Stage One and Two with this project. 

--