<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="et">
	<id>http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=Kasutajaliidesed_lab_2_java_server_example</id>
	<title>Kasutajaliidesed lab 2 java server example - Redigeerimiste ajalugu</title>
	<link rel="self" type="application/atom+xml" href="http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=Kasutajaliidesed_lab_2_java_server_example"/>
	<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Kasutajaliidesed_lab_2_java_server_example&amp;action=history"/>
	<updated>2026-10-29T02:00:25Z</updated>
	<subtitle>Selle lehekülje redigeerimiste ajalugu</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=Kasutajaliidesed_lab_2_java_server_example&amp;diff=7891&amp;oldid=prev</id>
		<title>Tammet – 3. aprill 2006, kell 15:45</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Kasutajaliidesed_lab_2_java_server_example&amp;diff=7891&amp;oldid=prev"/>
		<updated>2006-04-03T15:45:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Uus lehekülg&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
import java.io.*;&lt;br /&gt;
import java.net.*;&lt;br /&gt;
import java.util.StringTokenizer;&lt;br /&gt;
import javax.xml.transform.*;&lt;br /&gt;
import javax.xml.transform.stream.*;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/** &lt;br /&gt;
 * This class implements a multithreaded simple HTTP &lt;br /&gt;
 * server that supports the GET request method.&lt;br /&gt;
 * It listens on port 8080, waits client requests, and &lt;br /&gt;
 * serves documents.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
public class HttpServer {&lt;br /&gt;
   // The port number which the server &lt;br /&gt;
   // will be listening on&lt;br /&gt;
   public static final int HTTP_PORT = 8080;&lt;br /&gt;
&lt;br /&gt;
   public ServerSocket getServer() throws Exception {&lt;br /&gt;
      return new ServerSocket(HTTP_PORT);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // multi-threading -- create a new connection &lt;br /&gt;
   // for each request&lt;br /&gt;
   public void run() {&lt;br /&gt;
      ServerSocket listen;&lt;br /&gt;
      try {&lt;br /&gt;
         listen = getServer();&lt;br /&gt;
         while(true) {&lt;br /&gt;
            Socket client = listen.accept();&lt;br /&gt;
            ProcessConnection cc = new ProcessConnection(client);&lt;br /&gt;
         }&lt;br /&gt;
      } catch(Exception e) {&lt;br /&gt;
         System.out.println(&amp;quot;Exception: &amp;quot;+e.getMessage());&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // main program&lt;br /&gt;
   public static void main(String argv[]) throws Exception {&lt;br /&gt;
      HttpServer httpserver = new HttpServer();&lt;br /&gt;
      httpserver.run();&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class ProcessConnection extends Thread {&lt;br /&gt;
   Socket client;&lt;br /&gt;
   BufferedReader is;&lt;br /&gt;
   DataOutputStream os;&lt;br /&gt;
   &lt;br /&gt;
   public ProcessConnection(Socket s) { // constructor&lt;br /&gt;
      client = s;&lt;br /&gt;
      try {&lt;br /&gt;
         is = new BufferedReader(new InputStreamReader&lt;br /&gt;
           (client.getInputStream()));&lt;br /&gt;
         os = new DataOutputStream(client.getOutputStream());&lt;br /&gt;
      } catch (IOException e) {&lt;br /&gt;
         System.out.println(&amp;quot;Exception: &amp;quot;+e.getMessage());&lt;br /&gt;
      }&lt;br /&gt;
      this.start(); // Thread starts here...this start()       will call run()&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   public void run() {&lt;br /&gt;
      try {&lt;br /&gt;
         // get a request and parse it.&lt;br /&gt;
         String request = is.readLine();&lt;br /&gt;
         System.out.println( &amp;quot;Request uus: &amp;quot;+request );&lt;br /&gt;
         StringTokenizer st = new StringTokenizer( request );&lt;br /&gt;
            if ( (st.countTokens() &amp;gt;= 2) &amp;amp;&amp;amp; &lt;br /&gt;
              st.nextToken().equals(&amp;quot;GET&amp;quot;) ) {                     &lt;br /&gt;
               if ( (request = &lt;br /&gt;
                 st.nextToken()).startsWith(&amp;quot;/&amp;quot;) )&lt;br /&gt;
                  request = request.substring( 1 );&lt;br /&gt;
               if ( request.equals(&amp;quot;&amp;quot;) )&lt;br /&gt;
                  request = request + &amp;quot;index.html&amp;quot;;&lt;br /&gt;
               System.out.println( &amp;quot;listing: &amp;quot;+request );                             &lt;br /&gt;
               // check request&lt;br /&gt;
               &lt;br /&gt;
               String[] tmp;&lt;br /&gt;
               &lt;br /&gt;
               tmp=split(request,&amp;quot;?&amp;quot;);&lt;br /&gt;
               &lt;br /&gt;
               if (tmp.length&amp;gt;1) {&lt;br /&gt;
                   &lt;br /&gt;
                  //System.out.println(&amp;quot;tmp: &amp;quot;+tmp); &lt;br /&gt;
                  tmp=split(tmp[1],&amp;quot;&amp;amp;&amp;quot;);&lt;br /&gt;
                  System.out.println(&amp;quot;tmp1: &amp;quot;+tmp[0]);  &lt;br /&gt;
                  addparty(os,tmp); &lt;br /&gt;
               }    &lt;br /&gt;
               &lt;br /&gt;
               &lt;br /&gt;
               //&lt;br /&gt;
               if (request.equals(&amp;quot;listing&amp;quot;)) {                   &lt;br /&gt;
                 listing(os);  &lt;br /&gt;
               } else if (request.equals(&amp;quot;allparties&amp;quot;)) {&lt;br /&gt;
                 allparties(os);                   &lt;br /&gt;
               } else if (request.equals(&amp;quot;addparty&amp;quot;)) {                                      &lt;br /&gt;
                 addparty(os,tmp);       &lt;br /&gt;
               } else {  &lt;br /&gt;
                 File f = new File(request);&lt;br /&gt;
                 shipDocument(os, f);&lt;br /&gt;
               }   &lt;br /&gt;
            } else {&lt;br /&gt;
               os.writeBytes( &amp;quot;400 Bad Request&amp;quot; );&lt;br /&gt;
            } &lt;br /&gt;
            client.close();&lt;br /&gt;
      } catch (Exception e) {&lt;br /&gt;
         System.out.println(&amp;quot;Exception: &amp;quot; + &lt;br /&gt;
           e.getMessage());&lt;br /&gt;
      } &lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
  /**&lt;br /&gt;
   * Read the requested file and ship it &lt;br /&gt;
   * to the browser if found.&lt;br /&gt;
   */&lt;br /&gt;
   public static void shipDocument(DataOutputStream out, File f) throws Exception {&lt;br /&gt;
       try {&lt;br /&gt;
          DataInputStream in = new &lt;br /&gt;
            DataInputStream(new FileInputStream(f));&lt;br /&gt;
          int len = (int) f.length();&lt;br /&gt;
          byte[] buf = new byte[len];&lt;br /&gt;
          in.readFully(buf);&lt;br /&gt;
          in.close();&lt;br /&gt;
          out.writeBytes(&amp;quot;HTTP/1.0 200 OK\r\n&amp;quot;);&lt;br /&gt;
          out.writeBytes(&amp;quot;Content-Length: &amp;quot; + &lt;br /&gt;
            f.length() +&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
          out.writeBytes(&amp;quot;Content-Type: text/html\r\n\r\n&amp;quot;);&lt;br /&gt;
          out.write(buf);&lt;br /&gt;
          out.flush();&lt;br /&gt;
       } catch (Exception e) {&lt;br /&gt;
          out.writeBytes(&amp;quot;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;error&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;\r\n\r\n&amp;quot;);&lt;br /&gt;
          out.writeBytes(&amp;quot;HTTP/1.0 400 &amp;quot; + e.getMessage() + &amp;quot;\r\n&amp;quot;);&lt;br /&gt;
          out.writeBytes(&amp;quot;Content-Type: text/html\r\n\r\n&amp;quot;);&lt;br /&gt;
          out.writeBytes(&amp;quot;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;);&lt;br /&gt;
          out.flush();&lt;br /&gt;
       } finally {&lt;br /&gt;
          out.close();&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
public static void listing(DataOutputStream out) {   &lt;br /&gt;
    String ls_str;&lt;br /&gt;
    String res=&amp;quot;&amp;quot;;&lt;br /&gt;
    try {&lt;br /&gt;
      out.writeBytes(&amp;quot;HTTP/1.0 200 OK\r\n&amp;quot;);          &lt;br /&gt;
        &lt;br /&gt;
      Process myprocess = Runtime.getRuntime().exec(&amp;quot;trydir.bat&amp;quot;);     &lt;br /&gt;
      DataInputStream ls_in = new DataInputStream(&lt;br /&gt;
                                          myprocess.getInputStream());&lt;br /&gt;
      try {&lt;br /&gt;
        while ((ls_str = ls_in.readLine()) != null) {&lt;br /&gt;
            res+=(&amp;quot;&amp;lt;a href=\&amp;quot;redigeeri.cgi?&amp;quot;);&lt;br /&gt;
            res+=(ls_str);&lt;br /&gt;
            res+=(&amp;quot;\&amp;quot;&amp;gt;&amp;quot;);&lt;br /&gt;
            res+=(&amp;quot;R&amp;lt;/a&amp;gt; &amp;quot;);&lt;br /&gt;
            res+=(&amp;quot;&amp;lt;a href=\&amp;quot;&amp;quot;);&lt;br /&gt;
	    res+=(ls_str);&lt;br /&gt;
            res+=(&amp;quot;\&amp;quot;&amp;gt;&amp;quot;);&lt;br /&gt;
            res+=(ls_str);&lt;br /&gt;
            res+=(&amp;quot;&amp;lt;/a&amp;gt;&amp;quot;);&lt;br /&gt;
            res+=(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
      } catch (IOException e) {&lt;br /&gt;
	System.out.println(&amp;quot;miski viga!&amp;quot;); &lt;br /&gt;
        e.printStackTrace();         &lt;br /&gt;
      }&lt;br /&gt;
    } catch (Exception err) {&lt;br /&gt;
     err.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    try {&lt;br /&gt;
      out.writeBytes(&amp;quot;Content-Length: &amp;quot; + res.length() +&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
      out.writeBytes(&amp;quot;content-type: text/html\r\n&amp;quot;);&lt;br /&gt;
      out.writeBytes(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
      out.writeBytes(res);&lt;br /&gt;
      out.close();  &lt;br /&gt;
    } catch (Exception e) { &lt;br /&gt;
    }  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
public static void allparties(DataOutputStream out) throws Exception {     &lt;br /&gt;
&lt;br /&gt;
    URL yahoo = &lt;br /&gt;
     new URL(&amp;quot;http://dijkstra.cs.ttu.ee:7777/xstone/xfuns/party_all&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
       &lt;br /&gt;
	BufferedReader in = new BufferedReader(&lt;br /&gt;
				new InputStreamReader(&lt;br /&gt;
				yahoo.openStream()));&lt;br /&gt;
&lt;br /&gt;
	String inputLine;&lt;br /&gt;
    &lt;br /&gt;
  // create File and Stream objects&lt;br /&gt;
  //File dataFile  = new File(&amp;quot;fruit.xml&amp;quot;);  // data&lt;br /&gt;
  File styleFile = new File(&amp;quot;parties.xsl&amp;quot;);  // stylesheet&lt;br /&gt;
  //InputStream dataStream = new FileInputStream(dataFile);&lt;br /&gt;
  InputStream styleStream = new FileInputStream(styleFile);&lt;br /&gt;
  &lt;br /&gt;
  // create XSLT Source and Result objects&lt;br /&gt;
  Source data = new StreamSource(in);&lt;br /&gt;
  Source style = new StreamSource(styleStream);&lt;br /&gt;
  Result output = new StreamResult(out);&lt;br /&gt;
  &lt;br /&gt;
  // create Transformer and perform the tranfomation&lt;br /&gt;
  Transformer xslt =&lt;br /&gt;
    TransformerFactory.newInstance().newTransformer(style);&lt;br /&gt;
    &lt;br /&gt;
  xslt.transform(data, output); &lt;br /&gt;
 &lt;br /&gt;
  /*&lt;br /&gt;
    &lt;br /&gt;
	while ((inputLine = in.readLine()) != null) {&lt;br /&gt;
	   out.writeBytes(inputLine);&lt;br /&gt;
    } &lt;br /&gt;
  */  &lt;br /&gt;
  in.close();&lt;br /&gt;
       &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public static void addparty(DataOutputStream out, String[] splitargs) &lt;br /&gt;
     throws Exception {     &lt;br /&gt;
&lt;br /&gt;
    String xstone;&lt;br /&gt;
    String args;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
          System.out.println(&amp;quot;addp starts&amp;quot;);&lt;br /&gt;
         &lt;br /&gt;
    xstone=&amp;quot;http://dijkstra.cs.ttu.ee:7777/xstone/xfuns/party_insert?&amp;quot;;&lt;br /&gt;
    args=&amp;quot;1&amp;amp;2&amp;amp;&amp;quot;+splitargs[0]+&amp;quot;&amp;amp;&amp;quot;+splitargs[1]+&lt;br /&gt;
          &amp;quot;&amp;amp;16-05-1965&amp;amp;17-05-1965&amp;amp;7&amp;amp;8&amp;amp;9&amp;amp;10&amp;amp;11&amp;amp;12&amp;quot;;&lt;br /&gt;
    xstone=xstone+args;&lt;br /&gt;
         &lt;br /&gt;
          System.out.println(xstone);&lt;br /&gt;
    &lt;br /&gt;
    URL yahoo = new URL(xstone);&lt;br /&gt;
               &lt;br /&gt;
	BufferedReader in = new BufferedReader(&lt;br /&gt;
				new InputStreamReader(&lt;br /&gt;
				yahoo.openStream()));&lt;br /&gt;
&lt;br /&gt;
	String inputLine;&lt;br /&gt;
    &lt;br /&gt;
  // create File and Stream objects&lt;br /&gt;
  //File dataFile  = new File(&amp;quot;fruit.xml&amp;quot;);  // data&lt;br /&gt;
  File styleFile = new File(&amp;quot;insert_party_result.xsl&amp;quot;);  // stylesheet&lt;br /&gt;
  //InputStream dataStream = new FileInputStream(dataFile);&lt;br /&gt;
  InputStream styleStream = new FileInputStream(styleFile);&lt;br /&gt;
  &lt;br /&gt;
  // create XSLT Source and Result objects&lt;br /&gt;
  Source data = new StreamSource(in);&lt;br /&gt;
  Source style = new StreamSource(styleStream);&lt;br /&gt;
  Result output = new StreamResult(out);&lt;br /&gt;
  &lt;br /&gt;
  // create Transformer and perform the tranfomation&lt;br /&gt;
  Transformer xslt =&lt;br /&gt;
    TransformerFactory.newInstance().newTransformer(style);&lt;br /&gt;
    &lt;br /&gt;
  xslt.transform(data, output); &lt;br /&gt;
 &lt;br /&gt;
  /*&lt;br /&gt;
    &lt;br /&gt;
	while ((inputLine = in.readLine()) != null) {&lt;br /&gt;
	   out.writeBytes(inputLine);&lt;br /&gt;
    } &lt;br /&gt;
  */  &lt;br /&gt;
  in.close();&lt;br /&gt;
       &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 public static String[] split(String input, String separator) {&lt;br /&gt;
    int len;&lt;br /&gt;
    int count;&lt;br /&gt;
    int pos;&lt;br /&gt;
    //String separator=&amp;quot;,&amp;quot;;&lt;br /&gt;
    int ws;&lt;br /&gt;
    int we;&lt;br /&gt;
    String[] words;&lt;br /&gt;
   &lt;br /&gt;
   /* count the number of separators: &lt;br /&gt;
       then we know the required size of the array */&lt;br /&gt;
    &lt;br /&gt;
    len=input.length();&lt;br /&gt;
    count=0;&lt;br /&gt;
    pos=-1;&lt;br /&gt;
    for(;;) { // loop over all occurrences of separator in input&lt;br /&gt;
      pos=input.indexOf(separator,pos+1);  // search from last pos found!&lt;br /&gt;
      if (pos&amp;lt;0) break; // none found after pos&lt;br /&gt;
      count++;  &lt;br /&gt;
    }  &lt;br /&gt;
      &lt;br /&gt;
    // let us print some useful debug information&lt;br /&gt;
    //System.out.println(&amp;quot;\nFound &amp;quot;+count+&amp;quot; separators &amp;quot;+separator);    &lt;br /&gt;
    &lt;br /&gt;
    // make a suitable array    &lt;br /&gt;
    words=new String[count+1];  &lt;br /&gt;
    &lt;br /&gt;
    // loop again over the input, this time collecting strings    &lt;br /&gt;
    ws=0;  // word start&lt;br /&gt;
    we=ws+1; // word end&lt;br /&gt;
    count=0;&lt;br /&gt;
    pos=-1;&lt;br /&gt;
    for(;;) { // again, loop over all occurrences of separator in input&lt;br /&gt;
      pos=input.indexOf(separator,pos+1);  // search from last pos found!&lt;br /&gt;
      if (pos&amp;lt;0) {&lt;br /&gt;
        // no separator found after pos: take to end of string&lt;br /&gt;
        we=input.length();&lt;br /&gt;
      } else {                &lt;br /&gt;
        // separator found&lt;br /&gt;
        we=pos;&lt;br /&gt;
      }  &lt;br /&gt;
      words[count]=input.substring(ws,we).trim(); // take substring, remove spaces          &lt;br /&gt;
      ws=pos+separator.length(); // this is where the next word will start&lt;br /&gt;
      count++;  &lt;br /&gt;
      if (pos&amp;lt;0) break;&lt;br /&gt;
    }  &lt;br /&gt;
  &lt;br /&gt;
    return words; &lt;br /&gt;
 }    &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tammet</name></author>
	</entry>
</feed>