powerpoint document

Download Report

Transcript powerpoint document

Java Servlets
An introduction to Java Servlet
Programming
Containers and Components

Several clients – one system
Web Development

The web is static by nature



Based on HTTP
A stateless network environment
The stateless nature is what have made the
Internet into what it is today
HTTP

A very simple and readable protocol


Text based
Several methods

GET


POST



The basic request to get a page
Used from forms in the web pages
DELETE
HEAD
Java Servlets - Introduction

Extensions of the web server




One of the front ends to the J2EE system


Run inside the Servlet Container
The container can act as a web server
The container can interact with a web server via plugins
(Apache and mod_jk for Tomcat for example)
The servlet acts as the HTTP Receiver and calls EJBs,
JMS and so on
Good for implementing control logic



Captures that request and determines what to do
Initializes Beans, EJBs and other resources
Forward the request to a view (A Java Server Page)
Java Servlets - Introduction

Support for sessions





A way around the stateless nature of the web
Stored on the server
Can contain anything
Private for a specific user
Identified with “jsessionid”

As a Cookie or as a request parameter
Java Servlets - Introduction

Multithreaded by nature


There is only one instance of each Servlet
The Servlet must be thread safe


The Servlet can implement SingleThreadModel to
force the container to only use one thread at a
time


Only read only Class variable
No concurrent access => bad performance
Not so good for generation nice layout
Java Servlets - Different types


A Servlet is a Servlet when in extends one of
the abstract Servlet-classes
Currently two types


HttpServlet
GenericServlet
Java Servlets - Initialization

A Servlet is only initialized once


The init(ServletConfig) is executed at
initialization



And there is only one instance
The ServletConfig can be used to get environment
variables from web.xml
The place initialize common objects like
connection pools
Destroy() is called when a Servlet is uloaded
Javax.servlet.GenericServlet


The GenericServlet can work with any
protocol
Not used that much in web development
javax.servlet.http.HttpServlet


HttpServlet is specialized for HTTP
Contains methods to intercept most HTTPmethods




doGet(HttpServletRequest, HttpServletResponse)
doPost(HttpServletRequest,
HttpServletResponse)
…
processRequest(HttpServletRequest…)

Intercepts all method if present
HttpServletRequst


A representation of the entire HTTP request
Contains all request parameters


POST-parameters and GET-parameters are
treated equally
Used to get information about the caller



Hostname
Web browser and OS
Username if any
HttpServletRequst


Used to get a handle to the session
request.getParameter(“name”)



request.setAttribute(obj, “name”)



Gets the value of a parameter.
Returns a String that might be casted
Used to add an attribute
Usefull when forwarding
request.getAttribute(“name”)


Get an attribute
Returns an Object
HttpServletRequst

request.getHeader(“name”)


request.getLocale()



Return any HTTP header
Returns the perfered language
getLocales() return an Enumeration of all
supported languages
request.getSession(boolean)


Returns the HttpSession
The argument decides if a new session should be
created in none is present
HttpServletRequest

request.getCookies()


Return an array of all Cookies
request.getRequestDispatcher(url)

Used to dispatch the URL, i.e. to pass it down the
request chain

RequestDispatcher.forward()
HttpServletResponse


Represents the response that will be sent to
the user
Used to write output

response.getWriter()




Returns an PrintWriter
print(), println()…
Used to encode URLs
Used to set content type and other HTTP
Headers
HttpSession



A representation of a Session
Retrieved from the request
HttpSession.getAttribute(“name”)



Returns an Object
HttpSession.setAttribute(Object, “name”)
HttpSession.inValidate()

Destroys the Session
A very simple Servlet














import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Servlet1 extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();
out.println(“<h1>Yo</h1>");
out.close();
}
}
J2EE Web applications



A web application is standardized
The entire web application is controlled by a
single XML-file, web.xml
All files (JSP, Servlets, Tags and so on) is
packaged in a WAR file (Web Archive)

A JAR-file with a different ending
J2EE Web app – Directory structure

/ The web root. Can contain JSPs, HTML and
subdirectories

WEB-INF -- NOT available to the outside



web.xml
Container specific XML-files, orion-web.xml
lib


Jar files that will be available for the application
classes

Compiled classes like servlets, beans, Home and remote
interfaces for EJBs
web.xml




















<?xml version = '1.0' encoding = 'windows-1252'?>
<!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>
<description>Empty web.xml file for Web Application</description>
<servlet>
<servlet-name>ServletOne</servlet-name>
<servlet-class>ServletOne</servlet-class>
<init-param>
<param-name>DBUrl</param-name>
<param-value>jdbc:mimer://lara.mimer.se/fslara82</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ServletOne</servlet-name>
<url-pattern>/servletone</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
web.xml continued













<mime-mapping>
<extension>html</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>/jstl</taglib-uri>
<taglib-location>WEB-INF/jstl.tld</taglib-location>
</taglib>
web.xml continued
























<security-constraint>
<web-resource-collection>
<web-resource-name>adminresource</web-resource-name>
<url-pattern>/servlet/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/errorLogin.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description>An adminstrator</description>
<role-name>admin</role-name>
</security-role>
</web-app>
Examples