Download - Java support for WWW
![Page 1: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/1.jpg)
Java support for WWW
Babak Esfandiari (sources: Qusay Mahmoud, Roger Impey, textbook)
![Page 2: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/2.jpg)
Java support…
The URL class Applets Servlets and JSPs…
![Page 3: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/3.jpg)
The URL class
A facility to retrieve objects from the network Decodes the object based on its extension
– For example, a .gif file will generate an Image object– Can be extended to any object type that you want
The objects must obviously be addressable by a URL– So far, support for “http:” and “file:”– Can be extended to support “ftp:” and others
![Page 4: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/4.jpg)
URL class example
URL url = new URL(http://java.sun.com/index.html);
InputStream in = url.openStream();
…
Or:
URL url = new URL(http://java.sun.com/duke.gif);
Image im = (Image) url.getContent();
An HTTP connection is made See full URL doc
![Page 5: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/5.jpg)
Java Applets
Client-side See code sample in course web site
![Page 6: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/6.jpg)
Servlets
What is a servlet? Servlets vs. CGI scripts How do they work? Example
![Page 7: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/7.jpg)
What is a Servlet?
A server-side technology Designed to overcome some limitations of
existing technologies (e.g. CGI is stateless) Characteristics:
– A light-weight task that can be executed as a thread– A servlet can remain in memory (a CGI script
terminates when it finished) Advantages:
– A servlet can service multiple client requests– Can handle multiple clients without reloading/reinitialization
![Page 8: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/8.jpg)
Servlets….
Servlets are written in Java
Can be used to:– Generate dynamic contents– Talk to databases– Work with cookies– Session management
![Page 9: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/9.jpg)
How do they work?
Receive Request
Create Thread
Gen Response
Send Response
Engine
Servlet
HTTP
![Page 10: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/10.jpg)
Servlet Framework
The package: javax.servlet At the top level there are three interfaces:
– ServletConfig, Servlet, Serializable
The servlet interface:
init()
service()
destroy()
getServiceConfig()
getServiceInfo()
![Page 11: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/11.jpg)
The GenericServlet
It is an abstract class that implements Servletpublic abstract GenericServlet implements Servlet,
ServletConfig, Serializable { void init() abstract void service() void destroy() ServletConfig getServletConfig() String getServiceInfo() void log()}
![Page 12: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/12.jpg)
The HttpServlet
It is an abstract class that extends the GenericServlet abstract class
It provides a convenient framework for handling the HTTP protocol
These two classes (GenericServlet and HttpServlet) ease the task of writing servlets
In the simplest case, you need to provide implementation for service()
![Page 13: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/13.jpg)
Life cycle of a servlet
Servlet is loaded into memory by server: init() Servlet processes client requests: service() Servlet is remove by server: destroy() service() is responsible for handling incoming
client requests– public void service(ServiceRequest request,
ServletResponse response) throws ServletException, IOException
Delegates HTTP requests: doGet() & doPost()
![Page 14: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/14.jpg)
Retrieving Parameters
Use:– public String getParameter(String name)– public String[] getParameterValues(String name)
So if you have a parameter name “username” in a form then to retrieve the value use:– String name = request.getParameter(“username”);
![Page 15: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/15.jpg)
Example:
Consider the following form:
<form action="RequestParamExample" method=POST>
First Name: <input type=text size=20 name=firstname>
<br>
Last Name: <input type=text size=20 name=lastname>
<br>
<input type=submit>
</form>
![Page 16: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/16.jpg)
Example….
In a browser, this would look like:
When “Submit Query” is clicked we have the output:– First Name := Qusay– Last Name := Mahmoud
![Page 17: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/17.jpg)
Example
The servlet:public class RequestParams extends HttpServlet { public doPost(HttpServletRequest re, HttpServletResponse
response) { PrintWriter out = response.getWriter();
out.println("<html><body><head><title>test</title></head"); out.println("<body>"); String firstName = req.getParameter("firstname"); String lastName = req.getParameter("lastname"); out.println("First Name := " + firstName + "<br>"); out.println("Last Name := " + lastName); out.println("</body></html>");} }
![Page 18: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/18.jpg)
Servlets for WAP
It is possible to use Servlets to generate WMLPrintWriter out = response.getWriter();out.println("<?xml version=\"1.0\"?>");out.println("<!DOCTYPE wml …etc");out.println("<wml>");out.println("<card title=\"MobileDate\">");out.println(" <p align=\"center\">");out.println("Date and Time Service<br/>");out.println("Date is: "+ new java.util.Date());…etc
![Page 19: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/19.jpg)
What else?
Programming cookies and keeping track of sessions is easy with Servlets….APIs provided for this
Explore Cookies and Session Management on your own!
Something to think about: handheld devices do not support cookies, so how do you keep track of sessions??
![Page 20: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/20.jpg)
JSP
Server-side technology Enables you to embed Java code within an HTML
document JSP documents have the extension .jsp When an HTTP request is received, the compilation
engine converts the JSP document into a Java Servlet then the servlet will be loaded
Java code is embedded between <% and %>
![Page 21: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/21.jpg)
Example
// file: hello.jsp<html><head><title>example</title></head><body><% String visitor = request.getParameter(“user”); if (visitor == null) visitor = “there”;%>Hello, <%= visitor %>!</body></html>
![Page 22: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/22.jpg)
Example
Request parameters are passed into JSP pages using normal HTTP parameter mechanisms (using GET and POST)
Therefore, for the hello.jsp:– If invoked with: http://host…/hello.jsp it will print
“Hello, World!”– If invoked with: http://host…/hello.jsp?user=Mary,
it will print: “Hello, Mary!”
![Page 23: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/23.jpg)
JSP for WAP
<?xml version…><!DOCTYPE…etc><% response.setContentTyp("text/vnd.wap.wml")%> <wml> <card title="MobileDate" Date and Time Service<br/> Date is: <%= new java.util.Date() %> </card></wml>Or you can use the PAGE directive…
![Page 24: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/24.jpg)
What else?
Additional characters may appear after the initial <%, such as !, =, or @ to further prescribe the meaning of the tag
– <%! Double radius = 3.5; %>– <%= 2 * Math.PI * radius %>– <%@ include file=“notice.html” %>
It is possible to create re-usable components with JSP using Java Beans
Explore on your own!
![Page 25: Java support for WWW](https://reader035.vdocuments.net/reader035/viewer/2022062516/56812bc5550346895d900a42/html5/thumbnails/25.jpg)
HTTP Servers
If you don’t have access to an HTTP server, I’d recommend that you install Jakarta-Tomcat for your personal use ….so you explore Servlets and JSP further….– http://jakarta.apache.org/tomcat