27
May 13th, 2003 @2003 Lucek Consulting Basic Java Servlet/JSP Web Development David Lucek Lucek Consulting www.lucek.com [email protected]

Basci Java Servlet/JSP Web Development

  • Upload
    aamir97

  • View
    2.519

  • Download
    1

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Basci Java Servlet/JSP Web Development

May 13th, 2003 @2003 Lucek Consulting

Basic Java Servlet/JSP Web Development

David Lucek

Lucek Consulting

www.lucek.com

[email protected]

Page 2: Basci Java Servlet/JSP Web Development

May 13th, 2003

Download the Sample Application

Download from www.lucek.com, select the downloads tab

Includes the full source Unzip to c:\ drive or $HOME/lucek

Page 3: Basci Java Servlet/JSP Web Development

May 13th, 2003

What is a Servlet?

Java Servlets/JSP are part of the Sun’s J2EE Enterprise Architecture

– The web development part Java Servlet

– is a simple, consistent mechanism for extending the functionality of a web server

– Are precompiled Java programs that are executed on the server side.

– Require a Servlet container to run in Latest Servlet Spec is 2.3

Page 4: Basci Java Servlet/JSP Web Development

May 13th, 2003

What is a Java Server Page (JSP)

Java Server Pages (JSP)– A simplified, fast way to create dynamic web content– HTML or XML pages with embedded Java Code or

Java Beans– Can be a mix of template data in HTML/XML with

some dynamic content– A JSP is a complied to a Java Servlet automatically

by the Servlet container, it is then cached Latest JSP Spec is 1.2

Page 5: Basci Java Servlet/JSP Web Development

May 13th, 2003

Why Use Servlets?

Work well in a Heterogeneous Environments– OS and platform neutral– Work with all major web servers (IIS, Apache,etc..)

Well defined Web Architecture framework– Standard built in services such as:

Standard Approach to Authentication using declarative security vice programmatic security

Database connection pooling Complete support for sessions via cookies and/or URL re-writing

– Has automatic fallback to URL re-writing

Page 6: Basci Java Servlet/JSP Web Development

May 13th, 2003

Why Use Servlets Con’t?

– Robust Object-Orientated API in Java language Ever try to maintain a large ASP, Perl, or PHP site

Clean separation of Controller/Logic from Presentation

Efficient, scales very well There are good free Servlet/JSP containers

and connectors– That run under both UNIX and win32

Page 7: Basci Java Servlet/JSP Web Development

May 13th, 2003

J2EE Web Application Components

Java Servlets– Extend off of HttpServlet

JSP pages, normally for Presentation Java Beans

– Normally used as value objects, pass to data to JSPs

Tag Libraries – XML based JSP elements Web Deployment Descriptor

– /web-inf/web.xml

Page 8: Basci Java Servlet/JSP Web Development

May 13th, 2003

Web Deployment Descriptor

/web-inf/web.xml– Part of the standard– Defines servlets used in the web application– Maps servlets to URLs– A servlet can map to many URLs

Defines resources available to the web app Defines security constraints Defines other stuff like

– Welcome file list– Session timeout– Error page mapping

Page 9: Basci Java Servlet/JSP Web Development

May 13th, 2003

J2EE Web Directory Structure 1

Top Directory is normally the context Path– /tomcat/webapps/servletdemo– Normally, the URL would be http://localhost:8080/servletdemo– Contains JSP and other static content plus the web-inf directory

/web-inf directory– This is a protected directory, can not point browser to any file in

this directory– /classes – unpacked web application classes, auto-magically

added to CLASS_PATH– /lib – web application JAR files– /taglib – tag library descriptor files

Page 10: Basci Java Servlet/JSP Web Development

May 13th, 2003

J2EE Web Directory Structure 2

