Object Oriented Programming in Java (95-707) Advanced Topics - PowerPoint PPT Presentation

About This Presentation
Title:

Object Oriented Programming in Java (95-707) Advanced Topics

Description:

http://web2.java.sun.com/docs/books/tutorial/servlets/index.html. Additional Link ... The browser renders the html page which is returned ... – PowerPoint PPT presentation

Number of Views:76
Avg rating:3.0/5.0
Slides: 20
Provided by: alaink
Category:

less

Transcript and Presenter's Notes

Title: Object Oriented Programming in Java (95-707) Advanced Topics


1
Lecture 10Object Oriented Programming in Java
  • Advanced Topics
  • Servlets

2
Todays Lecture
  • Trail Servlets
  • Lessonoverview,Cient Interaction, LifeCycle,...
  • http//web2.java.sun.com/docs/books/tutorial/servl
    ets/index.html
  • Additional Link
  • http//developer.java.sun.com/developer/onlineTrai
    ning/Servlets/Fundamentals/introduction.html

3
Servlet Architecture
Web server with servlet engine
Client Browser
2 call servlet with request info
1 send http request
HTTP Servlet
5 send HTTP response
4 return information from servlet engine
3 perform logic
4
1 send HTTP request
  • Handled by regular html tags
  • examples
  • simple
  • http//localhost8080/servlet/snoop
  • with parameters
  • http//localhost8080/servlet/snoop?usernamealain
  • from a form post
  • ltform action/servlet/snoop methodpostgt
  • ltinput type"text" name"username" value""gt
  • ltinput type"text" namepassword" value""gt
  • lt/formgt

5
2 call servlet with request info
  • Handled by the web server
  • transparent to the developer

6
3 perform logic
  • Handled by a custom java class which inherits
    from the Servlet class

7
4 return response from servlet engine
  • Handled by the web server
  • transparent to the developer

8
5 final step
  • The browser renders the html page which is
    returned
  • In this class we will only deal with HTML, but
    others types could be returned by servlets
  • I.e. audio, images, ...

9
Overall Servlet API
  • base class is HttpServlet
  • APIs to
  • initialize servlets
  • receive http requests
  • retrieve information on the request
  • send a response to the browser
  • maintain session across multiple invocations
    (remember that HTTP is session-less)

10
Base Class HttpServlet
Example from HelloWorldServlet
  • import java.io.
  • import javax.servlet.
  • import javax.servlet.http.
  • public class HelloWorldServlet extends
    HttpServlet

11
Initialization of Servlet
  • Example from PhoneServlet.java
  • public class PhoneServlet extends HttpServlet
  • private Hashtable phones new Hashtable()
  • private String dataFilePath "phonelist"
  • // Public Methods
  • public void init(ServletConfig conf)
  • throws ServletException
  • super.init(conf)
  • String param getInitParameter("phonelist"
    )
  • if (param ! null)
  • dataFilePath param
  • ...
  • readFromFile()

12
HTTP GET and POST
  • Example from PhoneServlet
  • public class PhoneServlet extends HttpServlet
  • public void init(ServletConfig conf) throws
    ServletException
  • ...
  • public void doGet(HttpServletRequest req,
    HttpServletResponse res)
  • throws ServletException, IOException
  • ...
  • public void doPost(HttpServletRequest req,
    HttpServletResponse res)
  • throws IOException
  • ...
  • doGet is called when we have HTTP GET
  • doPost is called when we have HTTP POST

13
Inside doGet and doPost
  • Three usual steps
  • read request data such as input parameters
  • set response headers
  • length, type
  • write the response data

14
Get Request Data and Parameters
  • Example from PhoneServlet
  • public void doPost (HttpServletRequest req,
    HttpServletResponse res)throws IOException
  • ...
  • String name, number, opcode
  • name req.getParameter("name")
  • number req.getParameter("number")
  • opcode req.getParameter("opcode")
  • ...

ltform action/servlet/PhoneServlet
methodpostgt ltinput type"text" namename"
value""gt ltinput type"text" namenumber"
value""gt ltinput type"text" nameoncoder"
value""gt lt/formgt
15
Set Response Headers
  • Example from PhoneServlet
  • public void doGet (HttpServletRequest req,
    HttpServletResponse res)
  • throws ServletException, IOException
  • res.setContentType("text/html")
  • ServletOutputStream out res.getOutputStream()
  • String title "Phones"
  • ...
  • out.println("ltHEADgtltTITLEgt Phone Servlet Output
    lt/TITLEgtlt/HEADgt")
  • out.println("ltBODY BGCOLOR\"FFFFFF\"gt")
  • out.println("lth1gtPhone Recordslt/h1gt")
  • out.println("ltpgt")
  • ...
  • )

16
Create response
  • Example from PhoneServlet
  • public void doGet (HttpServletRequest req,
    HttpServletResponse res)
  • throws ServletException, IOException
  • res.setContentType("text/html")
  • ServletOutputStream out res.getOutputStream()
  • String title "Phones"
  • ...
  • out.println("ltHEADgtltTITLEgt Phone Servlet Output
    lt/TITLEgtlt/HEADgt")
  • out.println("ltBODY BGCOLOR\"FFFFFF\"gt")
  • out.println("lth1gtPhone Recordslt/h1gt")
  • out.println("ltpgt")
  • ...
  • )

17
HTTP protocol is session-less
  • HTTP protocol is session-less
  • between two requests the web server does not
    remember the caller
  • protocol is as follows
  • browser connects to HTTP server
  • browser makes a request for a web resource
  • web server looks for the resource
  • web server forwards the resource to the browser
  • web server disconnects the browser

18
Sessions with Servlets
  • The servlet engine fills-in the gap and provides
    a way to keep a session across multiple requests
    to a web server
  • Mechanism is handled by the servlet engine on
    demand by the servlets
  • The base class is HttpSession

19
HttpSession
  • Example from SessionServlet.java
  • public void doGet (HttpServletRequest req,
    HttpServletResponse res)
  • throws ServletException, IOException
  • HttpSession session req.getSession(true)
  • ...
  • //Here's the meat
  • Integer ival (Integer) session.getValue("sess
    iontest.counter")
  • if (ivalnull) ival new Integer(1)
  • else ival new Integer(ival.intValue() 1)
  • session.putValue("sessiontest.counter", ival)
  • ...
  • )
Write a Comment
User Comments (0)
About PowerShow.com