1        Koodilistaus  2

.1      JSP sivut 2

.1.1            aiheutaPoikkeus.jsp  2

.1.2            aiheutaPoikkeusEiToimi.jsp. 2

.1.3            date.jsp  3

.1.4            errorPapuTesti.jsp  3

.1.5            filterTest.jsp  4

.1.6            hello.jsp  5

.1.7            jep.jsp  5

.1.8            JSPversio.jsp  6

.1.9            lastModified.jsp. 6

.1.10            locales.jsp  6

.1.11            LueContext.jsp. 7

.1.12            papuTesti.jsp  7

.1.13            papuTestiTarkastus.jsp  8

.1.14            poikkeusSivu.jsp. 9

.1.15            selain.jsp  9

.1.16            sendEmailGroup.jsp  10

.1.17            session.jsp  11

.1.18            sessionTestaus.jsp  12

.1.19            sysCommand.jsp. 12

.1.20            tagTest.jsp  13

.1.21            testi.jsp  13

.1.22            viewAllSource.jsp  14

.1.23            viewSource.jsp  15

.1.24            vsButton.jsp  16

.2      Muut koodit 16

.2.1            AppletServlet.java 16

.2.2            ChatAdminServlet.java 18

.2.3            ChatEntry.java 21

.2.4            ChatRoom.java 21

.2.5            ChatRoomServlet.java 22

.2.6            ErrorPapu.java 25

.2.7            ExampleFilter.java 26

.2.8            HelloTag.java 27

.2.9            HTML.java 28

.2.10            initPara.java 29

.2.11            Jep.java 31

.2.12            LataaContextServlet.java 32

.2.13            ListRoomsServlet.java 32

.2.14            login.java 34

.2.15            LueContextServlet.java 35

.2.16            LukuPapu.java 35

.2.17            LukuPapu2.java 36

.2.18            Moi.java 37

.2.19            MyDate.java 37

.2.20            MyLocales.java 38

.2.21            Papu.java 39

.2.22            RoomList.java 39

.2.23            selain.java 40

.2.24            SendEmailGroup.java 41

.2.25            SendMail.java 43

.2.26            ServletApplet.java 45

.2.27            SessionInfoServlet.java 47

.2.28            ShoppingCart.java 47

.2.29            StringUtils.java 49

.2.30            TitleTag.java 50

.2.31            ViallinenPapu.java 51

 

1        Koodilistaus

Koodilistaus on tuotettu viewSource.jsp:llä

.1            JSP sivut

 

.1.1      

aiheutaPoikkeus.jsp

<%@ page errorPage="poikkeusSivu.jsp" %>

 

<html>

<head><title>Webapplication tutoriaali - virhesivun käyttö</title></head>

<body>

<%

  int i = 10;

  i = i / 0;

%>

 

</body>

</html>

 

.1.2      

aiheutaPoikkeusEiToimi.jsp

<%@ page errorPage="poikkeusSivu.jsp" buffer="1kb"%>

 

<html>

<head><title>Webapplication tutoriaali - virhesivun käyttö</title></head>

<body>

<%

  for ( int i = 0; i < 100; i++ )

    out.println("Täytetään puskuria " + i + ". kertaa.");

  int i = 10;

  i = i / 0;

%>

 

</body>

</html>

 

.1.3      

date.jsp

<%--

 

  Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.

 

  This software is the proprietary information of Sun Microsystems, Inc. 

  Use is subject to license terms.

 

  Modified 8.1.2003 for Java SDK 1.4 by Pekka Kosonen (all beans must be in packages in SDK1.4)   

--%>

 

<%@ page import="java.util.*" %>

 

<html>

<body bgcolor="white">

<%@ page import="pavut.*" %>

<jsp:useBean id="date" class="pavut.MyDate" type="MyDate" />

<jsp:useBean id="locales" scope="application" class="pavut.MyLocales"/> 

<%

  Locale locale = locales.getLocale( request.getParameter("locale") );

  if (locale != null) {

%>

<jsp:setProperty name="date" property="locale" value="<%=locale%>"/>

The date in <b><%=locale.getDisplayName()%></b> is <b><%=date.getDate()%></b>

<% } %>

</body>

</html>

 

.1.4      

errorPapuTesti.jsp

<html>

<head>

  <title>WebApplication tutoriaali - JavaBeanin käyttö</title>

  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body BACKGROUND="/tutor/images/papu.gif" >

 

 

<jsp:useBean id="papu" class="pavut.ErrorPapu" scope="session"/>

 

<table align="center" width="50%">

<tr align="center">

<td>

<% if (request.getParameter("arvo") != null )

   {

      papu.muutaLukua(request.getParameter("arvo"));

      if ( papu.getVirheLippu() )

      {

        out.print("Anna kokonaislukuarvo");

        papu.virheLippuAlas();

      }

      %>

 

      <h3>

        Pavun arvo on nyt <jsp:getProperty name="papu" property="luku" />

      </h3>

      <%

   }

   else

     out.print("Papu luotu");

%>

<%--

<% if (request.getParameter("arvo") != null )

     out.print("<h3>Pavun arvo nyt " +

     papu.muutaLukua(request.getParameter("arvo")) );

   else

     out.print("Papu luotu");

%>

--%>

</td>

</tr>

</table>

 

<br>

<FORM name="papuTesti" METHOD=POST ACTION="errorPapuTesti.jsp">

 

<br>

<table align="center" width="50%" cellspacing="10">

<tr align="center">

  <td>

    Kasvata arvoa:

  </td>

  <td>

    <INPUT TYPE="text" name="arvo"><br>

  </td>

<tr align="center">

  <td>

    <INPUT TYPE=submit value="submit">

  </td>

</tr>

</table>

</FORM>

 

</body>

</html>

 

.1.5      

filterTest.jsp

<html>

<head>

<title>WebApplication tutoriaali - Servlet filterin testaus</title>

  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<%

  String attrib = (String) request.getAttribute("alias");

  if( attrib == null )

    out.println("Attribuuttia ei saatu luettua. Filtteri ei taida toimia");

  else

   out.println("Filtteri toimii. Attribuutin arvo on " + attrib);

 

  String user = request.getRemoteUser();

 

  if( user != null )

    out.println("<BR>" + "Olet loggautunut käyttäjätunnuksella " + user);

%>

 

</body>

</html>

 

.1.6        

hello.jsp

<html>

<head>

<title>WebApplication tutoriaali - Eka JSP</title>

  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

 

  <table width="500" border="0" cellspacing="0" cellpadding="0">

    <tr>

      <td>&nbsp;</td>

    </tr>

    <tr>

    <td>

      <img src="/tutor/images/homersuklaa.gif"></td>

    <td>

      <b>Life is like a box of chocolates. <BR>One minute it's full of goodies and before you relise it's empty.</b>

    </td>

    </tr>

    <tr>

      <td>&nbsp;</td>

    </tr>

  </table>

</body>

</html>

 

.1.7      

jep.jsp

<html>

<head>

  <title>WebApplication tutoriaali - lomakkeen tietojen tarkistaminen JavaScriptillä</title>

  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

 

  <table width="500" border="0" cellspacing="0" cellpadding="0">

    <tr>

      <td>&nbsp;</td>

    </tr>

    <tr>

    <td>

      <b>Terve <%= request.getParameter("nimi") %> ! </b>

      <p> Pääsit sitten läpi tarkastuksesta.

          Annoit sitten syntymävuodeksesi <%= request.getParameter("svuosi") %> ja

                               emailiksi <%= request.getParameter("email") %>

         </p>

    </td>

                            

    </tr>

 

    <tr>

    <td>

      <a href="" onClick = "this.href=history.go(-1)"  > takaisin </a>

    </td>

    </tr>

 

    <tr>

      <td>&nbsp;</td>

    </tr>

  </table>

</body>

</html>

 

.1.8      

JSPversio.jsp

<html>

<title>Webapplication tutoriaali - JSP version näyttäminen</title>

</html>

 

<%@ page import="javax.servlet.jsp.JspFactory" %>

<% JspFactory factory = JspFactory.getDefaultFactory(); %>

 

<body>

<p>

Käytössä on JSP versio

<%= factory.getEngineInfo().getSpecificationVersion() %>

</body>

</html>

 

.1.9      

lastModified.jsp

<%@ page import="java.io.*,java.util.*, pavut.*" %>

 

<%

  File f = new File(application.getRealPath( request.getServletPath() ));

  Date modified = new Date( f.lastModified() );

%>

<jsp:useBean id="date" class="pavut.MyDate" type="MyDate" />

 

<HTML>

<BODY>

Sivua on viimeksi muokattu

<%

  out.print( date.toFinnishDateTime(modified) );

%>

</BODY>

</HTML>

 

.1.10   

locales.jsp

<%--

 

  Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.

 

  This software is the proprietary information of Sun Microsystems, Inc. 

  Use is subject to license terms.

 

  Modified 8.1.2003 for Java SDK 1.4 by Pekka Kosonen (all beans must be in packages in SDK1.4)

--%>

 

<%@ page import="java.util.*" %>

<%@ page import="pavut.MyLocales" %>

<%@ page contentType="text/html; charset=ISO-8859-5" %>

<html>

<head><title>Localized Dates</title></head>

<body bgcolor="white">

<jsp:useBean id="locales" scope="application" class="pavut.MyLocales"/>

<form name="localeForm" action="locales.jsp" method="post">

<b>Locale:</b>

<select name=locale>

<%

  Iterator i = locales.getLocaleNames().iterator();

  String selectedLocale = request.getParameter("locale");

                             while (i.hasNext()) {

                                                          String locale = (String)i.next();

                                                          if (selectedLocale != null && selectedLocale.equals(locale) ) { %>

      <option selected><%=locale%></option>

<%                                                     } else { %>

      <option><%=locale%></option>

<%                                                     }

  }

%>

</select>

<input type="submit" name="Submit" value="Get Date">

</form>

<p>

<jsp:include page="date.jsp" flush="true" />

</body>

</html>

 

.1.11   

LueContext.jsp

<html>

<body>

<head>

  <meta http-equiv=\"Content-Type\" content="text/html; charset=iso-8859-1">

<title>

<%

  String alku = (String) this.getServletContext().getAttribute("titleBegin");

  out.print( alku + "ServletConfig käyttö" );

