Your SlideShare is downloading. ×
0
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Lecture 2
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Lecture 2

261

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
261
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. The Servlet Technology Inside Servlets Writing Servlet Applications
  • 2. What Is a Servlet? “A servlet is a server-side Java replacement for CGI scripts and programs. Servlets are much faster and more efficient than CGI and they let you unleash the full power of Java on your web server, including back-end connections to databases and object repositories through JDBC, RMI, and CORBA” – Atlanta Java Users Group (http://www.ajug.org/meetings/jun98.html) 2
  • 3. Ways to use Servlet A simple way: Servlet can process data which was POSTed over HTTPS using an HTML FORM, say, an order-entry, and applying the business logic used to update a company's order database.
  • 4. A simple servlet
  • 5. Some other uses: Since servlets handle multiple requests concurrently, the requests can be synchronized with each other to support collaborative applications such as on-line conferencing. One could define a community of active agents, which share work among each other. The code for each agent would be loaded as a servlet, and the agents would pass data to each other. One servlet could forward requests other servers. This technique can balance load among several servers which mirror the same content.
  • 6. Server-side Java for the web a servlet is a Java program which outputs an html page; it is a server-side technology HTTP Request HTTP Response browser Server-side Request Response Header + Html file web server Java Servlet Java Server Page servlet container (engine) - Tomcat
  • 7. Servlet Structure Java Servlet Objects on Server Side Managed by Servlet Container Loads/unloads servlets Directs requests to servlets Request → doGet() Each request is run as its own thread
  • 8. A servlet Is a Server-side Java Class Which Responds to Requests doGet() doPost() service() doPut() doDelete() 8
  • 9. Servlet Basics Packages: javax.servlet, javax.servlet.http Runs in servlet container such as Tomcat Tomcat 4.x for Servlet 2.3 API Tomcat 5.x for Servlet 2.4 API Servlet lifecycle Persistent (remains in memory between requests) Startup overhead occurrs only once init() method runs at first request service() method for each request destroy() method when server shuts down
  • 10. Web App with Servlets GET … Servlet HEADERS BODY doGet() … … Servlet Container
  • 11. Life-cycle of a servlet init() service() destroy() It can sit there simply servicing requests with no start up overhead, no code compilation. It is FAST It may be stateless – minimal memory 11
  • 12. Client - Server - DB
  • 13. 5 Simple Steps for Java Servlets 1. Subclass off HttpServlet 2. Override doGet(....) method 3. HttpServletRequest getParameter("paramName") 4. HttpServletResponse set Content Type get PrintWriter send text to client via PrintWriter 5. Don't use instance variables
  • 14. HTTP: Request & Response Client sends HTTP request (method) telling server the type of action it wants performed GET method POST method Server sends response 14
  • 15. Http: Get & Post GET method For getting information from server Can include query string, sequence with additional information for GET, appended to URL e.g. Http://www.whoami.Com/Servlet/search?Name=Inigo&ID=1223344 15
  • 16. Http: Get & Post POST method designed to give information to server all information (unlimited length) passed as part of request body • invisible to user • cannot be reloaded (by design) 16
  • 17. Interaction with Client HttpServletRequest String getParameter(String) Enumeration getParameters(String[]) HttpServletResponse Writer getWriter() ServletOutputStream getOutputStream() Handling GET and POST Requests
  • 18. HttpServlet Implements Servlet Receives requests and sends responses to a web browser Methods to handle different types of HTTP requests: handles GET requests doPost() handles POST requests doPut() handles PUT requests doDelete() handles DELETE requests doGet() 10/12/11 G53ELC: Servlets 18
  • 19. HttpServlet Request Handling 19
  • 20. Handling HttpServlet Requests service() method not usually overridden doXXX() methods handle the different request types Needs to be thread-safe or must run on a STM (SingleThreadModel) Servlet Engine multiple requests can be handled at the same time 20
  • 21. Simple Counter Example import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class SimpleCounter extends HttpServlet { int count = 0; public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType(“text/plain”); PrintWriter out = res.getWriter(); count++; out.println(“This servlet has been accessed “ + count + “ times since loading”); } } 21
  • 22. Multithreading solutions Synchronize the doGet() method public synchronized void doGet(HttpServletRequest req, HttpServletResponse res) servlet can’t handle more than one GET request at a time Synchronize the critical section PrintWriter out = res.getWriter(); synchronized(this) { count++; out.println(“This servlet has been accessed “ + count + “ times since loading”); } 22
  • 23. Forms and Interaction <form method=get action=“/servlet/MyServlet”> GET method appends parameters to action URL: /servlet/MyServlet?userid=Jeff&pass=1234 This is called a query string (starting with ?) Username: <input type=text name=“userid” size=20> Password: <input type=password name=“pass” size=20> <input type=submit value=“Login”>
  • 24. Assignment 2: Get Stock Price
  • 25. RequestHeaderExample.java import import import import java.io.*; java.util.*; javax.servlet.*; javax.servlet.http.*; public class RequestHeaderExample extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); Enumeration e = request.getHeaderNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = request.getHeader(headerName); out.println(name + “ = “ + value ); } } }
  • 26. Accessing Request Components getParameter("param1") getCookies() => Cookie[] getContentLength() getContentType() getHeaderNames() getMethod()
  • 27. Environment Variables JavaServlets do not require you to use the clunky environment variables used in CGI Individual functions: PATH_INFO REMOTE_HOST QUERY_STRING … req.getPathInfo() req.getRemoteHost() req.getQueryString()
  • 28. Setting Response Components Set status first! setStatus(int) HttpServletResponse.SC_OK... sendError(int, String) sendRedirect(String url)
  • 29. Setting Response Components Set headers setHeader(…) setContentType(“text/html”) Output body PrintWriter out = response.getWriter(); out.println("<HTML><HEAD>...")
  • 30.  Install Web Server on your machine such as Tomcat, Appache, ..  Create Home Page as CV which should contains:  Your Name as title  You Image in the right hand side  Your previous courses listed in Table  Another linked Page for Accepting your friends which should contains form to accept your friends information:        Name (Text Field) Birth of Date (Text Field) Country ( Drop Down List) E-mail ( Text Field) Mobile ( Text Field) Gender (Radio Button with Male or Female) Save request of friends into file 31

×