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