Java Servlet 2 by kfb17046

VIEWS: 21 PAGES: 20

									Java Servlet 2

     Pétur Orri Sæmundsen
Efnisyfirlit
   Upplýsingar um umhverfið og beiðnir
   Biðlara svarað
   Setu umsýsla (session tracking)
Upplýsingar um umhverfið
   Servlet þurfa margskonar upplýsingar
    úr umhverfinu sem þær lifa í
       Frumstillingar fyrir servlet
       Upplýsingar um miðlara
       Upplýsingar um vefgeyma og vefforrit
       Upplýsingar um beiðni
Frumstillingar
   Öllum servlet-um geta fylgt
    frumstillingarbreytur
    Aðgengilegar í gegnum ServletConfig skilin
   ServletConfig sækir upplýsingar úr web.xml
       public   String getInitParameter(String s)
       public   Enumeration getInitParameterNames()
       public   ServletContext getServletContext()
       public   String getServletName()
   GenericServlet útfærir ServletConfig
Frumstillingar (2)
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
  "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
  <servlet>
     <servlet-name>counter</servlet-name>
     <servlet-class>InitCounter</servlet-class>
     <init-param>
        <param-name>initial</param-name>
        <param-value>1000</param-value>
     <init-param>
  </servlet>
<web-app>
Frumstillingar (1)
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class InitCounter extends HttpServlet {
  int count;
  public void init() throws ServletException {
    String initial = getInitParameter("initial");
    try {
      count = Integer.parseInt(initial);
    }
    catch (NumberFormatException e) {
      count = 0;
    }
  }
...
}
Upplýsingar um miðlara
   Upplýsingar um miðlarann fylgja
    beiðninni
   HttpServletRequest skilin útfæra meðal
    annars
       public String getServerName()
       public int getServerPort()
   “Virtual hosting” gerir mögulegt að
    keyra mörg lén á einni IP tölu
Upplýsingar um vefgeymi og
vefforrit
   Servlet nota ServletContext til þess að hafa
    samskipti við vefgeymi og vefforrit
       Helstu upplýsingar um vefgeyminn
       Frumstillingabreytur
       Breytur sem servlet geta deilt sín á milli
            public void setAttribute(String name, object o)
            public object getAttribute(String name)
       Útgáfunúmer á vefgeymi
       Upplýsingar um tilföng vefforrits
Frumstilling á vefforriti
<web-app>
  <context-param>
      <param-name>DBhost</param-name>
      <param-value>localhost</param-value>
   </context-param>
   <context-param>
      <param-name>DBport</param-name>
      <param-value>3306</param-value>
   </context-param>
</web-app>
Upplýsingar um beiðni
   Allt um beiðnina aðgengilegt í gegnum
    HttpServletRequest skilin
   Nokkrar aðferðir
     public String getParameter(String name)
     public String[] getParameterValues(String name)

    <SELECT NAME="partnumber">
        <OPTION VALUE="7382">steam turbine</OPTION>
        <OPTION VALUE="2928">resistor array</OPTION>
        <OPTION VALUE="3993">widget analyz.</OPTION>
        <OPTION VALUE="9398">fiber identifie</OPTION>
    </SELECT>
     public InputStream getInputStream()

     public String getPathInfo()

     public HttpSession getSession()
Biðlara svarað
   Skilin HttpServletRequest útfæra
    aðferðir til þess að útbúa svar
       public void setContentType(String type)
       public PrintWriter getWriter()
       public ServletOutputStream
        getOutputStream()
       public void setBufferSize()
Einfalt svar
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

    public void doGet(HttpServletRequest req, HttpServletResponse res)
                        throws ServletException, IOException {

        res.setContentType("text/html");
        PrintWriter out = res.getWriter();

        out.println("<HTML>");
        out.println("<HEAD><TITLE>Hello World</TITLE></HEAD>");
        out.println("<BODY>");
        out.println("<BIG>Hello World</BIG>");
        out.println("</BODY></HTML>");
    }
}
Stöðukóðar, hausalínur og
dúsur
   Stöðukóði stilltur
       public void setStatus(int sc)
   Hausalínur stilltar
      public void setHeader(String name, String value)
      public void addHeader(String name,String value)

   Dúsur
    Cookie cookie = new Cookie(“ID”, “123”);
    res.addCookie(cookie);
Redirect
   Servlet getur vísað á annað tilfang
   Leið 1
    String site = “http://www.hi.is”;
    res.setStatus(res.SC_MOVED_TEMPORARILY);
    res.setHeader("Location", site);
   Leið 2
    res.sendRedirect(site);
Villusíður
   Villur í vefgeymi
       404 tilfangSemEkkiErTil
       500 Internal Server Error
   Sjálfgefinn hegðun er að birta villusíður
    vefgeymis
   Hægt að stilla vefforrit til þess að
    afgreiða eigin villusíður
Villusíður stilltar
<web-app>
<error-page>
     <error-code>400</error-code>
     <location>/400.html</location>
  </error-page>
  <error-page>
     <error-code> 404</error-code>
     <location>/404.html</location>
  </error-page>
  <error-page>
     <exception-type>javax.servlet.ServletException</exception-type>
     <location>/servlet/ErrorDisplay</location>
  </error-page>
</web-app>
Setu umsýsla
   HTTP er stöðulaus samskiptastaðall
   4 leiðir til að halda utan um stöðu
       Hidden Form Fields
            <input type=“hidden” name=“username” value=“pos”>
       URL Rewriting
            http://server:port/servlet/resource?jsessionid=123
       Cookies
            Lén, “relative” slóð, líftími, nafn og gildi
       Servlet session API (HttpSession hlutur)
Session API
   Skrifuð út hausalína í svari fyrir hverja beiðni
    á servlet
   Vefsjá sér um að send setudúsu með beiðni
   Ef setudúsa kom með beiðni er sú sama
    skrifuð út í svari annars búin til ný
       Set-Cookie:
        JSESSIONID=6EB599A270F6DD5D8A2D2E91324E
        8720;
Session API (2)
public class SessionTracker extends HttpServlet {

    public void doGet(HttpServletRequest req, HttpServletResponse res)
                         throws ServletException, IOException {
     ...
     // Get the current session object, create one if necessary
     HttpSession session = req.getSession();

      // Increment the hit count for this page. The value is saved
      // in this client's session under the name "tracker.count".
      Integer count = (Integer)session.getAttribute("tracker.count");
      if (count == null)
         count = new Integer(1);
      else
         count = new Integer(count.intValue() + 1);
      session.setAttribute("tracker.count", count);
     ...
    }
}
Session API (3)
   Aðferðir í HttpSession
       public void setAttribute(String name, Object value)
       public void getAttribute(String name)
       public void removeAttribute(String name)
       public void invalidate()
       public Enumeration getAttributeNames()
       public void setMaxInactiveInterval()

								
To top