%>

</title>

</head>

<body>

  <H1 align="center"> Esimerkkissä luettiin ServletContextista otsikko (ks selaimen otsikkopalkki). </H1>

</body>

</html>

 

.1.12   

papuTesti.jsp

<html>

<head>

  <title>WebApplication tutoriaali - JavaBeanin käyttö</title>

  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body BACKGROUND="/tutor/images/papu.gif" >

 

 

<jsp:useBean id="papu" class="pavut.LukuPapu" scope="page"/>

 

<table align="center" width="50%">

<tr align="center">

<td>

<% if (request.getParameter("arvo") != null )

     out.print("<h3>Pavun arvo nyt " +

     papu.muutaLukua(request.getParameter("arvo")) );

   else

     out.print("Papu luotu");

%>

 

</td>

</tr>

</table>

 

<br>

<FORM name="papuTesti" METHOD=POST ACTION="papuTesti.jsp">

 

<br>

<table align="center" width="50%" cellspacing="10">

<tr align="center">

  <td>

    Kasvata arvoa:

  </td>

  <td>

    <INPUT TYPE="text" name="arvo"><br>

  </td>

<tr align="center">

  <td>

    <INPUT TYPE=submit value="submit">

  </td>

</tr>

</table>

</FORM>

 

</body>

</html>

 

.1.13   

papuTestiTarkastus.jsp

<html>

<head>

  <title>WebApplication tutoriaali - JavaBeanin käyttö</title>

  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body BACKGROUND="/tutor/images/papu.gif" >

 

 

<jsp:useBean id="papu" class="pavut.LukuPapu" scope="page"/>

 

<table align="center" width="50%">

<tr align="center">

<td>

<% String arvo = "";

   int muutos = 0;

   try {

     arvo = request.getParameter("arvo");

 

     if( arvo == null )

       out.print("papu luotu");

     else

     {

       muutos = Integer.parseInt( arvo );

       out.print("<h3>Pavun arvo nyt " + papu.muutaLukua( muutos ) );

     }

   }

   catch (NumberFormatException e )

   {

     out.print("Anna kokonaislukuarvo.<BR>");

     out.print( "(" + e.toString() + ")");

   }

   catch (Exception ee )

   {

     out.print("Tapahtui odottamaton poikkeus" + ee.toString());

   }

%>

 

</td>

</tr>

</table>

 

<br>

<FORM name="papuTesti" METHOD=POST ACTION="papuTestiTarkastus.jsp">

 

<br>

<table align="center" width="50%" cellspacing="10">

<tr align="center">

  <td>

    Kasvata arvoa:

  </td>

  <td>

    <INPUT TYPE="text" name="arvo"><br>

  </td>

<tr align="center">

  <td>

    <INPUT TYPE=submit value="submit">

  </td>

</tr>

</table>

</FORM>

 

</body>

</html>

 

.1.14   

poikkeusSivu.jsp

<%@ page isErrorPage="true" %>

<html>

<head><title>Webapplication tutoriaali - poikkeussivu</title></head>

<body BACKGROUND="/tutor/images/doh.gif">

<h1>Tapahtui seuraava poikkeus:<br>

<%= exception.toString() %><br>

Palaa takaisin ja yritä uudelleen. Jos se ei auta, ota yhteyttä järjestelmänvalvojaan. <br>

</h1>

</body>

</html>

 

.1.15   

selain.jsp

<%--

  selain.jsp

 

  Testataan selaimen versio, käyttäen beaniä

--%>

 

<html>

<title>

Webapplication tutoriaali - selainversion testaaminen

</title>

 

<%@ page import="pavut.*" %>

 

<jsp:useBean id="selain" class="pavut.Selain"/>

 

<%

  out.print("<BR>");

  selain.setRequest(request);

  if ( selain.isIE() )

    out.print("Selaimesi on IE");

  if ( selain.isNS7() )

    out.print("Selaimesi on Netscape 7");

  if ( selain.isNS6() )

    out.print("Selaimesi on Netscape 6");

  if ( selain.isNS4() )

    out.print("Selaimesi on Netscape 4");

 

  out.print( "<BR>" + selain.getUseragent() );

  out.print("<BR>");

%>

</body>

</html>

 

.1.16   

sendEmailGroup.jsp

<html>

<head>

  <title>WebApplication tutoriaali - Ryhmäpostin lähetys</title>

  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<%@ page import="java.sql.*" %>

 

<%!

   Connection conn = null;

   Statement stmt = null;

   ResultSet rs = null;

   String driver = "sun.jdbc.odbc.JdbcOdbcDriver";

   String db = "jdbc:odbc:emailgroup";

   String table = "ryhmat";

   String field = "nimi";

   String selectName = "ryhma";

%>

 

<%! public void jspInit()

    {

     try {

      connect();

     } catch (Exception e) { log("senEmailGroup.jsp jspInit: ", e); }

    }

 

    public void jspDestroy()

    {

      try {

        conn.close();

      } catch( SQLException e) { }

      conn = null;

    }

 

  private synchronized void connect() throws Exception {

    if( conn == null || conn.isClosed() )

    {

      Class.forName(driver).newInstance();

      conn = DriverManager.getConnection(db);

      stmt = conn.createStatement();

    }

  }

%>

<FORM action="servlet/sendmail.SendEmailGroup" method="post">

   <TABLE>

    <tbody align="right">

      <TR><TD>Ryhmä </TD><TD> <%= haeRyhmat() %> </TD></TR>

      <TR><TD>Vastausosoite:</TD><TD><input type="text" name="from" size="64"></TD></TR>

      <TR><TD>Aihe:</TD><TD><input type="text" name="subject"

          size="64"></TD></TR>

      <TR><td colspan="2"><textarea name="text" rows="8"

          cols="64"></TEXTAREA></TD></TR>

      <TR><td colspan="2"><input type="submit" value="Lähetä">&nbsp;<input

          type="reset" value="tyhjennä kentät"></TD></TR>

    </TBODY>

   </TABLE>

</FORM>

 

 

</body>

</html>

<%!

String haeRyhmat() throws Exception

{

  StringBuffer sb = new StringBuffer("");

 

 

  rs = stmt.executeQuery("SELECT " + field + " FROM " + table);

 

  sb.append("<select size=\"1\" name=\"" + selectName  +"\">");

  while ( rs.next() )

  {

    sb.append("<option>");

    sb.append( rs.getString(field) );

    sb.append("</option>");

  }

  sb.append("</select>");

  return sb.toString();

}

%>

 

.1.17   

session.jsp

<%@ page import="java.util.*" %>

<html>

<head>

  <title>WebApplication tutoriaali - Sessio tietojen lukeminen</title>

  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

<%

  if ( request.getParameter("tapa") == null )

  {

    out.println("Uusi " + session.isNew()+ "<BR>" );

    out.println( "ID " + session.getId() + "<BR>");

    out.println( "Luotu " + session.getCreationTime() + "<BR>");

    out.println( "Käsitelty viimeksi " + session.getLastAccessedTime() + "<BR>");

    out.println( "Voimassa " + session.getMaxInactiveInterval() + "<BR>");

    out.println("<h3><a href = \"session.jsp?tapa=1\">InAktivoi sessio tästä </a> </h3>");

 

    Enumeration e = session.getAttributeNames();

 

    out.println("Sessiolla on seuraavat attribuutit:<BR>" );

    while ( e.hasMoreElements() )

    {

      out.println( e.nextElement()+ "<BR>");

    }

  }

  else

  {

    session.invalidate();

    out.println("Sessio inaktivoitu.");

  }

%>

 

</body>

</html>

 

.1.18   

sessionTestaus.jsp

<%@ page import="java.util.*" %>

<html>

<head>

  <title>WebApplication tutoriaali - Sessio tietojen lukeminen</title>

  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

 

<%!

  String URL;

  String encodedURL;

%>

 

<%

  if (session.getAttribute("testi") == null )

  {

    session.setAttribute("testi", "testi");

    out.println("Attribuutti lisätty");

  }

  URL = "session.jsp";

  encodedURL = response.encodeURL(URL);

%>

 

<BR> <a href="session.jsp"> JSP (ei encodedURL) </a>

<BR> <a href=" <%=encodedURL%> "> JSP (encodedURL </a>

</body>

</html>

 

.1.19   

sysCommand.jsp

<%@ page import="java.io.*" %>

 

<%!

public String run(String cmd) {

  try {

    Runtime rt = Runtime.getRuntime();

    Process p = rt.exec(cmd);

    InputStreamReader in = new InputStreamReader(p.getInputStream());

    BufferedReader reader = new BufferedReader(in);

    StringBuffer buf = new StringBuffer();

    String line;

    String newline = "\n";

    while ((line = reader.readLine()) != null) {

      buf.append(line);

      buf.append(newline);

    }

    reader.close();

    p.getInputStream().close();

    p.getOutputStream().close();

    p.getErrorStream().close();

    p.waitFor();

    return buf.toString();

  }

  catch (Exception e) {

    return (e.getMessage());

  }

}

%>

<html>

<head>

 <title>Webapplication tutoriaali - järjestelmäkomentojen suorittaminen</title>

</head>

<body>

<%-- Unix ollut pystyssä <%= run("/usr/bin/uptime") %> --%>

Ajetaan c:\temp\winver.bat tiedosto, joka sisältää ainoastaan komennon: <BR>

ver <BR>

Tulos näkyy alla <BR>

<%= run("c:\\temp\\aja.bat") %>

</body>

</html>

 

.1.20   

tagTest.jsp

<%@ taglib uri="/tutor" prefix="tutor" %>

<html>

<head>

  <tutor:title titleEnd="tagin attribuutille arvon asettaminen"/>

</head>

<body>

  <h1> Tagia käytetty sivun otsikon luomiseen. </h1>

</body>

</html>

 

.1.21   

testi.jsp

<%@ page info="Hello" %>

<html>

<head>

<title>

testi

</title>

</head>

<body>

<h1>

JBuilder Generated JSP

</h1>

 

  <jsp:include page="/viewSource.jsp">

   <jsp:param name="url" value="selain.jsp"/>

  </jsp:include>

 

<%! int i=0; %>

 

<% for (i=0; i < 5; i++ )

    out.print(i);

 %>

<BR>Silmukan jälkeen i on <%= i %>

<BR>

 

</body>

</html>

 

.1.22   

viewAllSource.jsp

<%--

  viewAllsource.jsp

  -----------------

 

  Listaa samassa WEBAPPissa (samassa hakemistossa) olevien jsp tiedostojen

  sisällöt.

 

  1) jos et anna parametria all, tulostetaan linkkilista

     http://localhost/tutor/viewAllSource.jsp

  2) jos annat, tulostetaan kaikkien tiedostojen koodit lomakkeelle

     http://localhost/tutor/viewAllSource.jsp?all=jotain

 

  Mikäli annetaan parametrille hake jokin arvo, listataan

  tiedostot tästä hakemistosta. Esim, jos annat parametrille

  hake arvon src, listataan kaikki tiedostot, jotka löytyvät

  hakemistosta tutor/src. Tällöin listataan myös muut kuin jsp tiedostot.

 

  Käyttää apuna viewSource.jsp:tä, jonka responset incluudataan

  silmukassa.

 

  Tehty:hyvin myöhään yöllä 10.1.2003, Pekka Kosonen

