j2ee servlets

23
Internet i jego zastosowania 1 J2EE Servlets

Upload: adem

Post on 25-Feb-2016

41 views

Category:

Documents


0 download

DESCRIPTION

J2EE Servlets. Agenda. Overview Servlet Interface Servlet Context Request Response Sample Servlet Sessions Dispatching Request Web Applications Deployment Descriptor. What is a Sevlet?. Web component managed by servlet container Generates dynamic content, usually HTML - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: J2EE Servlets

Internet i jego zastosowania 1

J2EE Servlets

Page 2: J2EE Servlets

Internet i jego zastosowania 2

Agenda• Overview• Servlet Interface• Servlet Context• Request• Response• Sample Servlet• Sessions• Dispatching Request• Web Applications• Deployment Descriptor

Page 3: J2EE Servlets

Internet i jego zastosowania 3

What is a Sevlet?• Web component managed by servlet container• Generates dynamic content, usually HTML• Small, platform-independent classes compiled to

bytecode• Loaded dynamically and run by a container in

conjunction with a web server• Interacts with a web client via request -

response model based on the the HTTP protocol• Can access databases and other storage

systems

Page 4: J2EE Servlets

Internet i jego zastosowania 4

What is a Servlet Container?• Execution context of the servlet• Provides network services over which requests and

responses are exchanged• Contains and manages servlets through their lifecycle• Can be either built-in into a web server or web enabled

application server or installed as an add-on component • Must support the HTTP Protocol (at minimum HTTP/1.0)• May place security restrictions on the environment that

a servlet executes in (e.g. Number of simultenously running threads)

Page 5: J2EE Servlets

Internet i jego zastosowania 5

Benefits of Servlets• Performance• Scalability• Distributed environment (distributable web

applications)• Multithreaded environment• Portability• Platform independence• Ease of development• Part of J2EE (Servlet API is a required API of J2EE)• Standard supported by many vendors and web

servers

Page 6: J2EE Servlets

Internet i jego zastosowania 6

Typical Scenario• Request is submitted from a web browser• Request is converted to a name-value list by the

servlet container• The service() method of a servlet is called with the

name-value list together with the response as arguments

• The servlet processes the request by invoking EJBs, performing other business logic, connecting to databases or application server extensions

• The servlet prepares HTML code to return either directly printing to the response stream

Page 7: J2EE Servlets

Internet i jego zastosowania 7

The Servlet Interfacevoid init(ServletConfig config);

void service(ServletRequest req, ServletResponse res);

void destroy();

ServletConfig getServletConfig();

java.lang.String getServletInfo();

• Central abstraction of the Servlet API• Interface implemented either directly or by

extending

Page 8: J2EE Servlets

Internet i jego zastosowania 8

Servlet Life Cycle• Loading and instantiating

• At start time• Delayed until the service method of the servlet is requested• The servlet container load the servlet class (file system, remote file

system, other network services)• The Servlet Container instantiates an object instance• There can be more than one instance (SingleThreadModel) of a given

servlet (several servlet definitions which point to the same class) or only one instance (MultipleThreadModel)

• Initialization• Point where servlet can read any configuration data, persistent data,

make a connection to a database and other costly resources, perform one-time activities

• The Servlet Container calls init method of the servlet and passes ServletConfig - access to name-value initialization parameters

• On error throw ServletException or UnavailableException

Page 9: J2EE Servlets

Internet i jego zastosowania 9

Servlet Life Cycle• End of service

A servlet instance may be kept active in a container for any amount of time

The container allow any threads executing service method to complete

The container executes destroy method - point where a servlet may release any resources and save its state to any persistance storage

No requests can be routed to this instance of the servlet The instance is released so that it can be garbage collected

Page 10: J2EE Servlets

Internet i jego zastosowania 10

Servlet Life Cycle• Request handling

Each request represented by ServletRequest object Servlet can create the response by using object of type

ServletResponse ServletRequest and ServletResponse are provided as

parameters to service HTTP - HttpServletRequest, HttpServletResponse

• Errors during request handling ServletException UnavailableException Permanent - servlet should be removed from the service

(destroy is called) Temporary - SERVICE_UNAVAILABLE (503) is returned with

Retry-After header

Page 11: J2EE Servlets

Internet i jego zastosowania 11

Multithreading Requests• MultipleThreadModel (default)

One instance of a servlet class per servlet definition• SingleThreadModel (marker interface)

• Multiple instances of the servlet. Ensures that servlets handle only one request at a time.

• No two threads will execute concurrently in the servlet's service method. The servlet container can make this guarantee by synchronizing access to a single instance of the servlet, or by maintaining a pool of servlet instances and dispatching each new request to a free servlet.

