Java Beans - PowerPoint PPT Presentation

About This Presentation
Title:

Java Beans

Description:

Java Beans RickardEnander_at_parallelconsulting.com Vad kr vs av er idag? N gon kunskap om Java Intresse f r komponenter Eventuellt verenseende med demo-demoner ... – PowerPoint PPT presentation

Number of Views:79
Avg rating:3.0/5.0
Slides: 39
Provided by: Tommy160
Category:
Tags: beans | java | servlet

less

Transcript and Presenter's Notes

Title: Java Beans


1
Java Beans
  • RickardEnander_at_parallelconsulting.com

2
Vad krävs av er idag?
  • Någon kunskap om Java
  • Intresse för komponenter
  • Eventuellt överenseende med demo-demoner

3
Agenda
  • Motivation för Servlets
  • Servlets jämfört med CGI
  • Servlet API
  • Exempel
  • Hur man börjar utveckla
  • Summering och vissa issues

4
Motivet för Servlets
  • HTML sidor är inte nog
  • vi behöver ha någon logik bakom sidorna
  • Idag(?) är CGI det vanliga sättet
  • Servlet kan ses som en Java-version av CGI
  • men bättre

5
Vad är då CGI? Common Gateway Interface
  • Vanligt sätt att generera dynamisk HTML
  • Vad som händer är
  • Web-servern startar ett program
  • Programmet läser indata från stdin
  • Programmet gör något
  • Programmet skriver HTML till stdout
  • Web serverns returnerar genererad HTML till
    klienten

6
Vad är dåligt med CGI?
  • Nytt program startar varje gång
  • dyrt resursmässigt
  • Tillståndslöst
  • hur håller man en session
  • Finns bättre varianter idag

7
Vad gör Servlet bättre?
  • Initierase av ServletServern en gång
  • instansen dör inte mellan anrop
  • billigare
  • Kan hantera många anrop på en gång
  • Ren Java, plattformsoberoende
  • Can anropas från HTML eller från Applet
  • Man kan kommunicera mellan Servlets

8
Servlet, the big picture
  • Någon Servlet Server
  • kör och administrerar Servlets
  • laddar och avladdar
  • kallar rätt Servlet
  • typiskt en Servlet enabled WebServer

9
Servlet, på klientsidan
  • Typiskt från en browser
  • pekar på en URL
  • Kan också vara vilken Java app som helst
  • Applet
  • Annan Servlet
  • Applikation

10
Servlet paket
  • Två package av intresse
  • javax.servlet
  • Inrefarces
  • Man börjar normalt inte från denna nivå
  • javax.servlet.http
  • specialicerade för HTTP
  • normalt så startar man härifrån

11
Servlet API
  • Består av ett par klasser
  • ServlertInterface
  • GenericServletClass
  • ServletConfigInterface
  • ServletOutputStream, ServletInputStream
  • ServletRequestInterface
  • ServletRespondInterface
  • Normalt inte av intresse

12
ServletInterface
  • Några metoder definierade
  • init ( ServletConfig )
  • destroy ()
  • service ( ServletRequest, ServletResponce
    )
  • getServletConfig ()
  • getServletInfo ()

13
GenericServlet
  • Abstrakt klass att starta ifrån
  • Implementerar ServletInterface
  • Ytterligare några metoder

14
HTTP paketet
  • Normal startpunkt
  • HttpServlet
  • HttpServletResponseInterface
  • HttpServletRequestInterface
  • HttpSession
  • HttpUtil

15
Den intressanta klassen är HttpServlet
  • Gör override på en eller flera metoder
  • goGet ( HttpServletRequest request,
    HttpServletRequest response)
  • doPut ( HttpServletRequest request,
    HttpServletRequest response)
  • service ( ServletRequest request,
    ServletRequest response)
  • normalt rör man ej service
  • den kallar doGet eller DoPut med data

16
Det finns ett antal metoder ytterligare i
HttpServlet
  • init ( ServletConfig )
  • initiering, t.ex. databasförbindelse
  • kallas från ServletServern en gång
  • destroy ()
  • stäng t.ex. databasförbindelse
  • kallas från ServletServern en gång
  • getServletInfo
  • informationssträng, används av Servern

17
Klassen HttpServletRequest håller preparedad data
  • Metoden service lägger in information
    automatiskt
  • getRequestURI, getServerPath
  • getParameters( string name )
  • getParameterNames, getParametervalues
  • getSession

18
Klassen HttpServletResponse används för att
returnera data
  • Innehåller funktionalitet att returnera data
  • setHeader
  • sendError
  • sendRedirect
  • getOutputStream
  • stream att skriva sin HTML till

19
Klassen HttpSession hjälper dig att hålla en
session
  • Data mellan anrop
  • måste ha unikt ID på något sätt
  • ServletServern lagrar data mellan anrop
  • Metoder som normalt används
  • getValue, removeValue
  • getValueNames
  • putValue
  • isNew, invalidate

20
Innan vi går till exempel repeterar vi livscykeln
  • Livscykeln från Serverns perspektiv
  • Servern initierar en Servlet och anroper init
  • Servern anropar service-metoden många gånger
  • Servern avinstansierar en Servlet och anropar
    destroy