--%>

 

<%@ page import="java.io.*" %>

<%! String hake = null; %>

<%

File path = new File(application.getRealPath("viewAllSource.jsp")).getParentFile();

hake = request.getParameter("hake");

if( hake != null )

{

 String newPath = path.toString() + "\\" + hake;

 path = new File(newPath);

}

%>

<html>

<head>

  <title>

    Webapplication tutoriaali - Lähdekoodit

  </title>

</head>

<body>

<table border="0" width = "100%" >

<%

  File [] files = path.listFiles();

  if( files != null )

  for( int i = 0; i < files.length; i++ ) {

    String nimi = files[i].getName();

 

    if (tarkennin( nimi ).compareToIgnoreCase(".jsp") != 0 && hake == null)

      continue;

%>

<tr>

<td>

<%

  if( request.getParameter("all") == null )

  {

    out.print("<a href=/tutor/viewSource.jsp?url=");

    out.print(nimi + ">");

    out.print("<h3>"+nimi+"</h3></a>");

  }

  else

  {

%>

  <jsp:include page="/viewSource.jsp">

   <jsp:param name="url" value="<%=files[i].getName()%>"/>

  </jsp:include>

<%

  }

}

%> <%-- Silmukka päättyy --%>

</td>

</tr>

<%!

  public String tarkennin(String file)

  {

    int i = file.lastIndexOf(".");

    if( i == -1)

      return "";

    return file.substring(i, file.length() );

  }

%>

</table>

</body></html>

 

 

.1.23   

viewSource.jsp

<%@ page import="java.io.*" %>

<%

String url = request.getParameter("url");

 

if (url.indexOf("..") > -1)

  throw new java.io.IOException("Relative paths are not allowed");

 

String hake = request.getParameter("hake");

String polku = (new File (application.getRealPath(url) ).getParent() );

String fileName =(new File (application.getRealPath(url) ).getName() );

 

File realPath = null;

 

if( hake == null )

{

  realPath = new File(application.getRealPath(url) );

  out.println("<h3>" + "<a href=\"" + url + "\">" + url + "</a></h3>");

}

else

{

  realPath = new File(polku + "\\" + hake + "\\" + fileName);

  out.println("<h3>" + "<a href=\"" + hake + "/" + url + "\">" + url + "</a></h3>");

}

%>

<html><head><title>Tiedosto <%= url %></title></head><body><pre>

<%

FileInputStream fis = null;

try {

  if( realPath == null )

    throw new IOException("realpath null");

  fis = new FileInputStream(realPath);

  if( fis == null )

    throw new IOException("realpath null");

  BufferedReader reader;

  reader = new BufferedReader(new InputStreamReader(fis));

  String line;

  while ((line = reader.readLine()) != null) {

    line = replace(line, "&", "&amp;");

    line = replace(line, "<", "&lt;");

    line = replace(line, ">", "&gt;");

    out.println(line);

  }

}

catch (IOException e) {

  out.println("IOException: " + e.getMessage());

}

finally { if (fis != null) fis.close(); }

%>

</pre></body></html>

<%!

public String replace(String s, String old, String replacement) {

   int i = s.indexOf(old);

   StringBuffer r = new StringBuffer();

   if (i == -1) return s;

   r.append(s.substring(0,i) + replacement);

   if (i + old.length() < s.length())

     r.append(replace(s.substring(i + old.length(), s.length()),

      old, replacement));

   return r.toString();

}

%>

 

 

.1.24   

vsButton.jsp

<%@ page import="java.io.*,java.util.*,java.text.*" %>

<% String me = request.getRequestURI(); %>

<script language="JavaScript">

function show(url) {

  opts="height=400,width=600,scrollbars=yes,resizable=yes"

  window.open("viewsource.jsp?url="+escape(url), "src", opts);

}

</script>

<form><div align="right">

<input type="button" value="View Source"

onClick="show('<%= me %>')"></div>

</form>

 

 

.2            Muut koodit

 

Koodeista jätetty pois aliohj.java listaus paperin säästämiseksi. Lisäksi aliohjelmia on käytetty hyvin vähän tutoriaalissa.

.2.1      

AppletServlet.java

import javax.servlet.*;

import javax.servlet.http.*;

 

import java.util.*;

import java.sql.*;

import java.io.*;

 

public class AppletServlet extends HttpServlet {

 

   Connection conn;

 

   public void init() throws ServletException {

 

      try {

         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

         String dbURL = "jdbc:odbc:tutorUsers";

         conn = DriverManager.getConnection(dbURL);

      } catch (Exception e) {

         System.out.println("tietokantayhteyttä ei saada avattua <BR> "

         + e.toString() );

         return;

      }

   }

   public void doGet(HttpServletRequest req, HttpServletResponse res)

      throws ServletException, IOException {

    doPost(req, res);

  }

 

  public void doPost(HttpServletRequest req, HttpServletResponse res)

      throws ServletException, IOException {

 

      PrintWriter out = res.getWriter();

      res.setContentType("text/html");

 

      String qry = req.getParameter("qry");

 

      if( qry == null )

      {

        out.println("Parametria ei saatu luettua.");

        out.close();

        return;

      }

/*      else //debug

        {

          out.println("qry" + qry);

          out.close();

        }

*/

      try {

         Statement s = conn.createStatement();

         ResultSet rs = s.executeQuery(qry);

         int col = rs.getMetaData().getColumnCount();

 

         //käydään tulosjoukko tietue kerrallaan läpi

         while ( rs.next() ) {

           out.println("Tietue nro " + rs.getRow() + ":");

 

           for( int i=1; i <= col; i++)

           {

              //tulostataan kentän nimi

              out.print( rs.getMetaData().getColumnName(i) + ":");

              //ja tietueen kyseisen kentän arvo

              out.println( rs.getString(i));

           }

         }

      } catch (SQLException e) {

         out.println( "SQL-VIRHE " + e.toString() );

         System.out.println( e.toString() );

         return;

      }

      out.println();

      out.close();

   }

 

   public void destroy() {

      try {

         conn.close();

      } catch (Exception e) {

         System.out.println("Tietokantayhteyden sulkeminen ei onnistu <BR>"

         + e.toString() );

      }

   }

}

 

.2.2      

ChatAdminServlet.java

package chat;

 

import javax.servlet.*;

import javax.servlet.http.*;

 

import java.io.*;

import java.util.*;

 

import chat.*;

import Aliohj;

 

public class ChatAdminServlet extends HttpServlet

{

   public void init() throws ServletException

   {

      String propsFile = this.getPropsFileName();

 

      Properties props = new Properties();

 

      try

      {

         InputStream is = new FileInputStream(propsFile);

         props.load(is);

         is.close();

      }

      catch (Exception e)

      {

         //Aliohj.kirjoitaRivi("C:\\temp\\props.txt", "Chatprops " + e.toString(), true);

         throw new UnavailableException(this, "Can't read the chatprops file " +

               propsFile);

      }

 

      RoomList roomList = createRooms(props);

      getServletContext().setAttribute("roomList", roomList);

      //Aliohj.kirjoitaRivi("C:\\temp\\props.txt", "Chatprops Asetettu", true);

   }

 

   public void doGet(HttpServletRequest req, HttpServletResponse res)

                  throws IOException, ServletException

   {

      res.setContentType("text/html");

      PrintWriter out = res.getWriter();

      writePage(out);

      out.close();

   }

 

   public void doPost(HttpServletRequest req, HttpServletResponse res)

            throws IOException, ServletException

   {

 

      boolean isListModified = false;

      RoomList roomList =

         (RoomList) getServletContext().getAttribute("roomList");

 

      // Update the room list

      String[] removeList = req.getParameterValues("remove");

      if (removeList != null)

      {

         roomList.removeRooms(removeList);

         isListModified = true;

      }

 

      String roomName = req.getParameter("roomname");

      String roomDescr = req.getParameter("roomdescr");

      if (roomName != null && roomName.length() > 0)

      {

         roomList.addRoom(new ChatRoom(roomName, roomDescr));

         isListModified = true;

      }

 

      if (isListModified)

      {

         saveList(roomList);

      }

 

      doGet(req, res);

   }

 

   private void saveList(RoomList roomList) throws UnavailableException

   {

      String propsFile = this.getPropsFileName();

 

      Properties props = new Properties();

      Enumeration rooms = roomList.getRooms();

      while (rooms.hasMoreElements())

      {

         ChatRoom room = (ChatRoom) rooms.nextElement();

         String roomName = StringUtils.replaceInString(room.getName(), " ", "+");

         props.put(roomName + ".description", room.getDescription());

      }

      try

      {

         OutputStream os = new FileOutputStream(propsFile);

         props.store(os, "Generated by ChatAdminServlet");

         os.close();

      }

      catch (Exception e)

      {

         throw new UnavailableException(this, "Can't write the chatprops file " +

            propsFile);

      }

   }

 

   private RoomList createRooms(Properties props)