• The servlet is thread safe. SingleThreadedModel does not prevent synchronization problems that result from servlets accessing shared resources (static class variables, classes outside the scope of the servlet).

Page 12: J2EE Servlets

Internet i jego zastosowania 12

The Servlet Context• A servlet's view of the web application within which it is

running• One instance per web application (per VM for distributed

applications)• The container implements the ServletContext interface• ServletContext

allows a servlet to set and store attributes, log events, obtain URL references to resources

provides a set of methods that a servlet uses to communicate with its servlet container

• Context attributes - available to any other servlet of the web application (exits only locally in the VM)

• Resources - direct access to static documents (HTML, GIF, JPEG)

Page 13: J2EE Servlets

Internet i jego zastosowania 13

The Request• Encapsulates information from the client• HttpServletRequest - HTTP headers and message body• Parameters

getParameter, getParameterNames, getParameterValues String parameters stored as name-value pairs Possible multiple parameter values

• Attributes getAttribute, getAttributeNames, getAttributeValues Objects associated with a request set by the container or

a servlet to communicate with another servlet Single values

• Cookies getCookies

Page 14: J2EE Servlets

Internet i jego zastosowania 14

Path Elements & Translation• Request path is composed of• Context Path getContextPath• Servlet Path getServletPath• Following is always trueRequestURI = contextPath + servletPathPattern: /gardenServlet: GardenServlet/catalog/garden/implements -> ContextPath:

/catalogServletPath: /garden

Page 15: J2EE Servlets

Internet i jego zastosowania 15

The Response• Encapsulates information to be returned to the

client• HttpServletResponse - HTTP headers and

message body• Cookies• Helper methods

sendRedirect sendError

• Typical use Either getOutputStream (binary data) or getWriter

(text)

Page 16: J2EE Servlets

Internet i jego zastosowania 16

Sample Servletpublic class SampleServlet extends HttpServlet {

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws IOException, ServletException

{

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("<html><body>");

out.println("Hello World!");

out.println("</body></html>");

}

}

Page 17: J2EE Servlets

Internet i jego zastosowania 17

Sessions• HTTP - stateless protocol• Different requests from the same client should be

associated with each other• Strategies for session tracking

Hidden variables URL rewriting Cookies

• In servlet environment Session tracking implemented by servlet container HttpSession provided as an convenient interface A session persists for a specified period of time

Page 18: J2EE Servlets

Internet i jego zastosowania 18

HttpSession• View and manipulate information about a session, such as the

session identifier, creation time, last accessed time • Bind objects to sessions, allowing user information to persist

across multiple user connections• Session information is scoped only to the current web

application (ServletContext)• Binding attributes into a session

getAttribute, setAttribute, removeAttribute HttpSessionBindingListener - causes an object to be

notified when it is bound to or unbound from a session• Session timeouts because there is no explicit client

termination

Page 19: J2EE Servlets

Internet i jego zastosowania 19

Session Semantics• Multiple servlets may have access to a single

session object• Synchronization is the responsibility of a developer• For applications marked as distributable session

objects must implement java.io.Serializable interface

• Scalability - in distributed environment session objects can be moved from any active node to some other node of the system

• All windows of a client are participating in the same session

Page 20: J2EE Servlets

Internet i jego zastosowania 20

Dispatching Requests• forward - pass processing to another servlet

Including output of another servlet in the response RequestDispatcher; can be obtained from ServletContext

• include Can be called at any time Included servlet cannot set headers or call any method

that affects the headers of the response• forward

Can only be called if no output has been commited to a client

Page 21: J2EE Servlets

Internet i jego zastosowania 21

Web Applications• Collection of servlets, JSPs, HTML pages and other resources

bundled and run on possibly multiple containers• Rooted at a specific path eg.

http://www.company.com/catalog• By default one instance must only be run on one VM• Distributable web applications - components distributed across

multiple containers• 1:1 mapping between web application and ServletContext• Representation

Structured hierarchy of directories Archive file

Page 22: J2EE Servlets

Internet i jego zastosowania 22

Open Directory Structure• Root directory eg. /catalog• Special WEB-INF directory - not a part of public document tree• Sample directory structure:

/index.html

/howto.jsp

/feedback.jsp

/images/logo.gif

/WEB-INF/web.xml

/WEB-INF/lib/jspbeans.jar

/WEB-INF/classes/com/dsrg/servlets/Test.class

/WEB-INF/classes/com/dsrg/util/Helper.class

Page 23: J2EE Servlets

Internet i jego zastosowania 23

Deployment Descriptor• Elements and configuration information of a web application• Contents of a deployment descriptor

ServletContext init parameters Session configuration Servlet/JSP definitions Servlet/JSP mappings Mime Type mappings Welcome file list Error pages Security info

• XML document