21
Första exemplet, en mycket enkel Servlet
import java.io. import javax.servlet. import
javax.servlet.http. public class Ex1 extends
HttpServlet
22
Gör override på metoden doGet
public void doGet ( HttpServletRequest
request, HttpServletResponse response )
throws ServletException, IOException
response.setContentType("text/html")
PrintWriter out response.getWriter()
out.println("ltHTMLgtltHEADgtltTITLEgtSimple
Servletlt/TITLEgtlt/HEADgt") out.println("ltBODYgt")
out.println("ltH1gt Simple Servletlt/H1gt")
out.println("Simple output.")
out.println("lt/BODYgtlt/HTMLgt") out.close()
23
Ex2 är en Servlet med tillstånd
int counter 1000
  • Addera en variabel
  • Addera en init-metod

public void init(ServletConfig config)
throws ServletException
System.out.println("Initiating the Ex2
servlet") counter 0
24
Öka counter i varje anrop
public void doGet( HttpServletRequest
request, HttpServletResponse response )
throws ServletException,IOException //
added lines in doGet counter
out.println("Counter value " counter )
25
Ex3 läser data från request
out.println( "Request method "
request.getMethod() ) out.println(
"Request URI " request.getRequestUR
I() ) out.println( "Request protocol "
request.getProtocol() ) out.println(
"Servlet path " request.getServletPa
th()) out.println( "Path info "
request.getPathInfo() ) out.println(
"ltbrgt There are a lot more info to get
(see next example)")
26
I Ex4 så skickar parametar i anropet
  • http//localhost8080/servlet/Ex4?Servicetestpar
    am13

Enumeration e request.getParameterNames()
while (e.hasMoreElements()) String name
(String)e.nextElement() String value
request.getParameter(name)
out.println("Parameter " name " "
request.getParameter(name))
Parameter param1 33 Parameter Service test
27
Ex5, använd ett HTML form för input
  • På klientsidan

ltform actionhttp//localhost8080/servlet/Ex5gt lti
nput typehidden namesurvey valuehellogt
ltBRgtWhat is your income? 1-100 ltinput
typeradio nameincome value1-100gt 100-200 ltinput
typeradio nameincome value100-200gt 200-300 ltin
put typeradio nameincome value200-300gt 300-400
ltinput typeradio nameincome value300-400gt 500-m
ore ltinput typeradio nameincome
value500-moregt ltBRgtYour name? ltinput typetext
namecommentgt ltBRgtWhat TV shows do yo watch?
ltBRgtOperah ltinput typecheckbox nametv
valueOperahgt ltBRgtRapport ltinput
typecheckbox nametv valueRapportgt ltBRgtBingo
Lottoltinput typecheckbox nametv valueBingogt
28
Ex5, läs av parametrarna
Enumeration e request.getParameterNames() whil
e (e.hasMoreElements()) String name
(String) e.nextElement() String vals
(String) request.getParameterValues(name) if
(vals ! null) for (int i 0
iltvals.length i) out.println("Parame
ter ltbgt"name "lt/bgt "valsi)
29
En servlet kan ha minne mellan anrop baserat på
ID
  • Typfallet är en affär
  • man besöker flera avdelningar
  • adderar saker till shoppingvagnen
  • Servleten måste minnas vad som plockas
  • lagra data
  • identifiera användaren

30
Servlet session
  • Identifikation av användaren
  • genom cockies
  • genom URL extension
  • Data mellan anropen
  • måste identifiera
  • kan få data från HttpSession

31
Exempel på session
  • Håller reda på antal inviduella anrop

public void doGet( HttpServletRequest
request, HttpServletResponse response )
throws ServletException,IOException
counter HttpSession session
request.getSession(true)
32
Hämtar och sparar undan data
// Get data with specific key Integer ival
(Integer) session.getValue("Ex6.count") if
(ivalnull) // if null (first time) ival
new Integer(1) else ival new
Integer(ival.intValue() 1) session.putValue("E
x6.count", ival) // put back // Write out the
data out.println("You have hit this page ltbgt"
ival "lt/bgt times.ltpgt") out.println("Total
hits to this page ltbgt" counter "lt/bgt
times.ltpgt")
33
Andra saker som kan tas fram
out.println("lth3gtRequest and Session
Datalt/h3gt") out.println("Session ID in
Request " request.getRequestedSessionId())
out.println("ltbrgtIs Session ID in Request from
Cookie request.isRequestedSessionIdFromCo
okie()) out.println("ltbrgtIs Session ID in
Request from URL " request.isRequestedSess
ionIdFromUrl()) out.println("ltbrgtIs Session ID
valid " request.isRequestedSessionIdValid(
))
34
Andra saker som kan tas fram
out.println("lth3gtSession Datalt/h3gt") out.printl
n("New Session " session.isNew()) out.println(
"ltbrgtSession ID " session.getId()) Date
crt new Date( session.getCreationTime()
) out.println("ltbrgtCreation Time " crt)
Date lat new Date( session.getLastAccessedTi
me() ) out.println("ltbrgtLast Accessed Time "
lat )
35
Att tänka på
  • Threads
  • Finns bara en instans av varje Servlet
  • måste vara thread safe
  • alternativt
  • implements SingleThreadModel

36
Hur man gör på sin egen maskin för att utveckla
Servlets
  • Setup
  • JDK
  • JSDK2.0
  • http//java.sun.com/products/servlet/index.html
  • CLASSPATH c\jsdk2.0\lib
  • PATH c\jsdk2.0\bin

37
Hur man gör på sin egen maskin för att utveckla
Servlets
  • Kör
  • Starta ServletRunner
  • Placera dina Servlets i JSDK2.0/examples
  • Starta om SrrvletRunner efter omkompilering
  • Kör från t.ex. Netscape

38
Hur man gör på sin egen maskin för att utveckla
Servlets, forts
  • Starta en Servlet Server
  • ServletRunner eller en WebServer
  • Skriv dina egna Servlets
  • som vanligt
  • Placera dina Servlets i JSDK2.0/examples
  • Starta om ServletRunner efter omkompilering
  • Kör från t.ex. Netscape
Write a Comment
User Comments (0)
About PowerShow.com