   {

      RoomList roomList = new RoomList();

      Enumeration propKeys = props.keys();

      while (propKeys.hasMoreElements())

      {

         String key = (String) propKeys.nextElement();

         //Aliohj.kirjoitaRivi("C:\\temp\\props.txt", "Key =" + key, false);

         if (key.endsWith(".description"))

         {

            String roomDescription = props.getProperty(key);

            String roomName = key.substring(0, key.lastIndexOf("."));

            roomName = StringUtils.replaceInString(roomName, "+", " ");

            //Aliohj.kirjoitaRivi("C:\\temp\\props.txt", "name =" + roomName, false);

            //Aliohj.kirjoitaRivi("C:\\temp\\props.txt", "kuvaus =" + roomDescription, false);

            roomList.addRoom(new ChatRoom(roomName, roomDescription));

         }

      }

      return roomList;

   }

 

   private void writePage(PrintWriter out)

   {

      out.println("<HTML>");

      out.println("<HEAD><TITLE>Chat room administration</TITLE></HEAD>");

      out.println("<BODY>");

      out.println("<H1>Chat room administration</H1>");

      out.println("<FORM METHOD=POST ACTION=chatAdmin>");

 

      // Add check boxes for removing rooms

      out.println("Check off the rooms you would like to remove:<P>");

      RoomList roomList = (RoomList) getServletContext().getAttribute("roomList");

      Enumeration rooms = roomList.getRooms();

      while (rooms.hasMoreElements())

      {

         ChatRoom room = (ChatRoom) rooms.nextElement();

         out.println("<INPUT TYPE=CHECKBOX NAME=remove VALUE='" +

                  room.getName() + "'>" + room.getName() + "<BR>");

      }

      // Add fields for adding a room

      out.println("<P>Describe the room you would like to add:<P>");

      out.println("<TABLE>");

      out.println("<TR><TD>Name:</TD><TD><INPUT NAME=roomname SIZE=50></TD></TR>");

      out.println("<TR><TD>Description:</TD>");

      out.println("<TD><TEXTAREA NAME=roomdescr COLS=50 ROWS=15>");

      out.println("</TEXTAREA></TD></TR>");

      out.println("</TABLE>");

 

      // Add submit button

      out.println("<P><INPUT TYPE=SUBMIT VALUE='Update List'>");

 

      out.println("</FORM>");

      out.println("</BODY></HTML>");

   }

 

   private String getPropsFileName() throws UnavailableException

   {

      String propsFile = getServletConfig().getInitParameter("chatprops");

 

      if (propsFile == null || propsFile.length() == 0)

      {

         throw new UnavailableException(this, "chatprops not set");

      }

 

     File realPath = new File( this.getServletContext().getRealPath(propsFile));

 

     //Aliohj.kirjoitaRivi("C:\\temp\\filee.txt", realPath.getAbsolutePath(), true);

 

     return realPath.getAbsolutePath();

   }

}

 

.2.3      

ChatEntry.java

package chat;

 

import java.util.*;

 

public class ChatEntry

{

   private String avatarName;

   private String chatMessage;

 

   public ChatEntry(String avatarName, String chatMessage)

   {

      this.avatarName = avatarName;

      this.chatMessage = chatMessage;

   }

 

   public String getAvatarName()

   {

      return avatarName;

   }

 

   public String getChatMessage()

   {

      return chatMessage;

   }

}

 

.2.4      

ChatRoom.java

package chat;

 

import java.util.*;

 

public class ChatRoom

{

   private static final int MAX_ENTRIES = 5;

   private String name;

   private String description;

   private Vector chatEntries = new Vector();

   public ChatRoom(String name, String description)

   {

      this.name = name;

      this.description = description;

   }

 

   public synchronized void addChatEntry(ChatEntry entry)

   {

      chatEntries.addElement(entry);

      if (chatEntries.size() > MAX_ENTRIES)

      {

         chatEntries.removeElementAt(0);

      }

   }

 

   public Enumeration getChatEntries()

   {

      return chatEntries.elements();

      }

 

   public String getDescription()

   {

      return description;

   }

 

   public String getName()

   {

      return name;

   }

}

 

.2.5      

ChatRoomServlet.java

package chat;

 

import javax.servlet.*;

import javax.servlet.http.*;

 

import java.io.*;

import java.net.*;

import java.util.*;

 

import chat.*;

 

public class ChatRoomServlet extends HttpServlet

{

 

   public void doGet(HttpServletRequest req, HttpServletResponse res)

                  throws IOException, ServletException

   {

 

      res.setContentType("text/html");

      PrintWriter out = res.getWriter();

 

      ChatRoom room = getRoom(req, res);

      if (room == null)

      {

         return;

      }

 

      // Check if it's a request for a message list or a form

      String listPar = req.getParameter("list");

      if (listPar != null && listPar.equals("true"))

      {

         writeMessages(out, room, getAvatarName(req));

      }

      else

      {

         writeForm(out);

      }

      out.close();

   }

 

   public void doPost(HttpServletRequest req, HttpServletResponse res)

                 throws IOException, ServletException

   {

 

      res.setContentType("text/html");

      PrintWriter out = res.getWriter();

 

      ChatRoom room = getRoom(req, res);

      if (room == null)

      {

          return;

      }

      String avatarName = getAvatarName(req);

 

      // Save message if any

      String msg = req.getParameter("msg");

      if (msg != null && msg.length() != 0)

      {

         room.addChatEntry(new ChatEntry(avatarName, msg));

      }

      writeFrame(out, room);

      out.close();

   }

 

   private String getAvatarName(HttpServletRequest req) {

      HttpSession session = req.getSession();

      String avatarName = (String) session.getValue("avatarName");

      if (avatarName == null)

      {

         // Entered a room for the first time?

         avatarName = req.getParameter("avatarName");

         if (avatarName == null || avatarName.length() == 0)

         {

            avatarName = "A spineless spy";

         }

         session.putValue("avatarName", avatarName);

      }

      else

      {

         // Entered a new room with a new name?

         String newName = req.getParameter("avatarName");

         if (newName != null && newName.length() > 0 &&

                  !newName.equals(avatarName))

         {

            avatarName = newName;

            session.putValue("avatarName", avatarName);

         }

      }

      return avatarName;

   }

 

   private ChatRoom getRoom(HttpServletRequest req, HttpServletResponse res)

              throws IOException

   {

 

      HttpSession session = req.getSession();

      PrintWriter out = res.getWriter();

 

      String roomName = (String) session.getValue("roomName");

      if (roomName == null)

      {

         // Just entered?

         roomName = req.getParameter("roomName");

         if (roomName == null || roomName.length() == 0)

         {

            writeError(out, "Room not specified");

            return null;

         }

         session.putValue("roomName", roomName);

      }

      else {

         // Entered a new room?

         String newRoom = req.getParameter("roomName");

         if (newRoom != null && newRoom.length() > 0 &&

            !newRoom.equals(roomName))

         {

            roomName = newRoom;

            session.putValue("roomName", roomName);

         }

      }

 

      RoomList roomList =

         (RoomList) getServletContext().getAttribute("roomList");

      ChatRoom room = roomList.getRoom(roomName);

      if (room == null)

      {

         writeError(out, "Room " + roomName + " not found");

         return null;

      }

      return room;

   }

 

   private void writeError(PrintWriter out, String msg)

   {

 

      out.println("<HTML>");

      out.println("<HEAD><TITLE>Error</TITLE></HEAD>");

      out.println("<BODY>");

      out.println("<H1>Error</H1>");

      out.println(msg);

      out.println("</BODY></HTML>");

   }

 

   private void writeForm(PrintWriter out)

   {

      out.println("<HTML>");

      out.println("<BODY>");

      out.println("<FORM METHOD=POST ACTION=chatRoom TARGET=_top>");

 

      // Add field for new message

      out.println("<P>Enter your message:<P>");

      out.println("<TEXTAREA NAME=msg COLS=50 ROWS=3 WRAP=HARD>");

      out.println("</TEXTAREA>");

 

      // Add submit button and hidden field with room name

      out.println("<P><INPUT TYPE=SUBMIT VALUE='Send Message'>");

 

      // Add an Exit button

      out.println("</FORM>");

      out.println("<FORM ACTION=listRooms METHOD=GET TARGET=_top>");

      out.println("<INPUT TYPE=SUBMIT VALUE=Exit>");

      out.println("</FORM>");

 

      out.println("</BODY></HTML>");

   }

 

   private void writeFrame(PrintWriter out, ChatRoom room)

   {

 

      out.println("<HTML>");

      out.println("<HEAD><TITLE>" + room.getName() + "</TITLE></HEAD>");

      out.println("<FRAMESET ROWS='60%,30%' BORDER=0 FRAMEBORDER=NO>");

      out.println("<FRAME SRC=chatRoom?list=true NAME=list SCROLLING=AUTO>");

      out.println("<FRAME SRC=chatRoom?list=false NAME=form SCROLLING=AUTO>");

      out.println("<NOFRAMES>");

      out.println("<BODY>");

      out.println("Viewing this page requires a browser capable of displaying frames.");

      out.println("</BODY>");

      out.println("</NOFRAMES>");

      out.println("</FRAMESET>");

      out.println("</HTML>");

   }

 

   private void writeMessages(PrintWriter out, ChatRoom room,

       String avatarName)

   {

 

      out.println("<HTML>");

      out.println("<HEAD><META http-equiv=\"refresh\" content=\"5\"></HEAD>");

      out.println("<BODY>");

      out.println("<H1>You're in " + room.getName() + " as " +

         avatarName + "</H1>");

 

      // List all messages in the room

      Enumeration entries = room.getChatEntries();

      if (!entries.hasMoreElements())

      {

          out.println("<FONT COLOR=RED>There are no messages in this room yet</FONT>");

      }

      while (entries.hasMoreElements())

      {

         ChatEntry entry = (ChatEntry) entries.nextElement();

         String entryName = entry.getAvatarName();

         if (entryName.equals(avatarName))

         {

            out.print("<FONT COLOR=BLUE>");

         }

         out.println(entryName + " : " + entry.getChatMessage() +

              "<BR>");

         if (entryName.equals(avatarName))

         {

            out.print("</FONT>");

         }

      }

      out.println("</BODY></HTML>");

   }

}

 

.2.6      

ErrorPapu.java

