SSC - Communication and Networking

SSC - Web applications and development Introduction to Servlet (I)

Shan He

School for Computational Science University of Birmingham

Module 06-19321: SSC SSC - Communication and Networking Outline

Outline of Topics

What will we learn

Web development

Java servlet

Java servlet: our first example SSC - Communication and Networking What will we learn

What is web applications and development?

I Java Servlet: basic concepts, configure, install and use servlet based web applications, basic implementation.

I Session management and Servlet with JDBC

I Model View Controller (MVC) for Java Servlet and Java Serve Pages

I Advanced topics: Multithreaded Servlet SSC - Communication and Networking Web development

What is web applications and development?

I Web-based application: an application that uses a web browser as a client, e.g., google calendar or GMail. I Web development: work involved in developing a web site for the Internet or intranet, which include:

I web design I web content development I client-side/server-side coding I Web development coding (platforms or languages):

I Client side: HTML5, JavaScript, Ajax (Asynchronous JavaScript), Flash, JavaFX, etc. I Server side: PHP, Python, Node.js, Java servlet I Client-side/Server-side: , Opa

I Full stack web frameworks – built on the development platforms wtih a higher level set of functionality: , Yahoo! Mojito, MEAN SSC - Communication and Networking Java servlet

What is Java servlet?

I Java servlet: a Java platform technology “for extending the functionality of a Web server and for accessing existing business systems”, part of the Java Enterprise Edition (Java EE) I Component-based, server/platform-independent method for building Web-based applications I Can use entire family of Java APIs, also can use existing POJOs (Plain Old Java Objects) I Using Java servlet, you can generate dynamic web pages based on: I data submitted by the user, e.g., results pages from search engines and Google calendar I the data changes frequent, e.g., news headlines page or weather report I information from corporate databases or other such sources, e.g., online store such as Amazon SSC - Communication and Networking Java servlet

Why use Java servlet?

I Efficient: the dynamic web pages are easier to write and faster to run since they are run in compiled Java code.

I Convenient: you can use your familiar language Java

I Powerful: Java servlets provide all the powerfull features of Java, such as multi-threads, exception handling and garbage collection. You can communicate with different Java servlets and servers.

I Portable: Servlets are written in Java and can run across Web Servers without changes on Apache or Microsoft IIS.

I Inexpensive: Running servlets only requires Java, Apache Tomcat, which are all free. SSC - Communication and Networking Java servlet

Java servlet vs other Web development script

I Java vs PHP vs vs Python

I Note: Java is statically typed language: types are associated with a variable declaration

I Note: While PHP/Perl/Python are dynamically typed language, e.g., it does not associate values strictly with a specific type I Advantages:

I Statically typed language ensures earlier detection of errors during compiling I Many third party libraries for Java Web development I Modern Java Web Development frameworks such as Java Enterprise Edition and Spring are robust and convenient I Java provide power multi-threaded features I Java is a compiled programming language which is faster than PHP and other interpreted languages SSC - Communication and Networking Java servlet

Java servlet life cycle

I Java Servlets are run inside a Servlet compatible ”Servlet Container”, e.g., Apache Tomcat, JBoss, Jetty, etc. I A Servlets’s life cycle consists of the following steps: I Step 1: Load Servlet Class. I Step 2: Create Instance of Servlet. I Step 3: Call the servlets init() method.

I Step 4: Call the servlets service() method.

I Step 5: Call the servlets destroy() method. I Note 1: By default, a servlet is not loaded until the first request is received for it. I Note 2: Multiple requests to the same servlet are executed simultaneously in multiple threads I Note 3: When the servlet container unloads the servlet, destroy() method is called and the container finalises the servlet and collect garbage. SSC - Communication and Networking Java servlet

Java servlet life cycle

Servlet Container Load class

Instantiation Instantiation Instantiation

init()

Response

service() Request

destroy()

Finalisation and garbage collection SSC - Communication and Networking Java servlet: our first example

How to set up your programming IDE

I What are required?

I Java EE I A Servlet Container, e.g., Apache Tomcat

I You need to read how to run tomcat from school’s support web

I I am using Eclipse to show you how to build your first servlet but you can also use NetBean. See a tutorial here and our School’s own tutorial SSC - Communication and Networking Java servlet: our first example

Creating your first servlet

I Create a new “Dynamic Web project”: File menu −→ New −→ Dynamic Web Project

I Enter the project name

I Choose “Target Runtime”, e.g., Tomcat X.x

I Choose “Dynamic web module version” depends on your Servlet API version (Servlet 3.0 for Java EE6+ and Tomcat 7)

I Tick “Generate web.xml deployment descriptor” if you are NOT using Servlet 3.0 (I will explain this tomorrow)

I Create a new “Sevlet” which will extend HttpServlet class

I Write methods for each HTTP method (GET, POST etc.) SSC - Communication and Networking Java servlet: our first example

Java servlet explained: HTTP methods

I Recalled what we learned: HTTP (Hypertext Transfer Protocol) protocol has the following methods: GET(), POST(), HEAD(), PUT(), DELETE() , etc. I Two methods for a request-response between a client and server:

I GET() : Requests data from a specified resource (server)

I POST() : Submits data to be processed to a specified resource (server)

I Note: In a GET request, query strings (name/value pairs) is sent in the URL, which can be cached, bookmarked, remained in the browser history, have length restrictions

I GET requests should be used only to retrieve non-sensitive data

I Comparison between GET and POST SSC - Communication and Networking Java servlet: our first example

Java servlet explained: HttpServlet class

I In Java, your servlet classes extend the HttpServlet abstract class I Two most important methods:

I doGet() : to respond HTTP GET requests only

I doPost() : to respond HTTP POST requests only

I From one method you can call the other methods to handle both GET and POST requests

I Both methods required two parameters: doGet(HttpServletRequest request, HttpServletResponse response)

I Two parameters are two classes with a lot of methods to process HTTP requests and responses SSC - Communication and Networking Java servlet: our first example

Java servlet explained: HttpRequest class

I Provides request information for HTTP servlets.

I Request Parameters: sent as part of the URL (in the ”query string”), or as part of the body of an HTTP request. http://georgewbush.com/mytopsecrets.html? Action=showme&Document=NuclearLaunchCodes I A query string of two parameters with parameter values:

I Action=showme

I Document=NuclearLaunchCodes

I getParameterNames : Returns the value of a request parameter as a String , or null if the parameter does not exist.

I getParameter : Returns an Enumeration of String objects containing the names of the parameters in the ”query string”. SSC - Communication and Networking Java servlet: our first example

Java servlet explained: HttpResponse class

I Provides HTTP-specific functionality in sending a response I setHeader : Set HTTP Header, e.g., response.setHeader("Header-Name", "Header Value");

I getWriter() : Returns a PrintWriter from the HttpResponse object, so the server can send character text to the client. I Use PrintWriter to send plain text or HTML: PrintWriter writer = response.getWriter(); writer.write("HTML reponse");

I getOutputStream : Returns a ServletOutputStream for writing binary data in the response. I sendRedirect : Sends a temporary redirect response to the client using the specified redirect location URL