/web-inf/web.xml /web-inf/*

– Would normally put any static or JSP files here– Protects them from Direct Invocation– Always best to call a JSP through a servlet first

Page 11: Basci Java Servlet/JSP Web Development

May 13th, 2003

JSP Constructs 1

Used in JSP pages, pages that end *.jsp Comment <%-- Comment --%> Declaration <%! int x = 0; %> Expression <%= expression %>

– Outputs to the Response stream– Like a “printf” to the browser– Do NOT use semi-colon to terminate the line

Scriplets - contains Java Code – <% code fragments %>

Page 12: Basci Java Servlet/JSP Web Development

May 13th, 2003

JSP Constructs 2

<% if (value.getName().length != 0) { %>

<H2>The value is: <%= value.getName() %></H2>

<% } else { %>

<H2>Value is empty</H2>

<% } %>

Implicit objects always available in the JSP Page– “request” – Browser’s Request Object

Use to get HTTP headers, length etc..

– “response” - HttpResponse Object

Page 13: Basci Java Servlet/JSP Web Development

May 13th, 2003

JSP Constructs 3

– “session” – internal HttpSession Object– “pageContext” – “application”– “out”, same as <%= %>– “config” – servlet configuration– “page”– “exception”

JSP Directives– Are messages or instructions to the JSP container

Page 14: Basci Java Servlet/JSP Web Development

May 13th, 2003

JSP Constructs 4

– Do not produce any output– “page” directive

<%@ page import=“com.lucek.*” %> Commonly used for importing class paths

– “include” directive <%@ include file=“header.htm” %> Good for including static content

– “taglib” – lists the tag library descriptor location Required when using tab libraries

Page 15: Basci Java Servlet/JSP Web Development

May 13th, 2003

Java Beans as Used in Web Apps

Normally used for all data transfers and business components

Similar to how Java Beans are used in Swing and AWT

– But do not need the full implementation

Must have no constructor or no-arg constructor Must have setter and getter methods for each property

value JSP constructs/tags use Java Beans

Page 16: Basci Java Servlet/JSP Web Development

May 13th, 2003

JSP Actions

JSP actions are special tags that affect the output stream and are normally used with Java beans– Most commonly used:

<jsp:useBean>, <jsp:getProperty>, <jsp:setProperty> The code below will display the lastName property of the

student bean on the output stream<jsp:useBean id="student" scope="request"

class="com.lucek.dto.StudentValue" /><jsp:getProperty name="student" property="lastName" />

Page 17: Basci Java Servlet/JSP Web Development

May 13th, 2003

Servlet Container/Engine

Servlets/JSP require a Container Apache Tomcat is the reference implementation of the

Servlet/JSP Specs It is open source, small, install quickly,and is FREE Latest Version is 4.1.24 Web Site: jakarta.apache.org/tomcat It include a simple HTTP 1.1 server, good enough for

development and small intranets.

Page 18: Basci Java Servlet/JSP Web Development

May 13th, 2003

Tomcat Install

Requires a JDK, get 1.4.1 and install into c:\jdk or $HOME/jdk

Add JAVA_HOME to your environment and the “bin” directory to your PATH

Good practice to unpack into c:\tomcat or $HOME/tomcat

Add CATALINA_HOME to your environment and the “bin” directory to your PATH

Page 19: Basci Java Servlet/JSP Web Development

May 13th, 2003

Tomcat Directory Structure

Everything is relative to $CATALINA_HOME /bin – Startup/shutdown scripts /conf

– Server.xml – main configuration file /common – common class and jar files used by Tomcat and

web applications– Put JDBC drivers here

/server – class and jar files used by Tomcat internally /shared – class and jar files for all web applications /webapps – This is where you put your web application in a

sub-directory or external context file.

Page 20: Basci Java Servlet/JSP Web Development

May 13th, 2003

Starting Tomcat

/bin/startup.bat or startup.sh Point Browers to http://localhost:8080, should

see default page All the Docs are there on the default page! Check out the examples pages, good tutorials

Page 21: Basci Java Servlet/JSP Web Development

May 13th, 2003

Other Development Tools 1

Ant Build Tool– Standard Java Build tool– Basic on UNIX make, but much better– Site: http://ant.apache.org– Install in c:\ant or $HOME/ant

Java IDE– Try NetBeans, it is nice– Tomcat is built in, but is an older version– Includes full Servlet and JSP debugging– Site: www.netbeans.org

Page 22: Basci Java Servlet/JSP Web Development

May 13th, 2003

Other Development Tools 2

Junit– Standard Automated Unit Testing Tool– Site: http://junit.sourceforge.net

Jedit– Slick Programmer’s Editor– Written in Java– Site: jedit.org

Page 23: Basci Java Servlet/JSP Web Development

May 13th, 2003

Simple Servlet Application 1

See “servletdemo” code Mount the servletdemo, servletdemo/java/src, and

servletdemo/web in NetBeans Explorer Tab For a Hello World Servlet look at:

– Java/src/com/lucek/action/HelloWorld.java To build and run

– $ cd servletdemo– Setup the proper build variables in the build.properties file– $ ant all– $ ant deploy– Point your browsers at http://localhost:8080/servletdemo

Page 24: Basci Java Servlet/JSP Web Development

May 13th, 2003

Simple Servlet Application 2

Look at the web.xml file and how the same servlet can be mapped to many URLs

Look at SimpleBean.java which should how to pass a Java Bean to a JSP page

Look at the different ways a bean’s value can be obtained in the EditStudent.jsp

Page 25: Basci Java Servlet/JSP Web Development

May 13th, 2003

Best Practices/Patterns

Always Separate out the logic from the presentation– Use servlets for the logic/controller and JSP’s for presentation– Ideally should never have Java Code in the JSP page

Have a clean separation between your data access and controller layers (DAO)

Always use DTO or value object Use a Model-View-Controller Architecture

– Do not write it, use Struts– Site: jakarta.apache.org/struts/

Use Unit tests– Junit Automation via Ant build tasks

Page 26: Basci Java Servlet/JSP Web Development

May 13th, 2003

What we have not talked about

All the specific Servlet APIs Tag libraries Sessions, cookies JDBC service support from the container Container based authentication Lots of other stuff

Page 27: Basci Java Servlet/JSP Web Development

May 13th, 2003

Next Presentation?

Create a data driven web site using MySql and Servlets/JSP

Setup Authentication Realm with declarative security

Setup JDBC connection pooling Struts?