/**

 * Papu.java

 * ---------

 *

 * Yksinkertainen JavaBean, jonka yhden attribuutin arvoa

 * muutetaan papuTesti.jsp sivun avulla.

 *

 * Tehty: 9.1.2003, Pekka Kosonen

 *

 */

package pavut;

 

public class ErrorPapu extends LukuPapu

{

   private boolean virheLippu;

 

   public ErrorPapu()

   {

      virheLippu = false;

//      luku = 0;

   }

 

   public int muutaLukua( String Luku )

   {

      int muutos = 0;

      try

      {

        muutos = Integer.parseInt(Luku);

        this.muutaLukua(muutos);

      }catch ( NumberFormatException e )

      { //merkkijonoa ei voitu muuntaa kokonaisluvuksi

        virheLippu = true;

      }

      finally {

        return luku;

      }

   }

 

   public void virheLippuAlas()

   {

     virheLippu = false;

   }

 

   public boolean getVirheLippu()

   {

     return virheLippu;

   }

}

 

.2.7      

ExampleFilter.java

import java.io.IOException;

 

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.*;

 

public final class ExampleFilter implements Filter {

 

  public void init(FilterConfig config) throws javax.servlet.ServletException {

    System.out.println("ExampleFilter: init"); //debuggausta

  }

 

  public void destroy() {

    System.out.println("ExampleFilter: destroy ");

  }

 

public void doFilter(ServletRequest request, ServletResponse response,  FilterChain chain) throws java.io.IOException, javax.servlet.ServletException

{

    System.err.println("ExampleFilter: ennen doFilter()");

    request.setAttribute("alias", new String("jdbc:odbc:tutorUser"));

    chain.doFilter(request, response); //kontrolli ketjun seuraavalle filtterille, mikäli

                                                                         //sellainen on

    System.err.println("---->ExampleFilter: jälkeen doFilter()<----");

  }

}

/*

long before = System.currentTimeMillis();

    chain.doFilter(request, response);

    long after = System.currentTimeMillis();

 

    String name = "";

    if (request instanceof HttpServletRequest) {

      name = ((HttpServletRequest)request).getRequestURI();

    }

    config.getServletContext().log(name + ": " + (after - before) + "ms");

  }

}

 

 

When the server calls init(), the filter saves a reference to the config

in its config variable, which is later used in the doFilter() method

to retrieve the ServletContext. When the server calls doFilter(), the filter

times how long the request handling takes and logs the time once processing

 has completed. This filter nicely demonstrates before- and after-request

 processing. Notice that the parameters to the doFilter() method are not

 HTTP-aware objects, so to call the HTTP-specific getRequestURI() method

 requires a cast of the request to an HttpServletRequest type.

*/

 

.2.8      

HelloTag.java

package tutoriaali;

 

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspTagException;

import javax.servlet.jsp.tagext.TagSupport;

 

public class HelloTag extends TagSupport

{

    public void HelloTag() {

 

    }

 

    // Method called when the closing hello tag is encountered

    public int doEndTag() throws JspException {

 

        try {

 

            // We use the pageContext to get a Writer

            // We then print the text string Hello

            pageContext.getOut().print("Hello");

        }

        catch (Exception e) {

 

            throw new JspTagException(e.getMessage());

        }

        // We want to return SKIP_BODY because this Tag does not support

        // a Tag Body

        return SKIP_BODY;

    }

 

    public void release() {

 

        // Call the parent's release to release any resources

        // used by the parent tag.

        // This is just good practice for when you start creating

        // hierarchies of tags.

        super.release();

    }

}

 

.2.9      

HTML.java

package util;

 

public class HTML

{

 

   public static final int NORMAL   = 0;

   public static final int HEADING  = 1;

   public static final int LINE     = 2;

 

   public StringBuffer buffer;

 

   public HTML(String title)

   {

      buffer = new StringBuffer(4096);

      this.buffer.append("<HTML><HEAD><TITLE>");

      this.buffer.append(title);

      this.buffer.append("</TITLE></HEAD><BODY>");

   }

 

   public void add(int style, String text, boolean linebreak)

   {

      switch(style)

      {

         case NORMAL:

            this.buffer.append(text);

            break;

         case HEADING:

            this.buffer.append("<H1>");

            this.buffer.append(text);

            this.buffer.append("</H1>");

            break;

         case LINE:

            this.buffer.append("<HR>");

            break;

         default:

            break;

      }

      if(linebreak)

      {

         buffer.append("<BR>");

      }

   }

 

   public String getPage()

   {

      this.buffer.append("</BODY></HTML>");

      return this.buffer.toString();

   }

}

 

.2.10   

initPara.java

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

 

public class initPara extends HttpServlet {

  private static final String CONTENT_TYPE = "text/html";

  //attribuutit

  private int luvut[];

  private int koko;

  private String otsikko;

  private boolean ok;

 

 

  public void init() throws ServletException {

    //luetaan alustusparametrit, asetettu web.xml tiedostossa

    otsikko = this.getServletConfig().getInitParameter("otsikko");

    String k = this.getServletConfig().getInitParameter("koko");

 

// tai näin:

//  ServletConfig asetukset = getServletConfig();

//  otsikko = asetukset.getInitParameter("otsikko");

//  String k = asetukset.getInitParameter("koko");

 

    if( otsikko == null || k == null ) //testataan onnistuiko luku

    {

      ok = false;

      return;

    }

    else

      ok = true;

 

    try {

    koko = Integer.parseInt( k );

    }

    catch (NumberFormatException e )

    { //voisi tehdä jotain järkevämpääkin

      ok = false;

      otsikko = "WebApplication tutoriaali - koko oltava kokonaisluku!";

      return;

    }

 

    luvut = new int[koko]; //luodaan annetun kokoinen taulukko

 

    for( int i=0; i < koko; i++ )

      luvut[i] = (int) Math.round( 1 / Math.random() ); //1 / (arvo välillä 0 - 1)

  }

 

  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    response.setContentType(CONTENT_TYPE);

    PrintWriter out = response.getWriter();

    out.println("<html>");

 

    out.println("<head><title>" + otsikko + "</title></head>");

    out.println("<body>");

 

    if ( !ok )

    {

      out.println("<H1>Alustusparameteja ei saatu luettua oikein. Tarkista web.xml tiedosto</H1>");

      out.println("</body></html>");

      return;

    }

 

    out.println("<H3 align=\"center\">Arvotut luvut</H3>");

 

    out.println("<HR> <BR> <BR>");

 

    for( int i=0; i < koko; i++ )

      out.println( luvut[i] + "<BR>");

 

    out.println("</body></html>");

  }

 

  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    doGet(request, response); //kutsutaan doGet-metodia

  }

 

  /**Clean up resources*/

  public void destroy() {

    luvut = null; //ei pakollista

  }

 

 /* Esimerkkejä erilaisista tavoista lukea init parametrit

   // This method is called by the servlet container just before this servlet

    // is put into service.

    public void init() throws ServletException {

        ok = true;

        otsikko = "Alustettu";

 

        //getServletContext().log("getinit init");

        // Get the value of an initialization parameter

        //String value = getServletConfig().getInitParameter("param1");

 

        // Get all available intialization parameters

        java.util.Enumeration enum = getServletConfig().getInitParameterNames();

        for (; enum.hasMoreElements(); ) {

            otsikko = "Oli param";

            // Get the name of the init parameter

            String name = (String)enum.nextElement();

            if( name != null )

              otsikko.concat(name);

 

            otsikko.concat(":");

            // Get the value of the init parameter

            String value = getServletConfig().getInitParameter(name);

            if( value != null )

              otsikko.concat(value);

            otsikko.concat("<BR>");

        }

 

        // The int parameters can also be retrieved using the servlet context

        //value = getServletContext().getInitParameter("param1");

    }

*/

 

}

 

 

 

.2.11   

Jep.java

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

 

public class Jep extends HttpServlet {

  private static final String CONTENT_TYPE = "text/html";

  /**Initialize global variables*/

  public void init() throws ServletException {

  }

  /**Process the HTTP Get request*/

  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    response.setContentType(CONTENT_TYPE);

    PrintWriter out = response.getWriter();

    out.println("<html>");

    out.println("<head><title>WebApplication tutoriaali - lomakkeen tietojen tarkistaminen JavaScriptillä</title></head>");

    out.println("<body>");

    String nimi = request.getParameter("nimi");

    String svuosi = request.getParameter("svuosi");

    String email = request.getParameter("email");

 

    out.println("<H3><center>Tämä on Jep servletin doGet()-metodin tulostus </center></H3><BR>");

    out.println("<HR><BR>");

 

    out.println("<table width=\"30%\" border=\"1\" cellspacing=\"20\" " +

    "cellpadding=\"20\" align=\"center\" bgcolor=\"yellow\" >");

 

 

    out.println("<tr><th>");

    out.println("Parametri </th> <th><b> arvo </b>");

    out.println("</th></tr>");

 

    out.println("<tr><td>");

    out.println("nimi </td> <td><b> " + nimi + "</b>");

    out.println("</td></tr>");

 

    out.println("<tr><td>");

    out.println("syntymävuotesi </td> <td> <b> " + svuosi + "</b>");

    out.println("</td></tr>");

 

 

    GregorianCalendar kal = new GregorianCalendar();

    int ika = (kal.getTime().getYear() + 1900) - Integer.parseInt(svuosi);

 

    out.println("<tr><td>");

    out.println("joten ikäsi on </td> <td> <b> " + ika + "</b>");

    out.println("</td></tr>");

 

    out.println("<tr><td>");

    out.println("email </td> <td> <b>" + email + "</b>");

    out.println("</td></tr> </table>");

 

//    out.println("<a href=\"\" onClick = \"this.href=history.go(-1)\"  > takaisin </a> ");

 

    out.println("</body></html>");

  }

  /**Clean up resources*/

  public void destroy() {

  }

}

 

.2.12   

LataaContextServlet.java

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

 

public class LataaContextServlet extends HttpServlet {

  private static final String CONTENT_TYPE = "text/html";

  /**Initialize global variables*/

  public void init() throws ServletException {

    // Testaamista varten (initissä System.out ei tule Tomcat ikkunaan!)

    Aliohj.kirjoitaRivi("c:\\temp\\lataa.txt","Init",true);

    //mihinkähän tulostus menee, luultavasti bittien taivaaseen.

    System.out.println("LataaContext: init()");

 

    //luetaan alustusparametri, katso web.xml

    String titleBegin = this.getServletConfig().getInitParameter("titleBegin");

    System.out.println("titleBegin ==" + titleBegin);

 

    //asetetaan servletcontextiin kaikkien servlettien ja JSP-sivujen saataville

    this.getServletContext().setAttribute("titleBegin", titleBegin);

  }

 

  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    response.setContentType(CONTENT_TYPE);

    PrintWriter out = response.getWriter();

 

    out.println("<html>");

 

    out.println("<body>");

    out.println("<p>Tällä servletillä asetetaan yksi parametri Servlet Contextiin.</p>");

    out.println("</body></html>");

  }

 

}

 

.2.13   

ListRoomsServlet.java

package chat;

 

import javax.servlet.*;

import javax.servlet.http.*;

 

import java.io.*;

import java.util.*;

import java.net.URLEncoder;

 

import chat.*;

 

public class ListRoomsServlet extends HttpServlet

{

 

   public void doGet(HttpServletRequest req, HttpServletResponse res)

               throws IOException

   {

 

      res.setContentType("text/html");

      PrintWriter out = res.getWriter();

 

      String expand = req.getParameter("expand");

      HttpSession session = req.getSession();

      String avatarName = (String) session.getValue("avatarName");

      if (avatarName == null)

      {

         avatarName = "";

      }

 

      writePage(out, expand, avatarName);

      out.close();

   }

 

   private void writePage(PrintWriter out, String expand, String avatarName)

   {

           

      out.println("<HTML>");

      out.println("<HEAD><TITLE>Chat rooms</TITLE></HEAD>");

      out.println("<BODY>");

      out.println("<H1>Chat rooms</H1>");

      out.println("<FORM METHOD=POST ACTION=chatRoom>");

       

      // Add radio boxes for selecting a room

      out.println("Select the room you like to enter " +

         "or click on a name to see the description:<P>");

      RoomList roomList = (RoomList) getServletContext().getAttribute("roomList");

      Enumeration rooms = roomList.getRooms();

      boolean isFirst = true;

      while (rooms.hasMoreElements())

      {

         ChatRoom room = (ChatRoom) rooms.nextElement();

         String roomName = room.getName();

         out.println("<INPUT TYPE=RADIO NAME=roomName VALUE='" +

            roomName + "'" +

            (isFirst ? " CHECKED" : "") + ">" +

            "<A HREF=listRooms?expand=" +

            URLEncoder.encode(roomName) + ">" +

            roomName + "</A><BR>");

         isFirst = false;

          

         // Show description if requested

         if (expand != null && expand.equals(roomName))

         {

            out.println("<BLOCKQUOTE>");

            out.println(room.getDescription());

            out.println("</BLOCKQUOTE><BR>");

         }

      }

       

      // Add a field for the avatar name

      out.println("<P>Enter your name: ");

      out.println("<INPUT NAME=avatarName VALUE='" +

         avatarName + "' SIZE=30>");

       

      // Add submit button

      out.println("<P><INPUT TYPE=SUBMIT VALUE='Enter'>");

      out.println("</FORM>");

      out.println("</BODY></HTML>");

   }

}

 

.2.14   

login.java

package tutoriaali;

 

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

 

public class login extends HttpServlet {

 

  private String target = "/welcome.jsp";

 

  private String getUser(String username, String password) {

 

    // Just return a statice name

    // If this was reality, we would perform a SQL lookup

    return "Bob";

  }

 

  public void init(ServletConfig config)

    throws ServletException {

 

    super.init(config);

  }

 

  public void doGet(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

 

    // If it is a get request forward to doPost()

    doPost(request, response);

  }

 

  public void doPost(HttpServletRequest request,

    HttpServletResponse response)

    throws ServletException, IOException {

 

    // Get the username from the request

    String username = request.getParameter("username");

    // Get the password from the request

    String password = request.getParameter("password");

 

    String user = getUser(username, password);

 

    // Add the fake user to the request

    request.setAttribute("USER", user);

 

    // Forward the request to the target named

    ServletContext context = getServletContext();

 

    System.err.println("Redirecting to " + target);

    RequestDispatcher dispatcher =

      context.getRequestDispatcher(target);

    dispatcher.forward(request, response);

  }

 

  public void destroy() {

  }

}

 

.2.15   

LueContextServlet.java

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

 

public class LueContextServlet extends HttpServlet {

    String otsikonAlku; //

  private static final String CONTENT_TYPE = "text/html";

  /**Initialize global variables*/

 

  public void init() throws ServletException {

    otsikonAlku = (String) this.getServletContext().getAttribute("titleBegin");

//    testausta varten:

    Aliohj.kirjoitaRivi("c:\\temp\\lue.txt","Init",true);

    System.out.println("LueContext: init()");

  }

  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    response.setContentType(CONTENT_TYPE);

    PrintWriter out = response.getWriter();

 

    out.println("<html>");

 

    if ( otsikonAlku != null )

      out.println("<head><title>" + otsikonAlku + " ServletContextin käyttö</title></head>");

    else

      out.println("<head><title>Attribuuttia ei saada luettua servletcontextista</title></head>");

 

    out.println("<body>");

    out.println("<p>Esimerkissä luetaan servletContextista merkkijono, joka"

    + " asetetaan html sivun otsikoksi.</p>");

    out.println("</body></html>");

  }

  /**Process the HTTP Post request*/

  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    doGet(request, response);

  }

}

 

.2.16   

LukuPapu.java

/**

 * Papu.java

 * ---------

 *

 * Yksinkertainen JavaBean, jonka yhden attribuutin arvoa

 * muutetaan papuTesti.jsp sivun avulla.

 *

 * Bean toimii wrapperina yhdelle kokonaisluvulle.

 *

 * Harjoitus 1:

 * Tee bean nimeltä TaulukkoPapu, joka

 * toimii wrapperinä kokonaislukutaulukolle (koko esim. 10).

 *

 * Tee taulukkoPapuTesti.jsp, jolla voidaan lisätä, poistaa sekä tulostaa

 * taulukon arvon.

 *

 * Lisäharjoitus (myöhemmin):

 * Tutki miten saisit pavun luomaan taulukon halutunkokoisena, luominen

 * pitää kuitenkin tapahtua konstruktorissa.

 * (Vihje: config.getInitParameter ja web.xml tiedoston muokkaus)

 *

 * Tehty: 8.1.2003, Pekka Kosonen

 *

 */

package pavut;

 

public class LukuPapu extends Papu

{

   public int muutaLukua( int Luku )

   {

     this.setLuku( luku + Luku);

     return this.getLuku();

   }

 

   public int muutaLukua( String Luku )

   {

     if( Luku != null && Luku != "" )

       return muutaLukua( Integer.parseInt(Luku) );

     return luku; //jos ehto epätosi

   }

}

 

.2.17   

LukuPapu2.java

/**

 * Papu.java

 * ---------

 *

 * Yksinkertainen JavaBean, jonka yhden attribuutin arvoa

 * muutetaan papuTesti.jsp sivun avulla.

 *

 * Bean toimii wrapperina yhdelle kokonaisluvulle.

 *

 * Harjoitus 1:

 * Tee bean nimeltä TaulukkoPapu, joka

 * toimii wrapperinä kokonaislukutaulukolle (koko esim. 10).

 *

 * Tee taulukkoPapuTesti.jsp, jolla voidaan lisätä, poistaa sekä tulostaa

 * taulukon arvon.

 *

 * Lisäharjoitus (myöhemmin):

 * Tutki miten saisit pavun luomaan taulukon halutunkokoisena, luominen

 * pitää kuitenkin tapahtua konstruktorissa.

 * (Vihje: config.getInitParameter ja web.xml tiedoston muokkaus)

 *

 * Tehty: 8.1.2003, Pekka Kosonen

 *

 */

package pavut;

 

public class LukuPapu2 extends Papu

{

   private int luku;

 

   public LukuPapu2()

   {

      luku = 0;

   }

 

   public int getLuku()

   {

      return luku;

   }

 

   public void setLuku( int Luku )

   {

     luku = Luku;

   }

 

   public int muutaLukua( int Luku )

   {

     luku += Luku;

     return luku;

   }

 

   public int muutaLukua( String Luku )

   {

     if( Luku != null && Luku != "" )

       return muutaLukua( Integer.parseInt(Luku) );

     return luku; //jos ehto epätosi

   }

}

 

.2.18   

Moi.java

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

 

public class Moi extends HttpServlet {

  private static final String CONTENT_TYPE = "text/html";

  /**Initialize global variables*/

  public void init() throws ServletException {

  }

  /**Process the HTTP Get request*/

  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    response.setContentType(CONTENT_TYPE);

    PrintWriter out = response.getWriter();

    out.println("<html>");

    out.println("<head><title>Moi</title></head>");

    out.println("<body>");

    out.println("<p>Moi.</p>");

    out.println("</body></html>");

  }

  /**Clean up resources*/

  public void destroy() {

  }

}

 

.2.19   

MyDate.java

/*

 *

 * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.

 *

 * This software is the proprietary information of Sun Microsystems, Inc.

 * Use is subject to license terms.

 *

 */

 

 

import java.text.DateFormat;

import java.util.*;

 

public class MyDate {

   Date today;

   DateFormat dateFormatter;

 

   public MyDate() {

      today = new Date();

   }

 

   public String getDate() {

      return dateFormatter.format(today);

   }

 

   public void setLocale(Locale l) {

      dateFormatter = DateFormat.getDateInstance(DateFormat.FULL, l);

   }

 

}

 

.2.20   

MyLocales.java

/*

 *

 * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.

 *

 * This software is the proprietary information of Sun Microsystems, Inc.

 * Use is subject to license terms.

 *

 */

 

import java.util.*;

import java.text.DateFormat;

 

public class MyLocales {

   HashMap locales;

   ArrayList localeNames;

 

   public MyLocales() {

      locales = new HashMap();

      localeNames = new ArrayList();

      Locale list[] = DateFormat.getAvailableLocales();

      for (int i = 0; i < list.length; i++) {

         locales.put(list[i].getDisplayName(), list[i]);

         localeNames.add(list[i].getDisplayName());

      }

      Collections.sort(localeNames);

   }

   public Collection getLocaleNames() {

      return localeNames;

   }

 

   public Locale getLocale(String displayName) {

      return (Locale)locales.get(displayName);

   }

}

 

.2.21   

Papu.java

/**

 * Papu.java

 * ---------

 * Yläluokka tutoriaalin osassa 2 käytetyille pavuille.

 *

 * Tehty: 8.1.2003, Pekka Kosonen

 *

 */

package pavut;

 

public class Papu

{

   protected int luku;

 

   public Papu()

   {

      luku = 1;

   }

 

   public int getLuku()

   {

      return luku;

   }

 

   public void setLuku( int Luku )

   {

     luku = Luku;

   }

}

 

.2.22   

RoomList.java

package chat;

 

import java.util.*;

 

public class RoomList

{

   private Hashtable chatRooms = new Hashtable();

 

   public void addRoom(ChatRoom room)

   {

      chatRooms.put(room.getName(), room);

   }

 

   public ChatRoom getRoom(String name)

   {

      return (ChatRoom) chatRooms.get(name);

   }

 

   public Enumeration getRooms()

   {

      return chatRooms.elements();

   }

 

   public void removeRooms(String[] rooms)

   {

      for (int i = 0; i < rooms.length; i++)

      {

         chatRooms.remove(rooms[i]);

      }

   }

}

 

.2.23   

selain.java

/**

 * Selain.java

 *

 * JavaBean, jolla saat selville selaimen version (IE / NS4 /NS6).

 * (ei tosin kovin "beanimainen")

 *

 *

 * Tehty: 23.8.2002, Pekka Kosonen

 * Muokattu: 9.1.2003, Pekka Kosonen

 *  - kommentoitu

 */

package pavut;

 

import javax.servlet.http.HttpServletRequest;

 

 

public class Selain{

  private HttpServletRequest request = null;

  private String useragent = null;

  private boolean netEnabled = false;

  private boolean ie = false;

  private boolean ns7 = false;

  private boolean ns6 = false;

  private boolean ns4 = false;

 

  public Selain() {

  }

 

  public void setRequest(HttpServletRequest req) {

    request = req;

    useragent = request.getHeader("User-Agent");

    String user = useragent.toLowerCase();

    if(user.indexOf("msie") != -1) //etsitään osamerkkijonoa, -1 jos ei löydy

    {

        ie = true;

    }

    else if(user.indexOf("netscape/7") != -1)

    {

        ns7 = true;

    }

    else if(user.indexOf("netscape/6") != -1)

    {

        ns6 = true;

    }

    else if(user.indexOf("netscape/4") != -1) //ei testattu toimiiko

    {

        ns4 = true;

    }

 

    if(user.indexOf(".net clr") != -1)

      netEnabled = true;

  }

 

  public String getUseragent() {

    return useragent;

  }

 

  public boolean isNetEnabled() {

    return netEnabled;

  }

 

  public boolean isIE() {

    return ie;

  }

 

  public boolean isNS7() {

    return ns7;

  }

 

  public boolean isNS6() {

    return ns6;

  }

 

  public boolean isNS4() {

    return ns4;

  }

 

}

 

.2.24   

SendEmailGroup.java

/**

 *

 */

 

package sendmail;

 

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

import java.sql.*;

import javax.mail.*;

import javax.mail.internet.*;

 

 

public class SendEmailGroup extends HttpServlet {

  private String driver = "sun.jdbc.odbc.JdbcOdbcDriver";

  private String db = "jdbc:odbc:emailgroup";

  private String table = "ryhmat";

  private String table2 = "osoitteet";

 

  private Connection conn = null;

  private Statement stmt = null;

  private ResultSet rs = null;

  private PreparedStatement preparedStmt = null;

  private PreparedStatement preparedStmt2 = null;

 

//  private String smtpHost = "mail.jypoly.fi"; //TOIMII

 

  public void init() throws ServletException {

    try {

      connect();

    } catch (Exception e) { log("servletemalgroup ei lähde käyntiin", e); }

  }

 

  private synchronized void connect() throws Exception {

    if( conn == null || conn.isClosed() )

    {

      Class.forName(driver).newInstance();

      conn = DriverManager.getConnection(db);

      stmt = conn.createStatement();

 

      preparedStmt = conn.prepareStatement("SELECT ryhmaID FROM " + table +

      " WHERE nimi=(?)");

 

      preparedStmt2 = conn.prepareStatement("SELECT osoite FROM " + table2 +

      " WHERE ryhmaID=(?)");

    }

  }

 

  public void doGet(HttpServletRequest request, HttpServletResponse response)

                             throws ServletException, IOException

  {

    //luetaan ryhman nimi, sitten kaikki osoitteet jotka on ryhmaan l

    //liitetty ja etiäpäin SendMail servletille.

    PrintWriter out = response.getWriter();

 

    out.println("<html><head><title> Webapplication tutoriaali - Ryhmäpostit</title></head>");

    out.println("<body>");

 

    String ryhma = request.getParameter("ryhma");

    int ryhmaID = -1;

 

    if( ryhma == null || ryhma == "")

    {

      out.println("parametrilla ryhma ei ole arvoa. Posteja ei lähetetty.");

      out.close();

      return;

    }

 

    StringBuffer osoitteet = new StringBuffer("");

 

    String virheid = "0";

    synchronized (this) {

      try {

        virheid = "1";

        preparedStmt.setString(1, ryhma);

        rs = preparedStmt.executeQuery();

 

        if ( !rs.next() ) //onko tietuetta

        {

          out.print("Ei tämän nimistä ryhmää.");

          out.close();

          return;

        }

        virheid = "2";

        ryhmaID = rs.getInt("ryhmaID");

 

        preparedStmt2.setInt(1, ryhmaID);

        rs = preparedStmt2.executeQuery();

 

        virheid = "3";

        if ( !rs.next() )

        {

          out.print("Ei osoitteita. Postia ei lähetetty.");

          return;

        }

        virheid = "4";

        //osoitteet pilkulla eroteltuna

        do {

          String osoite = rs.getString("osoite");

          osoitteet.append( osoite );

          osoitteet.append( ",");

        } while ( rs.next() );

 

      //pilkku pois lopusta

      osoitteet.deleteCharAt( osoitteet.length() - 1 );

      System.out.print("osoitteet:" + osoitteet.toString() );

 

      String to = osoitteet.toString();

 

      //sitten asetetaan requestin attribuutti to uusiksi

      request.setAttribute("to", to);

 

      //lopuksi käytetään SendMail servlettiä

      RequestDispatcher rd =

      this.getServletContext().getRequestDispatcher("/servlet/sendmail.SendMail");

 

      //incluudataan tulostukset

      rd.include(request, response);

 

      //katso mitä eroa on kun käytät forwardia.

      //rd.forward(request, response);

 

      out.print("</body></html>");

    }

    catch ( Exception e )

    {

      out.print("Sähköpostin lähetys ei onnistunut. virheid " + virheid

      + "<BR>" + e.toString() );

    }

 }

}

  public void doPost(HttpServletRequest request, HttpServletResponse response)

                             throws ServletException, IOException

  {

    doGet(request, response);

  }

 

  public void destroy() {

    try {

      conn.close();

    } catch( SQLException e) { }

    conn = null;

  }

 

}

 

.2.25   

SendMail.java

package sendmail;

 

import javax.mail.*;

import javax.mail.internet.*;

 

import javax.servlet.*;

import javax.servlet.http.*;

 

import java.io.*;

import java.util.*;

 

public class SendMail extends HttpServlet {

 

   private String smtpHost = "mail.jypoly.fi";

 

   public void doPost( HttpServletRequest request, HttpServletResponse response)

   throws ServletException, java.io.IOException

   {

      String from = request.getParameter("from");

      String to = request.getParameter("to");

 

      if( to == null )

        to = (String) request.getAttribute("to"); //ryhmäposti käyttää

 

      String cc = request.getParameter("cc");

      String bcc = request.getParameter("bcc");

      String subject = request.getParameter("subject");

      String text = request.getParameter("text");

 

      String status = "Sendmail:";

      System.out.println(status + to);

 

      try {

         // Luodaan JavaMail sessio

         java.util.Properties properties = System.getProperties();

         properties.put("mail.smtp.host", smtpHost);

 

         Session session = Session.getInstance(properties, null);

 

         // Kasataan viesti

         MimeMessage message = new MimeMessage(session);

 

 

         Address fromAddress = new InternetAddress(from);

         message.setFrom(fromAddress);

 

         //parsitaan ja asetetaan vastaanottajien osoitteet

         Address[] toAddresses = InternetAddress.parse(to);

         message.setRecipients(Message.RecipientType.TO,toAddresses);

 

 

         if( cc != null )

         {

           Address[] ccAddresses = InternetAddress.parse(cc);

           message.setRecipients(Message.RecipientType.CC,ccAddresses);

         }

 

         if( bcc != null )

         {

           Address[] bccAddresses = InternetAddress.parse(bcc);

           message.setRecipients(Message.RecipientType.BCC,bccAddresses);

         }

         if( subject != null )

         {

           message.setSubject(subject);

         }

         if( text != null )

         {

           message.setText(text);

         }

 

         Transport.send(message);

 

         status = "Viestisi lähettiin.";

 

         } catch (AddressException e) {

            status = "Virheellinen osoite.<BR>" + e.toString() ;

      System.out.println(status);

         } catch (SendFailedException e) {

            status = "Viestin lähettäminen epäonnistui.<BR>"+ e.toString();

      System.out.println(status);

         } catch (MessagingException e) {

            status = "Viestin lähettäminen epäonnistui.<BR>"+ e.toString();

      System.out.println(status);

         }

 

      response.setContentType("text/html");

 

      PrintWriter out = response.getWriter();

 

      out.println("<html><head><title>"+status + "</title></head>");

      out.println("<body><p>" + status + "</p></body></html>");

 

      out.close();

   }

 

   public void doGet(HttpServletRequest request, HttpServletResponse response)

   throws ServletException, java.io.IOException

   {

      doPost(request, response);

   }

}

 

.2.26   

ServletApplet.java

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

import java.io.*;

import java.net.*;

import javax.swing.*;

 

public class ServletApplet extends Applet implements ActionListener {

 

   TextField sql;

   TextArea tulos;

   Button buttonAja;

 

   public void init() {

      Panel p1 = new Panel();

      p1.setLayout(new FlowLayout(FlowLayout.LEFT));

 

      p1.add(new Label("SQL:"));

 

      sql = new TextField("SELECT * FROM roles", 50);

      p1.add(sql);

 

      buttonAja = new Button("Suorita kysely");

      buttonAja.addActionListener(this);

      p1.add(buttonAja);

 

      add("North", p1);

 

      tulos = new TextArea(10, 80);

      add("Center", tulos);

   }

 

   public void executeQuery() {

 

      //luetaan SQL

      String qryString = sql.getText();

      tulos.setText("Tulokset:");

 

      try {

         // servletin URL

//        URL url = new URL("http://192.168.38.64/tutor/servlet/AppletServlet");

 

        //"oikeasti käytettäessä" korvaa localhost palvelimesi ip:llä

        URL url = new URL("http","localhost","/tutor/servlet/AppletServlet");

 

         //kaikki HTTP-pyynnöt pitää käsitellä encode metodilla

         String qry = URLEncoder.encode("qry") + "=" +

                             URLEncoder.encode(qryString);

 

         //asetetaan vaadittavat asetukset

         URLConnection uc = url.openConnection();

         uc.setDoOutput(true);

         uc.setDoInput(true);

         uc.setUseCaches(false);

         uc.setRequestProperty("Content-type",

                             "application/x-www-form-urlencoded");

 

         // lähetetään pyynnöt palvelimelle (eli ko. servletille)

         DataOutputStream dos = new DataOutputStream(uc.getOutputStream());

         dos.writeBytes(qry);

         dos.flush();

         dos.close();

 

         InputStreamReader in = new InputStreamReader(uc.getInputStream());

 

         //tyhjennetään aiemmat tulokset

         //tulos.setText("");

 

         int chr = in.read();

 

         //luetaan vastaus palvelimelta, eli mitä servletti tulostaa

         //HttpServletResponse.getWriter() virtaan (eli out)

         while (chr != -1) {

            tulos.append(String.valueOf((char) chr));

            chr = in.read();

         }

         in.close();

 

      } catch(MalformedURLException e) {

         tulos.setText(e.toString());

      } catch(IOException e) {

         tulos.setText(e.toString());

      }

   }

   //aina kun jotain tapahtuu niin suoritetaan, kuuntelijana vain buttonAja

   public void actionPerformed(ActionEvent ae) {

      executeQuery();

   }

}

 

.2.27   

SessionInfoServlet.java

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

 

public class SessionInfoServlet extends HttpServlet {

  private static final String CONTENT_TYPE = "text/html";

  /**Initialize global variables*/

  public void init() throws ServletException {

  }

  /**Process the HTTP Get request*/

  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    response.setContentType(CONTENT_TYPE);

    response.setHeader("pragma", "no-cache"); //ei välimuistia

    PrintWriter out = response.getWriter();

 

    HttpSession session = request.getSession(false); //ei luoda sessiota

 

    out.println("<html>");

    out.println("<head><title>Webapplication tutoriaali - SessionInfoServlet</title></head>");

    out.println("<body>");

    out.println("<p>");

 

    if( session != null ) //onko sessio olemassa, ei luoda tässä

    {

      out.println("Uusi " + session.isNew()+ "<BR>" );

      out.println( "ID " + session.getId() + "<BR>");

      out.println( "Luotu " + session.getCreationTime() + "<BR>");

      out.println( "Käsitelty viimeksi " + session.getLastAccessedTime() + "<BR>");

      out.println( "Voimassa " + session.getMaxInactiveInterval() + "<BR>");

      Enumeration e = session.getAttributeNames();

 

      out.println("Sessiolla on seuraavat attribuutit:<BR>" );

      while ( e.hasMoreElements() )

      {

        out.println( e.nextElement()+ "<BR>");

      }

    }

    else

    {

      out.println("<h3>Sessiota ei ole.</h3>");

    }

 

    out.println("</p>");

    out.println("</body></html>");

  }

  /**Process the HTTP Post request*/

  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    doGet(request, response);

  }

  /**Clean up resources*/

  public void destroy() {

  }

}

 

.2.28   

ShoppingCart.java

/*

  public java.lang.String encodeURL(java.lang.String url)

  Encodes the specified URL by including the session ID in it, or,

  if encoding is not needed, returns the URL unchanged.

 

  The implementation of this method includes the logic to determine whether the

  session ID needs to be encoded in the URL. For example, if the browser

  supports cookies, or session tracking is turned off, URL encoding is

  unnecessary. For robust session tracking, all URLs emitted by a servlet

  should be run through this method. Otherwise, URL rewriting cannot be used

  with browsers which do not support cookies.Parameters:url - the url to be

  encoded.Returns:the encoded URL if encoding is needed;

  the unchanged URL otherwise.

 

  Aseta cookies pois päältä, käynnistä selain uudestaan ja testaa

 

  session.jsp

*/

import java.util.*;

 

//   Servlet Libraries

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.net.URL;

import util.*;

 

public class ShoppingCart extends HttpServlet

{

 

   public void doPost(HttpServletRequest req, HttpServletResponse res)

            throws ServletException, IOException

   {

 

      // otetaan session objekti, luodaan jos ei ole olemassa

      HttpSession session = req.getSession(true);

 

      //   Luetaan yksi session attribuutti

      Integer itemCount = (Integer) session.getValue("itemCount");

 

      //  Jos sessio on uusi (luotu edellä), niin itemCount oliota ei ole

      if (itemCount == null)

      {

         itemCount = new Integer(0);

      }

 

      PrintWriter out = res.getWriter();

      res.setContentType("text/html");

 

 

      String[] itemsSelected;

      String itemName;

      itemsSelected = req.getParameterValues("item");

 

      //Jos oltiin valittu ostoksia, niin lisätään ne sessioon

      if (itemsSelected != null)

      {

         for (int i=0 ; i < itemsSelected.length ; i++)

         {

            itemName = itemsSelected[i];

            itemCount = new Integer(itemCount.intValue() + 1);

 

            session.putValue("Item" + itemCount, itemName);

 

            session.putValue("itemCount", itemCount);

         }

      }

 

      HTML h = new HTML("Shopping Cart Contents");

      h.add(HTML.HEADING, "Items currently in your cart", false);

      h.add(HTML.LINE, "", false);

 

      for(int i = 1; i <= itemCount.intValue(); i++)

      {

         String item = (String) session.getValue("Item" + i);

         h.add(HTML.NORMAL, item, true);

 

      }

 

      h.add(HTML.LINE, "", false);

      h.add(HTML.NORMAL, "<A HREF=\"../ShoppingCart.html\">Back to the shop</A>", true);

 

      //URL url = new URL("http", "localhost", "tutor\\session.jsp");

      //muuta suhteelliseksi

      String URL = "../session.jsp";

      String encodedURL = res.encodeURL( URL);

 

 

      h.add(HTML.NORMAL, "<A HREF=\"" + encodedURL + "\">sessiotiedot JSP </A>" , true );

      h.add(HTML.NORMAL, "<A HREF=\"" + URL + "\">sessiotiedot JSP(ei encodedURL)</A>" , true );

 

      URL = "SessionInfoServlet";

      encodedURL = res.encodeURL( URL );

 

      h.add(HTML.NORMAL, "<A HREF=\"" + encodedURL + "\">sessiotiedot servlet</A>" , true );

      h.add(HTML.NORMAL, "<A HREF=\"" + URL + "\">sessiotiedot servlet(ei encodedURL)</A>" , true );

      out.println(h.getPage());

      out.close();

   }

}

 

.2.29   

StringUtils.java

package chat;

 

/**

 * This class includes a static method for replacing a substring

 * with another substring in a String. Even though this is a very

 * common operation neither the String nor StringBuffer class

 * provides such a method.

 *

 * You can use the StringUtils class in your application like this:

 * import com.wrox.pssjp.util.StringUtils;

 *

 *   public class MyApp {

 *

 *                              public void myMethod() {

 *                                                        String hello = "Hello World!";

 *                                                        hello = StringUtils.replaceInString(hello, "World", "Java");

 *                              }

 *   }

 *

 * @author Hans Bergsten, Gefion software (www.gefionsoftware.com)

 */

public class StringUtils {

 

    /**

     * Returns a String with all occurrences of the String from

     * replaced by the String to.

     *

     * @return The new String

     */

    public static String replaceInString(String in, String from, String to) {

        StringBuffer sb = new StringBuffer(in.length() * 2);

        String posString = in.toLowerCase();

        String cmpString = from.toLowerCase();

        int i = 0;

        boolean done = false;

        while (i < in.length() && !done) {

            int start = posString.indexOf(cmpString, i);

            if (start == -1) {

                done = true;

            }

            else {

                sb.append(in.substring(i, start) + to);

                i = start + from.length();

            }

        }

        if (i < in.length()) {

            sb.append(in.substring(i));

        }

        return sb.toString();   

   }

}

 

.2.30   

TitleTag.java

package tagit;

 

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

import java.io.*;

 

public class TitleTag extends TagSupport {

  String titleEnd = null;

 

  public int doStartTag() {

    try {

      JspWriter out = pageContext.getOut();

      out.print("<title> Webapplication tutoriaali ");

 

      if( titleEnd != null)

        out.print("- " + titleEnd);

 

      out.print("</title>");

    } catch(IOException ioe) {

      System.out.println("Error in ExampleTag: " + ioe);

    }

    return(SKIP_BODY);

  }

 

  public void setTitleEnd(String jono)

  {

    titleEnd = jono;

  }

}

 

.2.31   

ViallinenPapu.java

/**

 * ViallinenPapu.java

 * ------------------

 *

 * Papu heittää poikkeuksen vika metodia kutsuttaessa

 *

 * Tehty: 9.1.2003, Pekka Kosonen

 */

 

 

 

package pavut;

 

public class ViallinenPapu {

 

  public ViallinenPapu()

  {

 

  }

 

  public void vika() throws Exception

  {

    Exception e = new Exception("Papu on viallinen");

    throw e;

  }

}