You are on page 1of 179

, 2011.

...................................................................................................................................... 2
1 ...................................................................................................................................... 6
........................................................................................................................................ 6
Citaj ........................................................................................................................... 6
................................................................................................................................. 7
........................................................................................................................... 8
........................................................................................................................... 8
1 ................................................................................................................... 8
.................................................................................................................................... 9
1. Hello, World! .................................................................................................................. 9
2. ........................................................................................ 9
3. ..................................................................................... 9
4. .................................................................................................... 10
5. ..................................................................................................... 10
6. .................................................................. 11
7. ................................................................ 11
8. .................................................................................. 12
9. ......................................................................................... 13
10.
................................................................................... 13
11.
................................................................................. 14
2 .................................................................................................................................... 15
...................................................................................................................................... 15
............................................................................................................................... 15
2 ................................................................................................................. 15
................................................................................................................................. 15
........................................................................................................... 17
.................................................................................................................................. 18
1. ........................................................................................................ 18
2. ................................................................................ 19
3. .......................................................................................... 20
4. ..................................................................................................................... 21
5. ................................................................ 22
6. ................................................................................................ 23
7. ............................................................................................................ 23
8. ................................................................................................................... 24
9. .................................................................................................................... 25
10.
....................................................................................................................... 25
11.
................................................................................................................. 27
12.
................................................................................................... 28
3 .................................................................................................................................... 30
...................................................................................................................................... 30
............................................................................................................ 30
K static final ................................................................................................... 30
.......................................................................................... 31
String ....................................................................................................................... 31
..................................................................................................................... 31
.............................................................................. 32

2 179


........................................................................................................................ 33
Object ...................................................................................................................... 33
............................................................................................................................... 33
.................................................................................................................................. 34
1. .......................................................................................................................... 34
2. ...................................................................................................... 35
3. .................................................................................................................... 36
4. ................................................................................ 38
5. .......................................................................................................................... 41
4 .................................................................................................................................... 44
...................................................................................................................................... 44
.............................................................................................................................. 44
....................................................................................... 45
........................................................................................ 45
................................................................................................................. 46
.................................................................................................................................. 47
1. ........................................................................................................................ 47
2. .................................................................................................................... 53
3. ..................................................................................................................... 55
5 .................................................................................................................................... 58
...................................................................................................................................... 58
.............................................................................................................. 58
................................................................................................................ 58
, ................................................................. 60
.............................................................................................................. 61
.................................................................................................................................. 63
1. ......................................................................................................................... 63
2. ......................................................................................................................... 63
3. ............................................................................................................................. 64
4. ............................................................................................................................ 65
5. .......................................................................................................... 66
6. .......................................................................................................................... 67
7. .................................................................................................................. 67
6 .................................................................................................................................... 69
...................................................................................................................................... 69
............................................................................................................ 69
.......................................................................................................................... 69
StringBuilder StringBuffer ........................................................................................ 71
StringTokenizer ......................................................................................................... 71
...................................................................................................... 72
.................................................................................................................................. 75
1. ........................................................................................................ 75
2. ................................................................................................................... 76
3. ...................................................................................................................... 77
4. ............................................................. 79
5. .............................................................................................................. 81
6. ........................................................................................................... 81
7 8 .............................................................................................................................. 84
...................................................................................................................................... 84
AWT ................................................................................................................................... 84

3 179


java.awt ...................................................................................... 84
................................................................................................................ 86
.................................................................................................................................. 88
1. ......................................................................................................... 88
2. ............................................................................................................ 88
3. ......................................................................................................... 90
4. ............................................................................................................ 91
5. ......................................................................................................... 92
6. .......................................................................................................... 94
7. ............................................................................................................................ 95
8. .................................................................................................................... 96
9. .................................................................................................................. 98
9 .................................................................................................................................. 102
.................................................................................................................................... 102
Socket .............................................................................................................................. 102
................................................................................................................................ 104
1. EchosClient Socket ...................................................................................................... 104
2. ........................................................................... 105
3. ....................................................................................... 114
10 ................................................................................................................................ 116
.................................................................................................................................... 116
.......................................................................................................................... 116
................................................................................................................................ 118
1. .......................................................................................................................... 118
2. ................................................................... 120
3. ................................................................... 122
4. ............................................................................................................ 124
5. ............................................................................................................ 125
6. ................................................................................................................... 127
7. ......................................................................................... 136
8. ....................................................................................... 138
11, 12 13 ................................................................................................................... 140
.................................................................................................................................... 140
PHP ........................................................................................ 140
Echo ................................................................................................................................. 141
.................................................................................................................. 141
............................................................................................................................. 142
.......................................................................................................................... 144
PHP MySQL ........................................................................................................ 145
.............................................................................................................................. 146
................................................................................................................................ 147
1. ..................................................................................................................... 147
2. ............................................................................................................. 149
3. ....................................................................................................... 152
4. ...................................... 152
5. .................................................... 153
6. Eurosong .................................................................................................................... 153
7. .......................................................................................................... 154
8. ....................................................................................... 155
9. ............................................................................................................................ 156

4 179


10.
11.

............................................................................................... 162
.............................................................................................. 170

5 179

Citaj
,

,
, Citaj.
, :

char Char ()
String String ()
String Line ()
byte Byte ()
short Short ()
int Int ()
long Long ()
float Float ()
double Double ()
boolean Boolean()
// Citaj.java - Citanje podataka standardnih tipova iz ulaznog toka,
// iz datoteke i s glavnog ulaza.
import java.io.*;
public class Citaj {
private InputStream ut; // Ulazni tok iz kojeg se cita.
private char c;
// Poslednji procitani znak.
private boolean eos;
// Indikator kraja toka.
public Citaj (InputStream uut) { ut = uut; } // Inicijalizacija
// ulaznim tokom.
public Citaj (String ime) throws FileNotFoundException // Otvaranje
{ ut = new FileInputStream (ime); }
// datoteke.
public boolean endS () { return eos; }

// Da li je kraj toka?

public char getChS () { // Dohvatanje sledeceg znaka.


try { int i = ut.read (); return c = (eos = i == -1) ? ' ' : (char)i; }
catch (Exception g) { eos = true; return c = ' '; }
}
public char CharS () { // Citanje jednog (nebelog) znaka.
while (Character.isWhitespace (c = getChS ()));
return !eos ? c : ' ';
}
public String StringS () { // Citanje jedne reci.
String s = "";
while ( Character.isWhitespace (c = getChS ()) && !eos);
if (eos) return "";
s += c;
while (!Character.isWhitespace (c = getChS ()) && !eos) s += c;

6 179


eos = false;
return s;
}
public String LineS () { // Citanje jednog reda teksta.
String s="";
while ((c = getChS ()) != '\n' && !eos) if (c != '\r') s += c;
if (s.length () != 0) eos = false;
return s;
}
// Preskakanje znakova do kraja reda.
public void getNLS ()
{ while (c!='\n' && !eos) c = getChS (); c = '\0'; }
public byte ByteS () // Citanje jednog podatka tipa byte.
{ String s = StringS (); return !eos ? Byte.parseByte (s) : 0; }
public short ShortS () // Citanje jednog podatka tipa short.
{ String s = StringS (); return !eos ? Short.parseShort (s) : 0; }
public int IntS () // Citanje jednog podatka tipa int.
{ String s = StringS (); return !eos ? Integer.parseInt (s) : 0; }
public long LongS () // Citanje jednog podatka tipa long.
{ String s = StringS (); return !eos ? Long.parseLong (s) : 0; }
public float FloatS () // Citanje jednog podatka tipa float.
{ String s = StringS (); return !eos ? Float.parseFloat (s) : 0; }
public double DoubleS () // Citanje jednog podatka tipa double.
{ String s = StringS (); return !eos ? Double.parseDouble (s) : 0; }
public boolean BooleanS() // Citanje jednog podatka tipa boolean.
{ String s = StringS (); return !eos ? Boolean.parseBoolean(s) : false; }
// PODRSKA ZA CITANJE S GLAVNOG ULAZA.
private static Citaj gl = new Citaj (System.in); // Predstavnik
// glavnog ulaza.
public static boolean end () { return gl.endS (); } // Varijante
public static char getCh () { return gl.getChS (); } // metoda
public static char Char () { return gl.CharS (); } // koje
public static String String () { return gl.StringS (); } // citaju sa
public static String Line () { return gl.LineS (); } // glavnog
public static void getNL () {
gl.getNLS (); } // ulaza.
public static byte Byte () { return gl.ByteS (); }
public static short Short () { return gl.ShortS (); }
public static int Int () { return gl.IntS (); }
public static long Long () { return gl.LongS (); }
public static float Float () { return gl.FloatS (); }
public static double Double () { return gl.DoubleS (); }
public static boolean Boolean() { return gl.BooleanS(); }
}

:
boolean ( true false)
char (16- Unicode , UTF-16)
byte (8- )
int (16- )

7 179


long (64- )
float (32- )
double (64- )
,
.
/
. - (. Integer int).


.
:
(+, -, *, /, %, ++, +=, -=, --, .)
(==, <, >, =, !=, >=, <=)
(&&, ||, !)
- (&, |, ~, ^, >>, >>>, <<, &=, |=, ~=, ^=, >>=, >>>=, <<=)
(=)
( ) (?:)

.
:
//
/*
*/
/**
.
*/
javadoc
.

1
/ ;
/ { }
.
:

if (uslov) else {naredba/e}
if (uslov) then {naredba/e 1} else {naredba/e 2}

for(inicijalizacija; uslov ; iteracija){naredbe}

/ { }

8 179

1. Hello, World!

.
:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}

2.

:
1) ,
2) .
:
public class SabiranjePoznatihBrojeva {
public static void main(String [] args){
int prviBroj = 12345;
int drugiBroj = 876543;
int rezultat;
rezultat = prviBroj + drugiBroj;
String tekst = "Rezultat operacije sabiranja je " + rezultat;
System.out.println(tekst);
}
}
public class SabiranjeUnetihBrojeva {
public static void main(String [] args){
System.out.print ("Unesite dva cela broja: ") ;
int prviBroj = Citaj.Int(), drugiBroj = Citaj.Int();
int rezultat = prviBroj + drugiBroj;
System.out.println(Rezultat operacije sabiranja je " + rezultat);
}
}

3.

.
:
public class IzracunavanjePovrsineKruga {
public static void main(String args[]) {
System.out.print("Poluprenik? ");
double r = Citaj.Double();
System.out.println("Obim = " + (2 * r * Math.PI));

9 179


System.out.println("Povrina = " + (r * r * Math.PI));
}
}

4.

.
:
public class MaksimumTriBroja {
public static void main(String[] args) {
int prvi = Citaj.Int();
int drugi = Citaj.Int();
int treci = Citaj.Int();
int max;
if (prvi > drugi) {
max = prvi;
} else {
max = drugi;
}
max = (max > treci) ? max : treci;
System.out.println("Najveci broj iz skupa (" + prvi + ", " + drugi
+ ", " + treci + ") je " + max);
}

5.

() .
:
public class Uredi1 {
public static void main(String args[]) {
System.out.print("Tri broja? ");
double a = Citaj.Double(), b = Citaj.Double(), c = Citaj.Double();
if (a > b) { double p = a; a = b; b = p; }
if (a > c) { double p = a; a = c; c = p; }
if (b > c) { double p = b; b = c; c = p; }
System.out.println("Ureeno= " + a + " " + b + " " + c);
}

10 179

6.

( ,
if/else ).
:

public class ApsolutnaVrednost {
public static void main(String[] Args) {
Double broj = Citaj.Double();
if (broj < 0)
broj = -broj;
System.out.println("Vrednost broja num " + broj);
}
}

public class ApsolutnaVrednost {
public static void main(String[] Args) {
Double broj = Citaj.Double();
System.out.println("Vrednost broja num " + ((broj > 0) ? broj : -broj));
}
}

7.

. .

:
public class LinJed {
public static void main(String args[]) {
System.out.print("Koeficijenti prve jednacine? ");
double a1 = Citaj.Double(), b1 = Citaj.Double(), c1 = Citaj.Double();
System.out.print("Koeficijenti druge jednacine? ");
double a2 = Citaj.Double(), b2 = Citaj.Double(), c2 = Citaj.Double();
double D = a1 * b2 - a2 * b1, Dx = c1 * b2 - c2 * b1, Dy = a1 * c2 - a2 * c1;
if (D != 0) {
double x = Dx / D, y = Dy / D;
System.out.println("x= " + x);

11 179


System.out.println("y= " + y);
} else if (Dx == 0 && Dy == 0)
System.out.println("Sistem je neodreen.");
else
System.out.println("Sistem je protivrean.");
}
}

8.

.

:

public class KvadJed {
public static void main (String[] vpar) {
final int REALNI = 0, DVOSTRUKI = 1, // Sifre vrsta resenja jednacine.
KOMPLEKSNI = 2, LINEARNA = 3, POGRESNA = 4;
System.out.print ("Koeficijenti kvadratne jednacine? ");
double a = Citaj.Double (), b = Citaj.Double (), c = Citaj.Double ();
double x1 = 0, x2 = 0,
// Realni delovi korena.
y1 = 0, y2 = 0;
// Imaginarni delovi korena.
int vrsta;
// Vrsta resenja jednacine.
if (a != 0) {
double d = b * b - 4 * a * c; // Diskriminanta jednacine.
if (d > 0) {
vrsta = REALNI;
x1 = (- b + Math.sqrt (d)) / (2 * a);
x2 = (- b - Math.sqrt (d)) / (2 * a);
} else if (d == 0) {
vrsta = DVOSTRUKI;
x1 = - b / (2 * a);
} else {
vrsta = KOMPLEKSNI;
x1 = - b / (2 * a);
y1 = Math.sqrt(-d) / (2*a);
x2 = x1;

12 179


y2 = - y1;
}
} else
if (b != 0) {
vrsta = LINEARNA;
x1 = - c / b;
} else
vrsta = POGRESNA;
if (vrsta == REALNI)
System.out.println ("Realni koreni su " + x1 + " i " + x2);
else if (vrsta == DVOSTRUKI)
System.out.println ("Dvostruki realni koren je " + x1);
else if (vrsta == KOMPLEKSNI)
System.out.println ("Kompleksni koreni su (" + x1 + ',' + y1 +
") i (" + x2 + ',' + y2 + ')');
else if (vrsta == LINEARNA)
System.out.println ("Resenje linearne jednacine je " + x1);
else if (vrsta == POGRESNA)
System.out.println ("Podaci nemaju smisla!");
}
}

9.

.
.
:
public class Faktoriel {
public static void main(String[] args) {
System.out.println("Unesite broj za koji je potrebno izracunati faktorel :");
int factorial = Citaj.Int();
int resenje = 1;
if (factorial < 0) System.out.println("Program ne prima kao argument negativan broj.");
if (factorial == 0) System.out.println("Faktorijel za dati broj iznosi : 1");
for (int count = 1; count < factorial; count++) {
resenje *= count;
}
System.out.println("Faktorijel za dati broj iznosi : " + resenje);
}
}

10.

. for .
:

public class NeparniBrojevi {
public static void main(String[] ars) {
System.out.println("Unesite broj :");
int kraj = Citaj.Int();

13 179


System.out.println("Neparni brojevi: ");
for (int i = 0; i < kraj; i++){
if (i % 2 == 1) {
System.out.println(i);
}
}
}
}

public class NeparniBrojevi {
public static void main(String[] ars) {
System.out.println("Unesite broj :");
int kraj = Citaj.Int();
System.out.println("Neparni brojevi: ");
for (int i = 1; i < kraj; i=i+2){
System.out.println(i);
}
}
}
}

11.

y = (x2 2x -2)/(x2+1) za svako xmin x < xmax s korakom x.
:

public class Tabela1 {
public static void main (String[] vpar) {
System.out.print ("xmin, xmax, dx? ");
double xmin = Citaj.Double (), xmax = Citaj.Double (), dx = Citaj.Double ();
System.out.print ("\nx\ty\n================\n");
for (double x=xmin; x<=xmax; x+=dx) {
double y = (x*x - 2*x - 2) / (x*x +1);
System.out.println (x + "\t" + y);
}
}
}

14 179


. . e
. 0 ( - 1).
:
int[] a; //niz iji su elementi tipa int
int[] b; // niz iji su elementi tipa int

,
.
:
a = new int[5]; //alociranje niza od pet int elemenata
int temp = a[0]; //pristupanje odredjenom elementu niza

: ,
int[] a = { 1, 2, 3, 4, 5 };

2
if/else for
:

switch (izraz) {
case vrednost 1: naredba/e 1; break;
deafult: naredba/e 2;


while(uslov){naredbe}
do {naredbe}while(uslov);


break;
continue;

-
.
.
. .
() . / ,
/ /.
:
class Automobil {
boolean radi;
Automobil() { radi = false;}
void upali() {
radi = true;
}

15 179


void ugasi() {
radi = false;
}
}

class. Automobil,
radi .
, upali ugasi.
Automobil new
:
Automobil mojAuto = new Automobil();

,
. .
. ( void).
.
.
( heap-). .
(garbage collector) ,
.
.

. () ( ,
) .
:
( ){

};

. .
void.
( ) .
.
this (
). this .
void upali() {
radi = true;
/* isto kao */
this.radi = true;
}

this :
void postaviRadi(boolean radi) {
this.radi = radi;
}

16 179


.
.

. (
).
.
:
class OverloadDemo {
void test() {
System.out.println("Bez parametara");
}
void test(int a) {
System.out.println("a: " + a);
}
void test(int a, int b) {
System.out.println("a and b: " + a + " " + b);
}
double test(double a) {
System.out.println("double a: " + a);
return a * a;
}
}

17 179

1.

.
. 55 5, 55 65 6, 65 75 7
.
1) , ( 100 ,
10).
2) 0 100
.
:
class Ocene {
public static void main(String[] args) {
int bodovi = Citaj.Int();
int ocena;
if (bodovi >= 90) {
ocena = 10;
} else if (bodovi >= 85) {
ocena = 9;
} else if (bodovi >= 75) {
ocena = 8;
} else if (bodovi >= 65) {
ocena = 7;
} else if (bodovi >= 55) {
ocena = 6;
} else {
ocena = 5;
}
System.out.println("Ocena je = " + ocena);
}
}
class Ocene {
public static void main(String[] args) {
boolean radi = true;
int bodovi = 0;
while (radi){
System.out.println("Unesite broj poena?");
bodovi = Citaj.Int();
if (bodovi < 0 || bodovi >100){
System.out.println("Uneli ste neodgovarajuci broj poena.");
}else {
radi = false;
}
}
int ocena;
if (bodovi >= 90) {
ocena = 10;
} else if (bodovi >= 85) {

18 179


ocena = 9;
} else if (bodovi >= 75) {
ocena = 8;
} else if (bodovi >= 65) {
ocena = 7;
} else if (bodovi >= 55) {
ocena = 6;
} else {
ocena = 5;
}
System.out.println("Ocena je = " + ocena);
}
}

2.

. 1, 2 3 .
,
30000 .
.
1) switch.
2) if/else.
:
public class Nagrade {
public static void main(String[] Args) {
int mesto = Citaj.Int();
System.out.println("Osvojili ste:\n");
switch (mesto) {
case 3:
System.out.println("Put na Kopaonik za dve osobe.");
case 2:
System.out.println("Novcanu nagradu od 30 000 dinara.");
break;
case 1:
System.out.println("Put u Spaniju za dve osobe.");
}
}
}
public class Nagrade {
public static void main(String[] Args) {
int mesto = Citaj.Int();
System.out.println("Osvojili ste:\n");
if (mesto == 3) {
System.out.println("Put na Kopaonik za dve osobe.");
};
if (mesto == 3 && mesto ==2){
System.out.println("Novcanu nagradu od 30 000 dinara.");
}
if (mesto == 1){
System.out.println("Put u Spaniju za dve osobe.");
}
}
}

19 179

3.

.
1) while.
2) do/while.
:


public class ParniBrojevi {
public static void main(String[] ars) {
System.out.println("Unesite broj :");
int kraj = Citaj.Int();
int i = 0;
boolean uslov = true;
System.out.println("Parni brojevi: ");
while (uslov) {
if (i % 2 == 0) { System.out.println(i); }
i++;
if (i > kraj) uslov = false;
}
}
}

public class ParniBrojevi {
public static void main(String[] ars) {
System.out.println("Unesite broj :");
int kraj = Citaj.Int();
int i = 0;
boolean uslov = true;
System.out.println("Parni brojevi: ");
do {
if (i % 2 == 0) { System.out.println(i); }
i++;
if (i > kraj) uslov = false;
} while (uslov);
}
}

20 179

4.

( ),
. ,
, , .
:

public class Digitron {
public static void main(String[] varg) {
double prviBroj, drugiBroj;
boolean radi = true;
while (radi) {
System.out.print("\n1. Sabiranje brojeva\n"
+ "2. Oduzimanje brojeva\n"
+ "3. Mnozenje brojeva\n"
+ "4. Deljenje brojeva\n"
+ "5. Ostatak pri deljenju dva broja\n"
+ "0. Kraj rada\n\n"
+ "Vas izbor? ");
switch (Citaj.Int()) {
case 1:
System.out.print("Prvi broj? ");
prviBroj = Citaj.Double();
System.out.print("Drugi broj? ");
drugiBroj = Citaj.Double();
System.out.println("Zbir brojeva je " + (prviBroj + drugiBroj));
break;
case 2:
System.out.print("Prvi broj? ");
prviBroj = Citaj.Double();
System.out.print("Drugi broj? ");
drugiBroj = Citaj.Double();
System.out.println("Razlika brojeva je " + (prviBroj - drugiBroj));
break;
case 3:
System.out.print("Prvi broj? ");
prviBroj = Citaj.Double();
System.out.print("Drugi broj? ");
drugiBroj = Citaj.Double();
System.out.println("Prozivod brojeva je " + (prviBroj * drugiBroj));
break;
case 4:
System.out.print("Prvi broj? ");
prviBroj = Citaj.Double();
System.out.print("Drugi broj? ");
drugiBroj = Citaj.Double();
System.out.println("Kolicnik brojeva je " + (prviBroj / drugiBroj));
break;
case 5:
System.out.print("Prvi broj? ");
prviBroj = Citaj.Double();
System.out.print("Drugi broj? ");
drugiBroj = Citaj.Double();
System.out.println("Ostatak pri deljenju je " + (prviBroj % drugiBroj));
break;
case 0:
radi = false;
break;

21 179


default:
System.out.println("Nedozvoljen izbor!");
}
}
System.out.println("Program je zavrsen.");
}
}

5.


.
:

public class BrojJedinicaVerzijaFor {
public static void main(String[] args) {
System.out.println("Unesite broj?");
int broj = Citaj.Int();
int suma = 0;
for(int i = 0; i < 32; i++){
suma = suma + (broj & 1);
broj = broj >> 1;
}
System.out.println("Broj jedinica je " + suma);
}
}

public class BrojJedinicaVerzijaWhile {
public static void main(String[] args) {
System.out.println("Unesite broj?");
int broj = Citaj.Int();
int suma = 0;
while(broj != 0){
suma += (broj & 1);
broj = broj >>> 1;
}
System.out.println("Broj jedinica je " + suma);
}
}

22 179

6.

. ,
.

.
.
3.
:

public class SrednjaVrednost {
public static void main (String[] vpar) {
System.out.print ("\nBroj elemenata niza? "); int n = Citaj.Int ();
while (n > 0) {
System.out.print ("Elementi niza? ");
double s = 0;
for (int i=1; i<=n; i++)
{ double a = Citaj.Double (); s += a;}
s /= n;
System.out.println ("Srednja vrednost:
" + s);
System.out.print ("\nBroj elemenata niza? "); n = Citaj.Int ();
}
}
}

public class SrednjaVrednost {
public static void main (String[] vpar) {
System.out.print ("\nBroj elemenata niza? "); int n = Citaj.Int ();
while (n > 0) {
System.out.print ("Elementi niza? ");
double s = 0; int k = 0;
for (int i=1; i<=n; i++)
{ double a = Citaj.Double (); if (a % 3 == 0 ) {s += a; k++;}}
if (k != 0) {s /= k;
System.out.println ("Srednja vrednost:
" + s);}
else {
System.out.println ("Nijedan broj nije deljiv sa 3");
}
System.out.print ("\nBroj elemenata niza? "); n = Citaj.Int ();
}
}
}

7.

. ,
.

.
.
:

23 179



public class Minimum {
public static void main (String[] vpar) {
System.out.print ("\nBroj elemenata niza? "); int n = Citaj.Int ();
while (n > 0) {
System.out.print ("Elementi niza? ");
double[] a = new double [n];
for (int i=0; i<n; a[i++]=Citaj.Double());
double max = a[0];
for (int i=1; i<n; i++) if (a[i] > max) max = a[i];
System.out.println ("max= " + max + '\n');
System.out.print ("\nBroj elemenata niza? "); n = Citaj.Int ();
}
}
}

8.

. ,
.

.
.
:

public class Obrni {
public static void main (String[] vpar) {
System.out.print ("\nBroj elemenata niza? "); int n = Citaj.Int ();
while (n > 0) {
System.out.print ("Elementi niza? ");
double[] a = new double [n];
for (int i=0; i<n; a[i++]=Citaj.Double());
for (int i=0, j=n-1; i<j; i++, j--) {
double b = a[i]; a[i] = a[j]; a[j] = b;
}
System.out.print ("Obrnuti redosled elemenata je :");
for (int i=0; i<n; System.out.print (" "+a[i++]));
System.out.print ("\nBroj elemenata niza? "); int n = Citaj.Int ();
}
}
}

24 179

9.

. ,
.

.
.
:
public class Obrni {
public static void main (String[] vpar) {
System.out.print ("\nBroj elemenata niza? "); int n = Citaj.Int ();
while (n > 0) {
System.out.print ("Elementi niza? ");
double[] a = new double [n];
for (int i=0; i<n; a[i++]=Citaj.Double());
// Uredjivanje niza:
for (int i=0; i<n-1; i++)
for (int j=i+1; j<n; j++)
if (a[i] > a[j]) { double b = a[i]; a[i] = a[j]; a[j] = b; }
// Ispisivanje uredjenog niza:
System.out.print ("\nUredjeni niz:\n\n");
for (int i=0; i<n; i++) {
System.out.print (a[i] + " ");
if (i%30==29 || i==n-1) System.out.println ();
}
System.out.print ("\nBroj elemenata niza? "); n = Citaj.Int ();
}
}
}

10.
:
x y ( (0,0)).
, , ,
: (x,y) (x,y).
. .
.
.
:
public class Tacka {
double x;
double y;
Tacka(double a, double v){
this.x = a;
this.y = v;
}
// preklapanje podrazumevanog konstruktora
Tacka(){
this.x = 0;
this.y = 0;

25 179


}
double getX() {
return x;
}
void setX(double x) {
this.x = x;
}
double getY() {
return y;
}
void setY(double y) {
this.y = y;
}
// preklapanje metoda izracunajRastojanje
double izracunajRastojanje(Tacka t){
double rezultat;
rezultat = Math.sqrt(Math.pow((x - t.x),2) + Math.pow((y - t.y),2));
return rezultat;
}
double izracunajRastojanje(){
Tacka koordinantniPocetak = new Tacka(0,0);
return this.izracunajRastojanje(koordinantniPocetak);
}
void pisi(){
System.out.println("Tacka : [ " +x +" , " + y+ " ]");
}
}
public class TackaT {
public static void main (String [] args){
System.out.println("Unesite prvu tacku?");
Tacka t1 = new Tacka(Citaj.Double(), Citaj.Double());
System.out.println("Unesite drugu tacku?");
Tacka t2 = new Tacka(Citaj.Double(), Citaj.Double());
t1.pisi();
t2.pisi();
double rastojanjet1 = t1.izracunajRastojanje();
double rastojanjet2 = t2.izracunajRastojanje();
System.out.format("Ovo je rastojanje prve tacke od koordinatnog pocetka %8.2f\n", rastojanjet1);
System.out.format("Ovo je rastojanje druge tacke od koordinatnog pocetka %8.2f\n", rastojanjet2);
double rastojanje = t1.izracunajRastojanje(t2);
System.out.format("Ovo je rastojanje izmedju tacaka %8.2f\n", rastojanje);
}
}

26 179

11.
:
( 1) ( , 10,
2) ( (0,0)).
[(x,y),r].
.
:
class Kruznica {
double poluprecnik;
private Tacka centar;
void setCentar(Tacka t){
if (t.getX() > 10) t.setX(10);
if (t.getY() > 10) t.setY(10);
centar = t;
}
Kruznica(){
poluprecnik = 1;
centar = new Tacka(0,0);
}
Kruznica(double poluprecnik, double x, double y){
this.poluprecnik = poluprecnik;
centar = new Tacka(x,y);
}
void pisi(){
System.out.println("[(" + centar.getX() + "," + centar.getY() + ")," + poluprecnik + "]");
}
}
public class KruznicaT {
public static void main (String [] args){
System.out.println("Unesite kruznicu?");
Kruznica k = new Kruznica(Citaj.Double(),Citaj.Double(),Citaj.Double());
System.out.println("Uneta kruznica je : ");
k.pisi();
}
}

27 179

12.
:
( , 10, 2)
. ( 5),
.
x, y .
[t t t] t (x,y).

.
:
class Linija {
Tacka[] nizTacaka;
int duzina; // prvo prazno mesto u nizu nizTacaka
Linija() {
nizTacaka = new Tacka[5];
duzina = 0;
}
void dodajTacku(Tacka t) {
if (duzina > 4) {
System.out.println("Niz je pun ");
return;
} else {
nizTacaka[duzina] = t;
duzina++;
}
}
double duzinaLinije() {
double duzina = 0;
if (duzina > 2) {
for (int i = 0; i < duzina - 1; i++) {
duzina = nizTacaka[0].izracunajRastojanje(nizTacaka[1]);
}
}
return duzina;
}
Tacka centar(){
double x = 0;
double y = 0;
for (int i = 0; i < duzina; i++){
x += nizTacaka[i].getX();
y += nizTacaka[i].getY();
}
return new Tacka(x/duzina, y/duzina);
}
public String toString() {
String rezultat = "";
for (int i = 0; i < duzina; i++) {
rezultat = rezultat + " " + nizTacaka[i].toString();
}
return rezultat;
}
}

28 179


public class LinijaT {
public static void main (String [] args){
Linija linija = new Linija();
System.out.println("Unesite tacku ?");
Tacka tacka1 = new Tacka(Citaj.Double(), Citaj.Double());
System.out.println("Unesite tacku ?");
Tacka tacka2 = new Tacka(Citaj.Double(), Citaj.Double());
System.out.println("Unesite tacku ?");
Tacka tacka3 = new Tacka(Citaj.Double(), Citaj.Double());
linija.dodajTacku(tacka1);
linija.dodajTacku(tacka2);
linija.dodajTacku(tacka3);
System.out.println("Centar tacke je :");
Tacka centarTacka = linija.centar(); centarTacka.pisi(); //linija.centar().pisi();
System.out.println("Duzina tacke je : " + linija.duzinaLinije());
}
}

29 179

K static final
static o
:
( ) .
.
.
.
.
( )
. ().
:
class UseStatic {
static int a = 3;
static int b;
static void meth(int x) { System.out.println(b = " + b); }
static {
System.out.println("Static block initialized."); b = a * 4;
}
public static void main(String args[]) { meth(42); }
}

30 179


final o
.
:
final int FILE_NEW = 1;
final int FILE_OPEN = 2;
final int FILE_SAVE = 3;


:
final void imeMetoda(){//...


final class imeMetoda{//


() .
:
class ObuhvatajucaKlasa{ class UgnezdenaKlasa { . . . } }

.
, ,
final abstract.
,
<ObuhvatajuciTip>.<UgnedeniTip>

.


( ).

String
String,
String immutable String

StringBuffer StringBuilder
String String
+ String String

( String )
String :
boolean equals(String object)
int length( )
char charAt(int index)

.
.
.
.
.
,
class A {

31 179


int i, j;
void pisi() {
System.out.println("i and j: " + i + " " + j);
}
}
class B extends A {
int k;
void pisi() {
super.pisi();
System.out.println("k: " + k);
}
void sum() {
System.out.println("i+j+k: " + (i+j+k));
}
}

:

,


,
. B, C,
: , B, C.
super .
,
.
.
.
super super.imeMetode();



, .
abstract
abstract tip imeetode(lista-parametara);

,
. , .
.

abstract class imeKlase { //

:
abstract class A {
abstract void callme();
void callmetoo() {System.out.println(Konkretan metod);}
}
class B extends A {
void callme() {
System.out.println("B's implementation of callme.");
}

32 179


interface
,

.
.
.
:
interface PrviInterfejs{
double zapremina(int duz);
double vrednost(int arg1, double arg2);
final int konstanta = 10;
}

implements.
.
:
class Kutija implements Objekat, Merljiv { //

Object
. ()
.
, .
toString() equals().


,


,
, .
package,
package imePaketa;

.
.

. import. .
package
.
:
import java.util.Date;
import java.io.*;

33 179

1.
:
O , ,
.
() .
.
:
package osoba;
import usluge.Citaj;
public class Osoba {
private String ime;
private String prezime;
private double tezina;
private int id;
private static int generatorId = 0;
public Osoba(String ime, String prezime, double tezina) {
super();
id = generatorId++;
this.ime = ime;
this.prezime = prezime;
this.tezina = tezina;
}
public Osoba(){
id = generatorId++;
}
public void citaj () {
System.out.print ("Ime osobe? "); Citaj.getNL(); ime = Citaj.Line ();
System.out.print ("Prezime osobe? "); prezime = Citaj.Line();
System.out.print("Tezina?"); tezina = Citaj.Double();
}
public String toString(){
return ime + " " + prezime + "(" + tezina + ")";
}
public String getIme() {
return ime;
}
public String getPrezime() {
return prezime;
}
public double getTezina() {
return tezina;
}
public double getId(){
return id;
}
}

34 179


import osoba.Osoba;
public class OsobaT1 {
public static void main(String[] args){
System.out.println("Unesite osobu.");
Osoba osoba = new Osoba();
osoba.citaj();
System.out.println("Uneta osoba je " + osoba);
}
}

2.
:
( , 1, 3) .
()
.
.
.
, .
.
:
package osoba;
import java.io.Serializable;
import usluge.Citaj;
public class Korisnik extends Osoba {
private String korisnickoIme;
private String lozinka;
public Korisnik(){
super();
}
public void citaj(){
super.citaj();
System.out.println("Korisnicko ime?");korisnickoIme = Citaj.String();
System.out.println("Lozinka?"); lozinka = Citaj.String();
}
public String getKorisnickoIme(){
return korisnickoIme;
}
}
import osoba.Korisnik;
import osoba.Osoba;
import usluge.Citaj;

public class Sistem {


public static void main(String [] args){
Osoba[] sistem = new Osoba [20]; int n = 0;
boolean radi = true;

35 179


System.out.println ("Citanje podataka o ljudima");
radi : while (radi) {
if (n>=20) {System.out.println("Nema vise mesta u sistemu."); break;}
System.out.print ("\nIzbor (O=osoba, U=korisnik, K=kraj)? ");
switch (Citaj.Char ()) {
case 'O': case 'o': sistem[n] = new Osoba (); break;
case 'U': case 'u': sistem[n] = new Korisnik (); break;
case 'K': case 'k': break radi;
}
sistem[n++].citaj ();
}
System.out.println ("\nPrikaz procitanih podataka");
for (int i=0; i<n; i++) System.out.print ("\n" + sistem[i]);
}
}

3.
:
,
.
.
.
( 1). P.
Pid(a,b,c).
( 1). S.
Sid(r).
.
.
, (
) .
.
:
package predmeti;
public abstract class Predmet {
static int id = 0;
int identifikator;
String specZnak;
public Predmet(String specZnak){
identifikator = id;
id++;
this.specZnak = specZnak;
}
abstract public Double zapremina();
public String toString(){
return specZnak + identifikator + ":";
}
}
package predmeti;

36 179


public class Kvadar extends Predmet {
private double a;
private double b;
private double c;
public Kvadar(){
super("P");
a = b = c = 1;
}
public Kvadar(double a, double b, double c){
super("P");
this.a = a;
this.b = b;
this.c = c;
}
public String toString(){
return super.toString() + "(" + a + "," + b + "," + c + ")";
}
public Double zapremina() {
return a*b*c;
}
}
package predmeti;
public class Sfera extends Predmet {
public static double pi = 3.14;
private double r;
public Sfera(){
super("S");
r = 1;
}
public Sfera(double r){
super("P");
this.r = r;
}
public String toString(){
return super.toString() + "(" + r + ")";
}
public Double zapremina() {
return 4/3*r*r*r*pi;
}
}
import predmeti.Kvadar;
import predmeti.Predmet;
import predmeti.Sfera;
public class PredmetiT {
public static void main(String [] args){
Predmet[] sistem = new Predmet [20]; int n = 0;
boolean radi = true;
System.out.println ("Citanje podataka o predmetima");
radi : while (radi) {

37 179


if (n>=20) {System.out.println("Nema vise mesta u sistemu."); break;}
System.out.print ("\nIzbor (S=sfera, P=kvadar, K=kraj)? ");
switch (Citaj.Char ()) {
case 'S': case 's': sistem[n++] = new Sfera();
break;
case 'P': case 'p': sistem[n++] = new Kvadar(); break;
case 'K': case 'k': break radi;
}
}
double ukupnaZap = 0;
System.out.println ("\nPrikaz procitanih podataka");
for (int i=0; i<n; i++) {
System.out.print ("\n" + sistem[i]);
ukupnaZap += sistem[i].zapremina();
}
System.out.println("\nUkupna zapremina predmeta je :" + ukupnaZap);
}
}

4.
:
.
,
.
.
.
.
( 1).
P. Kid(a,b,c).
( 1).
S. Sid(r).
.
.
, .

.
:
package predmeti2;

public abstract class Predmet {


static int id = 0;
int identifikator;
String specZnak;
public Predmet(String specZnak){
identifikator = id;
id++;
this.specZnak = specZnak;
}
abstract public Double zapremina();
public String toString(){

38 179


return specZnak + identifikator + ":";
}
}
package predmeti2;
public interface UcitavaSe {
void citaj();
}
package predmeti2;
public abstract class PredmetKojiSeUcitava extends Predmet implements UcitavaSe {
public PredmetKojiSeUcitava(String specZnak) {
super(specZnak);
}
}
package predmeti2;
import usluge.Citaj;
public class Sfera extends PredmetKojiSeUcitava {
public static double pi = 3.14;
private double r;
public Sfera(){
super("S");
r = 1;
}
public Sfera(double r){
super("P");
this.r = r;
}
public String toString(){
return super.toString() + "(" + r + ")";
}
public Double zapremina() {
return 4/3*r*r*r*pi;
}
public void citaj () {
System.out.print ("Unesite poluprecnik?
}

"); r = Citaj.Double();

}
package predmeti2;
import usluge.Citaj;
public class Kvadar extends PredmetKojiSeUcitava {
private double a;
private double b;
private double c;
public Kvadar(){
super("P");
a = b = 1;

39 179


}
public Kvadar(double a, double b, double c){
super("P");
this.a = a;
this.b = b;
this.c = c;
}
public String toString(){
return super.toString() + "(" + a + "," + b + "," + c + ")";
}
public Double zapremina() {
return a * b*c;
}
public void citaj () {
System.out.print ("Unesite duzinu ivice a?
System.out.print ("Unesite duzinu ivice b?
System.out.print ("Unesite duzinu ivice c?
}

"); a = Citaj.Double();
"); b = Citaj.Double();
"); c = Citaj.Double();

}
import predmeti2.Kvadar;
import predmeti2.PredmetKojiSeUcitava;
import predmeti2.Sfera;

public class PredmetiT2 {


public static void main(String [] args){
PredmetKojiSeUcitava[] sistem = new PredmetKojiSeUcitava [20]; int n = 0;
boolean radi = true;
System.out.println ("Citanje podataka o predmetima");
radi : while (radi) {
if (n>=20) {System.out.println("Nema vise mesta u sistemu."); break;}
System.out.print ("\nIzbor (S=sfera, P=kvadar, K=kraj)? ");
switch (Citaj.Char ()) {
case 'S': case 's': sistem[n] = new Sfera();
break;
case 'P': case 'p': sistem[n] = new Kvadar(); break;
case 'K': case 'k': break radi;
}
sistem[n++].citaj();
}
double ukupnaZap = 0;
System.out.println ("\nPrikaz procitanih podataka");
for (int i=0; i<n; i++) {
System.out.print ("\n" + sistem[i]);
ukupnaZap += sistem[i].zapremina();
}
System.out.println("\nUkupna zapremina predmeta je :" + ukupnaZap);
}
}

40 179

5.
:

A , ,
( , 1, 3).
, ,
()[,,].
,
.
100
,
. .
:
package avion;
import osoba.Osoba;
public class Avion {
private static int generator = 0;
// ovo polje je jedinstveni identifikator za svaki avion
// i koristice se na aerodromu za referenciranje aviona
private int id;
private Osoba[] mesta;
// broj zauzetih mesta
private int duz;
private double tezinaPraznog;
private double maksimalnaTezina;
private String model;
public Avion(double tezinaPraznog, String oznaka,
int brojMesta, double maksimalnaTezina) {
this.id = generator++;
this.tezinaPraznog = tezinaPraznog;
this.model = oznaka;
this.mesta = new Osoba[brojMesta];
this.maksimalnaTezina = maksimalnaTezina;
}
public double izracunajTezinu() {
double rezultat = tezinaPraznog;
for (int i = 0; i < mesta.length; i++) {
if (mesta[i] == null)
continue;
rezultat += mesta[i].getTezina();
}
return rezultat;
}
public void dodaj(Osoba osoba, int index) {
if (tezinaPraznog + osoba.getTezina() > maksimalnaTezina) {
System.out.println("Avio pretovaren !!!");
return;
}
if (mesta[index] != null) {
System.out.println("Postoji osoba na zadatom mestu !!!");

41 179


return;
}
mesta[index] = osoba;
duz++;
}
public Osoba uzmi(int index) {
if (mesta[index] == null) {
System.out.println("Ne postoji osoba na zadatom mestu");
return null;
}
duz--;
return mesta[index];
}
public String toString() {
String rez = "";
rez += model;
rez += "(";
rez += izracunajTezinu();
rez += ")[";
int count = 1;
for (int i = 0; i < mesta.length; i++){
if (mesta[i] != null){
rez += (count != duz ? mesta[i] + "," : mesta[i]);
count++;
}
}
return rez + "]";
}
public int getId() {
return id;
}
}
import avion.Avion;
import osoba.Osoba;
import usluge.Citaj;

public class AvionT {


public static void main(String[] args){
Avion avion = new Avion(40000, "boing", 100, 50000);
System.out.println("Koje putnike treba ukrcati na avion?");
radi : while (true) {
int mesto = 0;
System.out.print ("\nIzbor (U=ukrcaj osobu na mesto, I=iskrcaj osobu na mestoK=kraj)? ");
switch (Citaj.Char ()) {
case 'U': case 'u':
System.out.println("Na koje mesto zelite ukrcati osobu?");
mesto = Citaj.Int();
Osoba osoba = new Osoba();
osoba.citaj();
avion.dodaj(osoba, mesto);
break;
case 'I': case 'i':
System.out.println("Sa kog mesta zelite iskrcati osobu?");

42 179


mesto = Citaj.Int();
avion.uzmi(mesto);
break;
case 'K': case 'k': break radi;
}
}
System.out.println ("\nPrikaz procitanih podataka" + avion);
}
}

43 179

runtime ,
.
, runtime- .
.
runtime-.
.
,
.
, .
.
, ( ).
,
.
:try, catch, throw, throws finally
try,
,
catch,
try catch ,
throw, ,
throws, ,
,
finally, try/catch
.
J Throwable.
Throwable, Exception Error:
Exception ,
. Exception RuntimeException
(
),
Error, Throwable.
. , .
.

44 179


, .
,
.
:
public static void main(String args[]) {
try {
int d = 0;
int a = 42 / d;
System.out.println("This will not be printed.");
} catch (ArithmeticException e) { // catch divide-by-zero error
System.out.println("Division by zero.");
}
System.out.println("After catch statement.");
}


,
(. multithreaded programming).
.
(. thread), () .
.
:
( ),
(
).
.


.
Thread:
import java.lang.*;
public class MyThread extends Thread {
public void run() {
....
}
}

45 179


: myThread = new MyThread(...); a : myThread.start();
Runnable:
import java.lang.*;
public class MyThread implements Runnable {
public void run() {
....
}
}

: Thread myThread = new Thread(new MyThread(...));


: myThread.start();
:
( , ,...)
( start )
start ( ), .
() run . Thread.run()
. run
Thread. run , .
:
interrupt()
interrupted() Testira da li je teku
isInterrupted()
( sleep, wait, join) Interrupt()
( )
InterrruptedException

, join() .
join() run .

.
, .
synchronized .




.
.
synchronized ,

.

synchronized (izraz) naredba

, /

.

46 179

1.
.
vr[sigma|.
,
.
. .
vr[sigma|a,b, c].
. S. vr[sigma|r].
A :
,
,
( ),
,
,
,
,
,
,
.
,
. .
Java :
, ,
. .
Java ( )
,
:
,
,
,
( , ),
,
,
.
:
// Predmet.java - Apstraktna klasa predmeta.
package predmeti1;
import usluge.Citaj;
public abstract class Predmet {
private double sigma;

// Specificna tezina.

protected Predmet (double ss) { sigma = ss; }


protected Predmet ()

// Inicijalizacija.

{ sigma = 1; }

47 179


public abstract char vrsta ();

// Vrsta.

public abstract double zapremina ();

// Zapremina.

public final double tezina () { return zapremina () * sigma; } // Tezina.


public void citaj () { sigma = Citaj.Double (); } // Citanje.
public String toString ()
{ return vrsta() + "[" + sigma + "|"; }

// Tekstualni oblik.

}
// Sfera.java - Klasa sfera.
package predmeti1;
import usluge.Citaj;
public class Sfera extends Predmet {
// Vrsta.

public static final char VR = 'S';


private double r;

// Poluprecnik.

public Sfera (double ss, double rr)


{ super (ss); r = rr; }

// Inicijalizacija.

public Sfera () { this (1, 1); }


public char vrsta () { return VR; }

// Vrsta.

public double zapremina() { return 4./3 * r*r*r * Math.PI; } // Zapremina.


public void citaj ()
{ super.citaj (); r = Citaj.Double (); }

// Citanje.

// Tekstualni oblik.

public String toString ()


{ return super.toString() + r + "]"; }
}
// Kvadar.java - Klasa kvadara.
package predmeti1;
import usluge.Citaj;
public class Kvadar extends Predmet {
public static final char VR = 'K';
private double a, b, c;

// Vrsta.
// Ivice.

public Kvadar (double ss, double aa, double bb, double cc) // Inic.
{ super (ss); a = aa; b = bb; c = cc; }
public Kvadar () { this (1, 1, 1, 1); }
public char vrsta () { return VR; }

// Vrsta.

public double zapremina () { return a * b * c; } // Zapremina.


public void citaj () {
// Citanje.
super.citaj ();
a = Citaj.Double (); b = Citaj.Double (); c = Citaj.Double ();
}

48 179


public String toString () {
// Tekstualni oblik.
return super.toString() + a + "," + b + "," + c + "]";
}
}
// Polica.java - interfejs za kreiranje klase polica
package polica;
import predmeti1.Predmet;
public interface Polica {
public PolicaNiz stavi (Predmet p, int i) throws GPolIndeks, GPolZauzeto, GPolTezina;
public PolicaNiz stavi (Predmet p) throws GPolTezina, GPolPuna;
public Predmet uzmi (int i) throws GPolIndeks, GPolPrazno ;
public Predmet dohvati (int i) throws GPolIndeks, GPolPrazno;
public boolean prazno (int i) throws GPolIndeks;
public int kapacitet () throws GPolIndeks;
public int slobodno ();
public int zauzeto ();
public double nosivost ();
public double teret ();
public double jos();
public String toString ();
public PolicaNiz prazni ();
}
// GPolica.java - Apstraktna klasa za greske pri radu s policama.
package polica;
public abstract class GPolica extends Exception {
public String toString ()
// Tekstualni oblik.
{ return "*** GRESKA s policom: "; }
}
// GPolIndeks.java - Klasa za greske: Nedozvoljen indeks.
package polica;
public class GPolIndeks extends GPolica {
private int ind;

// Nedozvoljeni indeks.

public GPolIndeks (int i) { ind = i; }


public int ind () { return ind; }

// Inicijalizacija.
// Dohvatanje indeksa.

49 179


public String toString ()
// Tekstualni oblik.
{ return super.toString() + "Nedozvoljen indeks " + ind + "!"; }
}
// GPolPrazno.java - Klasa za greske: Mesto je prazno.
package polica;
public class GPolPrazno extends GPolica {
private int ind;

// Indeks praznog mesta.

public GPolPrazno (int i) { ind = i; }


public int ind () { return ind; }

// Inicijalizacija.
// Dohvatanje indeksa.

// Tekstualni oblik.
public String toString ()
{ return super.toString() + "Prazno mesto " + ind + "!"; }
}
// GPolPuna.java - Klasa za greske: Polica je puna.
package polica;
public class GPolPuna extends GPolica {
public String toString ()
// Tekstualni oblik.
{ return super.toString() + "Nema mesta na polici!"; }
}
// GPolTezina.java - Klasa za greske: Prekoracena je nosivost police.
package polica;
import predmeti1.Predmet;
public class GPolTezina extends GPolica {
private Predmet p;

// Pretezak predmet.

public GPolTezina (Predmet pp) { p = pp; } // Inicijalizacija.


public Predmet predmet () { return p; }

// Dohvatanje predmeta.

public String toString ()


// Tekstualni oblik.
{ return super.toString() + "Prevelika tezina " + p.tezina() + "!"; }
}
// GPolZauzeto.java - Klasa za greske: Mesto je zauzeto.
package polica;
public class GPolZauzeto extends GPolica {
private int ind;

// Indeks popunjenog mesta.

public GPolZauzeto (int i) { ind = i; }


public int ind () { return ind; }

// Inicijalizacija.
// Dohvatanje indeksa.

public String toString ()


// Tekstualni oblik.
{ return super.toString() + "Zauzeto mesto " + ind + "!"; }
}

50 179

:
// Polica.java - Klasa polica za predmete.
package polica;
import predmeti1.Predmet;
public class PolicaNiz implements Polica{
private Predmet[] niz;
private double maxQ;
private double q = 0;

// Niz za smestanje predmeta.


// Nosivost police.
// Trenutna opterecenost police.

public PolicaNiz (int kap, double Qmax) { // Inicijalizacija.


niz = new Predmet [kap];
maxQ = Qmax;
}
// Stavljanje na dato mesto.
public PolicaNiz stavi (Predmet p, int i)
throws GPolIndeks, GPolZauzeto, GPolTezina {
if (i<0 || i>=niz.length) throw new GPolIndeks (i);
if (niz[i] != null)
throw new GPolZauzeto (i);
if (q + p.tezina() > maxQ) throw new GPolTezina (p);
niz[i] = p; q += p.tezina ();
return this;
}
public PolicaNiz stavi (Predmet p) // Stavljanje na prvo slobodno mesto.
throws GPolTezina, GPolPuna {
if (q + p.tezina() > maxQ) throw new GPolTezina (p);
int i = 0; while (i<niz.length && niz[i]!=null) i++;
if (i == niz.length)
throw new GPolPuna ();
niz[i] = p; q += p.tezina ();
return this;
}
public Predmet uzmi (int i)
// Uzimanje sa datog mesta.
throws GPolIndeks, GPolPrazno {
if (i<0 || i>=niz.length) throw new GPolIndeks (i);
if (niz[i] == null)
throw new GPolPrazno (i);
Predmet p = niz[i]; niz[i] = null; q -= p.tezina ();
return p;
}
// Dohvatanje na datom mestu.
public Predmet dohvati (int i)
throws GPolIndeks, GPolPrazno {
if (i<0 || i>=niz.length) throw new GPolIndeks (i);
if (niz[i] == null)
throw new GPolPrazno (i);
return niz[i];
}
public boolean prazno (int i) throws GPolIndeks { // Da li je mesto
if (i<0 || i>=niz.length) throw new GPolIndeks (i); // prazno?
return niz[i] == null;
}
public int kapacitet (){ return niz.length; } // Kapacitet police.
public int slobodno () {
// Broj slobodnih mesta.
int k = 0;
for (int i=0; i<niz.length; i++) if (niz[i] == null) k++;
return k;

51 179


}
public int zauzeto ()
// Broj zauzetih mesta.
{ return kapacitet () - slobodno (); }
public double nosivost () { return maxQ; }
public double teret () { return q; }

// Ukupan teret na polici.

public double jos() { return maxQ - q; }


public String toString () {
String s = new String();
for (int i=0; i<niz.length; i++)
if (niz[i] != null)
s+=i+". " + niz[i] + '\n';
return s.toString ();
}

// Nosivost police.

// Dozvoljeni dodatni teret.

// Tekstualni oblik.

public PolicaNiz prazni () {


// Praznjenje police.
for (int i=0; i<niz.length; niz[i++]=null);
q = 0;
return this;
}
}
// PolicaT.java - Ispitivanje klase polica za predmete.
import polica.*;
import predmeti1.*;
public class PolicaT {
public static class Greska extends Exception { // Klasa za lokalne
// greske.
String por;
Greska (String p) { por = p; }
public String toString () { return "*** GRESKA: " + por; }
}
private static Predmet citaj () throws Greska { // Citanje predmeta.
System.out.print ("Vrsta (S-sfera, K-kvadar)? ");
Predmet p = null;
switch (Citaj.Char ()) {
case 's': case 'S': p = new Sfera (); break;
case 'k': case 'K': p = new Kvadar (); break;
default: throw new Greska ("Nepoznata vrsta predmeta!");
}
System.out.print ("Spec. tez. i dimenzije? ");
p.citaj (); return p;
}
public static void main (String[] varg) {
// Glavna funkcija
System.out.println("Unesi broj mesta na polici?");
int brojMesta = Citaj.Int();
System.out.println("Unesi ukupan kapacitet police u kg.");
double ukupanKapacitet = Citaj.Double();
PolicaNiz p = new PolicaNiz (brojMesta,ukupanKapacitet);
radi: while (true) {
try {
System.out.print (
"\n1. Dodavanje na zadato mesto\n"
+
"2. Dodavanje na prvo slobodno mesto\n" +
"3. Uzimanje sa zadatog mesta\n"
+

52 179


"4. Stanje police\n"
"5. Sadrzaj police\n"
"6. Praznjenje police\n"
"0. Kraj rada\n\n"
"Vas izbor? "

+
+
+
+

);
switch (Citaj.Char()) {
case '1': System.out.print ("Indeks? "); int i = Citaj.Int ();
p.stavi (citaj (), i);
break;
case '2': p.stavi (citaj ());
break;
case '3': System.out.print ("Indeks? ");
System.out.println (p.uzmi(Citaj.Int()));
break;
case '4': System.out.println (
"Kapacitet= " + p.kapacitet() +
" slobodno= " + p.slobodno() +
"\nNosivost= " + p.nosivost() +
" teret= " + p.teret());
break;
case '5': System.out.print (p);
break;
case '6': p.prazni ();
break;
case '0': break radi;
default : throw new Greska ("Nedozvoljeni izbor!");
}
} catch (GPolica g) { System.out.println (g);
} catch (Greska g) { System.out.println (g);
}
}
}
}

2.
Java :
,
.
, .

.
Java
, .
:

package pingpong;
public class PingPong extends Thread {
public String text;
int time;
int num;
public PingPong(String r, int v, int n) {
text = r;
time = v;
num = n;
}

53 179


public void run() {
try {
for (int i = 0; i < num; i++) {
System.out.println(text + " ");
Thread.sleep(time);
}
} catch (InterruptedException e) {
return;
}
}
}
import pingpong.PingPong;
public class PingPongT {
public static void main(String[] argumenti) {
PingPong ping = new PingPong("ping", 333, 10); // 1/3s
ping.start();
PingPong pong = new PingPong("PONG", 1000, 20);// 1s
pong.start();
}
}

package pingpong;
public class PingPong2 implements Runnable {
public String text;
int time;
int num;
public PingPong2(String r, int v, int n) {
text = r;
time = v;
num = n;
}
public void run() {
try {
for (int i = 0; i < num; i++) {
System.out.println(text + " ");
Thread.sleep(time);
}
} catch (InterruptedException e) {
return;
}
}
}
import pingpong.PingPong2;
public class PingPong2T {
public static void main(String[] argumenti) {
Runnable ping = new PingPong2("ping", 333, 10);
Runnable pong = new PingPong2("PONG", 1000, 20);
new Thread(ping).start();
new Thread(pong).start();
}
}

54 179

3.
:
.
. Jelo
(broj_porudzbinea).
.
, , (
100 ms)
.
.
, ,
, ( 500 ms)
,

.

.
.
.
. , .
Java 10
.
:
package restoran;
class Jelo {
private final int brojPorudzbine;
public Jelo(int brojPorudzbine) {this.brojPorudzbine = brojPorudzbine;}
public String toString() {return "Jelo (" + brojPorudzbine + ")";}
}

package restoran;
class Kuvar extends Thread{
private Restoran restoran;
private int brojac = 0;
public Kuvar(Restoran r) {
restoran = r;
}
public void run() {
try {
while (!Thread.interrupted()) {
synchronized (this) {
while (restoran.jelo != null)
wait(); // ... ceka da konobar pokupi jelo
}
if (brojac == restoran.brojJela) {
System.out.println("Nema vise hrane, zatvaramo.");
restoran.zatvoriRestoran();

55 179


} else {
synchronized (restoran.konobar) {
Thread.sleep(500); // vreme da kuvar napravi jelo
restoran.jelo = new Jelo(brojac++);
restoran.konobar.notifyAll();
System.out.println("Jelo spremno! ");
}
}
}
} catch (InterruptedException e) {
System.out.println("Kuvar prekunut.");
}
}
}
package restoran;
class Konobar extends Thread {
private Restoran restoran;
public Konobar(Restoran r) {
restoran = r;
}
public void run() {
try {
while (!Thread.interrupted()) {
synchronized (this) {
while (restoran.jelo == null)
wait(); // ... ceka da kuvar napravi jelo
}
synchronized (restoran.kuvar) {
Thread.sleep(100); // vreme da konobar pokupi jelo
System.out.println("Konobar uzeo " + restoran.jelo);
restoran.jelo = null;
restoran.kuvar.notifyAll(); // spreman da nosi sledece jelo
}
}
} catch (InterruptedException e) {
System.out.println("Konobar prekinut.");
}
}
}
package restoran;
public class Restoran {
Jelo jelo;
int brojJela = 0;
Konobar konobar = new Konobar(this);
Kuvar kuvar = new Kuvar(this);
public Restoran(int brojJela) {
this.brojJela = brojJela;
}
public void otvoriRestoran(){
kuvar.start();
konobar.start();
}

56 179


public void zatvoriRestoran(){
kuvar.interrupt();
konobar.interrupt();
}
}
import restoran.Restoran;
public class RestoranT {
public static void main(String[] args) {
Restoran r = new Restoran(10);
r.otvoriRestoran();
}
}

57 179


.
final. , .
, . ,
.
enum.
:
// Nabrojan tip raznih vrsta jabuka.
enum Jabuka {
Jonatan, ZlatniDel, CrveniDel,Vinska, Ajdared
}

Jonatan, ZlatniDel . (. enumeration


constants). Jabuka.
, Jabuka.
. Enum.
. new .
.
:
Jabuka jab;
jab = Jabuka.CrveniDel;

: values() valueOf().
:
public static nabrojan_tip[ ] values() -
;
public static nabrojan_tip valueOf(String znakovni_niz) -

znakovni_niz.
switch.


(Streams).
. I/O Streams :
(Input) stream
(output) stream

: , ,
.
java.io / / .
/ , :

58 179

3 /

:
FileInputStream -
FileOutputStream -
FileReader -
FileWriter -

Reader .
,
int read()
Reader ,
.
BufferedReader Reader. (buffers) stream FileReader
readLine()
FileReader fr = new FileReader("myFile.txt");
BufferedReader br= new BufferedReader(fr);
readLine() null .

Writer .


void write(int c)
BufferedWriter ( Writer)
newLine() , write(String n)

59 179


close()

Streama ,
Reader. InputStream
, Streama Reader.
InputStream, InputStreamReader.
, InputStreamReader BufferedReader.

,
: int, long, float, double, byte char.
.

.
Object.
. (.
) ,
.

60 179


Double, Float, Long, Integer, Short, Byte, Character Boolean.

.
Character char.
Character(char zn)

zn . char
Character,
char charValue()

.
J2SE 5
.
, .
()
.
,
.
. , /
.


J2SE 5,
() (engl. Generics). ,
.
o ,
.
, .
,
,
.
.
,
() . ,
, .
.

.
.

61 179



:
<T extends nadKlasa>
:
<T extends nadKlasa & nekiInterfejs>

Number:
<T extends Number>.

62 179

1.
,
. , , ,
, 10, 9, 12, 15 8 .
.
for each
.
:
//jabuka.java
public enum Jabuka {
Jonatan(10), ZlatniDel(9), CrveniDel(12), Vinska(15), Ajdared(8);
private int cena;
Jabuka(int c) {
cena = c;
}
public int getCena() {
return cena;
}
}
//jabukaT.java
public class JabukaT {
public static void main(String args[]) {
System.out.println("Cene svih vrsta jabuka:");
for (Jabuka j : Jabuka.values())
System.out.println(j + " kosta " + j.getCena() + " dinara.");
}
}

2.


switch/case
. (main)

.
, , , , ,
, . . 0, 1, 2, 3,
4, 5 .
.
:
public class StatusT {
public enum Status {
STATUS_OPEN(0, "status otvoren"), STATUS_STARTED(1, "status otpocet"), STATUS_INPROGRESS(

63 179


2, "status u izvrsavanju"), STATUS_ONHOLD(3, "status u cekanju"), STATUS_COMPLETED(
4, "status zavrsen"), STATUS_CLOSED(5, "status zatvoren");
private final int status;
private final String description;
Status(int aStatus, String desc) {
this.status = aStatus;
this.description = desc;
}
public int status() {
return this.status;
}
public String description() {
return this.description;
}
}
private static void checkStatus(Status status) {
switch (status) {
case STATUS_OPEN:
System.out.println("Ovo je otvoren status.");
case STATUS_STARTED:
System.out.println("Ovo je startovan status.");
case STATUS_INPROGRESS:
System.out.println("Ovo je status u progresu.");
case STATUS_ONHOLD:
System.out.println("Ovo je status u cekanju.");
case STATUS_COMPLETED:
System.out.println("Ovo je status kompletiran.");
case STATUS_CLOSED:
System.out.println("Ovo je status zavrsen.");
}
}
public static void main(String[] args) {
Status s = Status.STATUS_CLOSED;
checkStatus(s);
}
}

3.

.
kraj. .
:
import java.io.*;
class Esej {
public static void main(String args[]) throws IOException {
String s = new String();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
System.out.println("Ispisite vas esej.");
System.out.println("Unesite 'kraj' u novoj liniji za kraj rada.");

64 179


do {
str = br.readLine();
if (str.equals("kraj")) break;
s+=str + "\n";
} while (true);
System.out.println("Vas esej: ");
System.out.println(s);
}
}

4.

.
kraj.
.
:
import java.io.*;
class Esej {
public static void main(String args[]) throws IOException {
String s = new String();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
System.out.println("Ispisite vas esej.");
System.out.println("Unesite 'kraj' u novoj liniji za kraj rada.");
do {
str = br.readLine();
if (str.equals("kraj"))
break;
s += str + "\n";
} while (true);
System.out.println("Unesite :\n 1.Putanju do fajla\n 2.K.");
radi: while (true) {
switch (Citaj.Int()) {
case 1: {
System.out.println("Putanja do fajla je : ?");
String putanja = Citaj.String();
FileWriter fout;
try {
fout = new FileWriter(putanja);
} catch (FileNotFoundException e) {
System.out.println("Greska u formiranju fajla, da li ste dobro uneli putanju?");
break;
}
try {
fout.write(s);
} catch (IOException e) {
System.out.println("Greska u upisu u fajl.");
}
fout.close();
System.out.println("Fajl sa esejem uspesno kreiran na putanji " + putanja);
}
case 2:
break radi;
default :
System.out.println("Uneli ste pogresnu vrednost.");
}
}

65 179


System.out.println("Kraj rada.");
}
}

5.

,
.
.
:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import usluge.Citaj;
class KopiranjeFajla {
public static void main(String args[]) throws IOException {
int i;
FileInputStream fin;
FileOutputStream fout;
// otvaranje ulaznog fajla
System.out.println("Unesite putanju izvorisnog fajla?");
try {
fin = new FileInputStream(Citaj.String());
} catch (FileNotFoundException e) {
System.out.println("Izvorisni fajl nije pronadjen.");
return;
}
// otvaranje izlaznog fajla
System.out.println("Unesite putanju destinacionog fajla?");
try {
fout = new FileOutputStream(Citaj.String());
} catch (FileNotFoundException e) {
System.out.println("Greska pri kreiranju destinacionog fajla.");
return;
}
// kopiranje fajla
try {
do {
i = fin.read();
if (i != -1)
fout.write(i);
} while (i != -1);
} catch (IOException e) {
System.out.println("Greska prilikom kopiranja");
}
fin.close();
fout.close();
System.out.println("Kraj rada.");
}
}

66 179

6.
:
, .
.

, .
:
package kutija;
public class Kutija<T> {
private T t;
public void stavi(T t) {
this.t = t;
}
public T dohvati() {
return t;
}
}
import kutija.Kutija;
public class KutijaT {
public static void main(String[] args) {
Kutija<Integer> integerKutija = new Kutija<Integer>();
integerKutija.stavi(new Integer(10));
System.out.println("Objekat u kutiji je " + integerKutija.dohvati());
Kutija<Character> charKutija = new Kutija<Character>();
charKutija .stavi(new Character('x'));
System.out.println("Objekat u kutiji je " + charKutija .dohvati());
}
}

7.
:


( Comparable).

. .


.
:
package minMax;
public interface MinMaxKolekcije<T extends Comparable<T>> {
public T min();
public T max();
}
package minMax;
public class MinMaxNiz<T extends Comparable<T>> implements MinMaxKolekcije<T> {

67 179


private T[] nizElemenata;
public MinMaxNiz(T[] o) { nizElemenata = o; }
public T min() {
T v = nizElemenata[0];
for(int i=1; i < nizElemenata.length; i++)
if(nizElemenata[i].compareTo(v) < 0) v = nizElemenata[i];
return v;
}
public T max() {
T v = nizElemenata[0];
for(int i=1; i < nizElemenata.length; i++)
if(nizElemenata[i].compareTo(v) > 0) v = nizElemenata[i];
return v;
}
}
import minMax.MinMaxNiz;
public class MinMaxNizT {
public static void main(String args[]) {
Integer inums[] = {3, 6, 2, 8, 6 };
Character chs[] = {'b', 'r', 'p', 'w' };
MinMaxNiz<Integer> iob = new MinMaxNiz<Integer>(inums);
MinMaxNiz<Character> cob = new MinMaxNiz<Character>(chs);
System.out.println("Maks vrednost medju celobrojnim: " + iob.max());
System.out.println("Min vrednost medju celobrojnim: " + iob.min());
System.out.println("Maks vrednost medju karakterima: " + cob.max());
System.out.println("Min vrednost medju karakterima: " + cob.min());
}
}

68 179


Comparable

7 Comparable

Comparable

:
int compareTo(T e) - , ,
, o.

java.util .
.
. .
, framework .
/ . .
.
,
.

Collection

Set

SortedSet

HashSet

List

LinkedHashSet

TreeSet

ArrayList

LinkedList
8

Collection - K . :

boolean add(Object obj)


boolean addAll(Collection c) - / ;

69 179

boolean remove(Object obj)


boolean removeAll(Collection c) - / ;
Iterator iterator( ) - ;
Object[ ] toArray() - ,
.
Set -
:
SortedSet - ;
HashSet - ;
TreeSet class - ;
LinkedHashSet class
.
List - ,
ArrayList - ;
LinkedList - .
Iterator - . :
boolean hasNext() -
Object next() -
Object remove() - ,

void add(Object obj) -
next()
Maps - ,
/ :
boolean containsKey(Object k) - ;
boolean containsValue(Object v) - ;
Object get(Object k) - ;
Object put(Object k, Object v) - ,
, null
.
HashMap, TreeMap
HashMap -
TreeMap - ,
, Comparable
( )

70 179


Map

SortedMap

HashMap

TreeMap
9

StringBuilder StringBuffer
StringBuffer StringBuilder String,
. String .
.
StringBuffer , StringBuilder .
.
int length() int capacity().
, .

StringBuffer append(String str)


StringBuffer append(int num)
StringBuffer append(Object obj) - ,
.
String

StringBuffer insert(int index, String str)


StringBuffer insert(int index, char ch)
StringBuffer insert(int index, Object obj)
String.
String
StringBuffer replace(int startIndex, int endIndex, String str) -

StringBuffer reverse() - .

StringTokenizer
.
.
.
, delimiter
(tokens)
'#':
Lana#Pera#Maja#Mika
:
Lana
Pera
Maja
Mika

71 179


| ili : ili tab
.
.
StringTokenizer java.util.
,

default \t\n\r
StringTokenizer r = new StringTokenizer(line);


StringTokenizera
String line = myFile.readline();
StringTokenizer t = new StringTokenizer(line, #);
StringTokenizer s = new StringTokenizer(line, ,\&\|);

StringTokenizer :
String nextToken() -

boolean hasMoreTokens() - boolean true

10

Java
.
e sae sae a
int Integer.parseInt(String s)
double Double.parseDouble(String s)
NumberFormatException


Java
.
.
:
,
,
.
Serializable.

72 179

11

12


ObjectOutputStream ObjectInputStream.

transient,
.
:
public class T implements Serializable {
transient int a;
// nee se ouvati
// ouvae se
int b;
}

, :
import java.io.*;
public class TestKreirajBin {
public static void main(String[] args) {
ObjectOutputStream oos = null;
try {
Racun racun1 = new Racun(0, "Pera Peric", 200);
Racun racun2 = new Racun(1, "Mika Mikic", 300);
FileOutputStream fos = null;
fos = new FileOutputStream("SerializedObj.ser");
oos = new ObjectOutputStream(fos);
oos.writeObject(racun1);
oos.writeObject(racun2);
} catch (Exception e) {e.printStackTrace(); }
finally {
try {if (oos != null) oos.close();
} catch (Exception e) { }
}
}

73 179

, :
import java.io.*;
public class TestUcitajBin {
public static void main(String[] args) {
try {
FileInputStream fis = null;
ObjectInputStream ois = null;
fis = new FileInputStream("SerializedObj.ser");
ois = new ObjectInputStream(fis);
Racun racun1 = (Racun) ois.readObject();
Racun racun2 = (Racun) ois.readObject();
ois.close();
System.out.println("Racun 1: " + racun1);
System.out.println("Racun 2: " + racun2);
} catch (Exception e) {
e.printStackTrace();
}
}
}

74 179

1.
:
Comparable,
.
.
.
(
)

.
( ,
).
:
package elementi;
public class Element implements Comparable<Element>{
private String simbol;
private int redniBroj;
public Element(String simbol, int redniBroj) {
super();
this.simbol = simbol;
this.redniBroj = redniBroj;
}
public String toString() {
return simbol;
}
public int compareTo(Element element) {
if (redniBroj < element.redniBroj) return -1;
else if (redniBroj > element.redniBroj) return 1;
else return 0;
}
public String getSimbol() {
return simbol;
}
}
import elementi.Element;
public class ElementT {
public static Element citajElement() {
System.out.println("Unesite simbol elementa?");
String oznaka = Citaj.String();
System.out.println("Unesite redni broj elementa?");
int redniBr = Citaj.Int();
return new Element(oznaka, redniBr);
}
public static void main(String[] args) {
System.out.println("Unesite dva elementa.");
Element e1 = citajElement();
Element e2 = citajElement();

75 179


if ((e1.compareTo(e2) == 0 && !e1.getSimbol().equalsIgnoreCase(e2.getSimbol()))
|| (e1.compareTo(e2) != 0 && e1.getSimbol().equalsIgnoreCase(e2.getSimbol()))) {
System.out.println("Uneli ste ne validan par elemenata.");
} else {
if (e1.compareTo(e2) < 0) {
System.out.println("Element " + e1.getSimbol()
+ " dolazi pre u Mendeljevom sistemu od elementa "
+ e2.getSimbol());
} else if (e1.compareTo(e2) > 0) {
System.out.println("Element " + e1.getSimbol()
+ " dolazi posle elementa " + e2.getSimbol()
+ " u Mendeljevom sistemu.");
} else {
System.out.println("Uneli ste dva ista elementa "
+ e1.getSimbol()
+ " koji su na istom mestu u Mendeljevom sistemu elemenata.");
}
}
}
}

2.
:
( 6, 1, ).
.
, .
TreeMap.
x
1 ( : NaCl, H2SO4).
Jedinjenje H
(H20) (
)..
:
package elementi;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.Map.Entry;
public class Jedinjenje {
private Map<Element, Integer> mapaJedinjenja;
public Jedinjenje() {
mapaJedinjenja = new TreeMap<Element, Integer>();
}
public void dodaj(Element e, int broj) {
mapaJedinjenja.put(e, new Integer(broj));
}
public String toString() {
StringBuilder rezultat = new StringBuilder();
Set<Entry<Element, Integer>> set = mapaJedinjenja.entrySet();
Iterator<Entry<Element, Integer>> i = set.iterator();

76 179


while (i.hasNext()) {
Entry<Element, Integer> me = i.next();
rezultat.append(me.getKey());
if (me.getValue()!= 1) rezultat.append(me.getValue());
}
return rezultat.toString();
}
}
import elementi.Element;
import elementi.Jedinjenje;
public class JedinjenjeT {
public static void main(String[] args){
Element h = new Element("H", 1);
Element o = new Element("O", 8);
Jedinjenje j = new Jedinjenje();
j.dodaj(h, 2);
j.dodaj(o, 1);
System.out.println("Ovo je jedinjenje " + j);
}
}

3.
:
( rrayList).
. (
), ( )
( ).
kg, : [, j, ,j]
, : .

, , (H20
C7H5NaO2) ( ).
:
package elementi;
import java.util.ArrayList;
import java.util.List;
public class Sastojak {
private String ime;
private List<Jedinjenje> jedinjenja;
private int kolicina;
private double jedCena;
private double kalorijskaVrednost;
public Sastojak(String ime, int kolicina,
String mera, double jedCena, double kalorijskaVrednost) {
super();
this.ime = ime;
this.jedinjenja = new ArrayList<Jedinjenje>();

77 179


this.kolicina = kolicina;
this.jedCena = jedCena;
this.kalorijskaVrednost = kalorijskaVrednost;
}
public void dodaj(Jedinjenje e){
jedinjenja.add(e);
}
public String toString(){
StringBuilder rezultat = new StringBuilder(kolicina + ", " + ime + ": [");
for (Jedinjenje j : this.jedinjenja){
rezultat.append(j);
}
rezultat.append("]").append(" ").append(ukupnaKalVrednost()).append(" kJ");
rezultat.append(", Cena ").append(ukupnaCena());
return rezultat.toString();
}
public double ukupnaKalVrednost(){
return kolicina*kalorijskaVrednost;
}
public double ukupnaCena(){
return kolicina*jedCena;
}
}
import elementi.Element;
import elementi.Jedinjenje;
import elementi.Sastojak;
public class SastojakT {
public static void main(String[] args){
Element h = new Element("H", 5);
Element o = new Element("O", 15);
Element c = new Element("C", 1);
Element na = new Element("Na", 3);
// natrijum benzoat C7H5NaO2
Jedinjenje voda = new Jedinjenje();
voda.dodaj(h, 2);
voda.dodaj(o, 1);
Jedinjenje natrijumBenzoat = new Jedinjenje();
natrijumBenzoat.dodaj(c, 7);
natrijumBenzoat.dodaj(h, 5);
natrijumBenzoat.dodaj(na, 1);
natrijumBenzoat.dodaj(o, 2);
Sastojak s = new Sastojak("Voda", 3, 5, 20);
s.dodaj(voda);
s.dodaj(natrijumBenzoat);
System.out.println(s);
}
}

78 179

4.
(
3, 1, ) ( 3, 2, )
.
(
).
:
package osoba;
import java.io.Serializable;
import usluge.Citaj;
public class Osoba implements Serializable{

private static final long serialVersionUID = -8787964824236111665L;


private String ime;
private String prezime;
private double tezina;
private int id;
private static int generatorId = 0;
public Osoba(String ime, String prezime, double tezina) {
super();
id = generatorId++;
this.ime = ime;
this.prezime = prezime;
this.tezina = tezina;
}
public Osoba(){
id = generatorId++;
}
public void citaj () {
System.out.print ("Ime osobe? "); ime = Citaj.String ();
System.out.print ("Prezime osobe? "); prezime = Citaj.String();
System.out.print("Tezina?"); tezina = Citaj.Double();
}
public String toString(){
return ime + " " + prezime + "(" + tezina + ")";
}
public String getIme() {
return ime;
}
public String getPrezime() {
return prezime;
}
public double getTezina() {
return tezina;
}
public double getId(){
return id;

79 179


}
}
package osoba;
import java.io.Serializable;
import usluge.Citaj;
public class Korisnik extends Osoba implements Serializable{
private static final long serialVersionUID = -2975784773932415452L;
private String korisnickoIme;
private String lozinka;
public Korisnik(){
super();
}
public void citaj(){
super.citaj();
System.out.println("Korisnicko ime?");korisnickoIme = Citaj.String();
System.out.println("Lozinka?"); lozinka = Citaj.String();
}
public String getKorisnickoIme(){
return korisnickoIme;
}
public String toString(){
return korisnickoIme + "," + super.toString();
}
}
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import osoba.Korisnik;
import osoba.Osoba;
public class SnimanjeOsobaT {
public static void main(String args[]) {
System.out.println("Unesite osobu:");
Osoba o1 = new Osoba();
o1.citaj();
System.out.println("Unesite korisnika:");
Korisnik k1 = new Korisnik();
k1.citaj();
System.out.println("Unesite putanju gde treba kreirati fajl?");
String putanja = Citaj.String();
try {
FileOutputStream fos = new FileOutputStream(putanja);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(o1);
oos.writeObject(k1);
oos.flush();
oos.close();
} catch (Exception e) {
System.out.println("Izuzetak tokom serializacije: " + e);
System.exit(0);
}

80 179


try {
Object prviObjekat;
Object drugiObjekat;
FileInputStream fis = new FileInputStream(putanja);
ObjectInputStream ois = new ObjectInputStream(fis);
prviObjekat = ois.readObject();
drugiObjekat = ois.readObject();
ois.close();
System.out.println("Prvi objekat procitan: " + prviObjekat);
System.out.println("Drugi objekat procitan: " + drugiObjekat);
} catch (Exception e) {
System.out.println("Izuzetak tokom deserializacije: " + e);
System.exit(0);
}
}
}

5.

.
,
( )
.
:
import java.io.File;
class DirektorijumT {
public static void main(String args[]) {
System.out.println("Unesite direktorijum?");
String dir = Citaj.String();
File f1 = new File(dir);
if (f1.isDirectory()) {
System.out.println("Sadrzaj direktorijuma " + dir);
String s[] = f1.list();
System.out .print ("\n=================================================\n") ;
for (int i = 0; i < s.length; i++) {
File f = new File(dir + "/" + s[i]);
if (f.isDirectory()) {
System.out.format ("%32.32s \t direktorijum\n", s[i]) ;
} else {
System.out.format ("%32.32s \t datoteka\n", s[i]) ;
}
}
} else {
System.out.println(dir + " Nije direktorijum");
}
}
}

6.

. StringTokenizer
,
.

81 179


:
import java.io.*;
import java.util.*;
public class ObradaBrojevaT {
public static void main(String[] args) throws IOException {
int brojTokena = 0;
int nizBrojeva[];
int zbir = 0;
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader keyboardInput = new BufferedReader(input);
// Dohvati jednu liniju sa izlaza
System.out.print("Unesite sekvencu celih brojeve razdvojenih "
+ "zarezima (`,'): ");
StringTokenizer podaci = new StringTokenizer(keyboardInput.readLine(),
",");
// Dohvati broj tokena u liniji i inicijalizuj niz
brojTokena = podaci.countTokens();
System.out.println("Broj tokena = " + brojTokena + "\n");
nizBrojeva = new int[brojTokena];
// Stampaj tokene i izvedi zbir
for (int i = 0; i < brojTokena; i++) {
nizBrojeva[i] = new Integer(podaci.nextToken()).intValue();
System.out.println(nizBrojeva[i]);
zbir = zbir + nizBrojeva[i];
}
// Stampaj ukupnu i srednju vrednost
System.out.println("------------\n" + zbir + " (srednja vrednost = " + zbir
/ brojTokena + ")");
}
}
:
import java.io.*;
import java.util.*;
public class ObradaBrojevaT {
public static void main(String[] args) throws IOException {
int brojTokena = 0;
int nizBrojeva[];
int zbir = 0;
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader keyboardInput = new BufferedReader(input);
// Dohvati jednu liniju sa izlaza
System.out.print("Unesite sekvencu celih brojeve razdvojenih "
+ "zarezima (`,'): ");
StringTokenizer podaci = new StringTokenizer(keyboardInput.readLine(),
",");
// Dohvati broj tokena u liniji i inicijalizuj niz

82 179


brojTokena = podaci.countTokens();
System.out.println("Broj tokena = " + brojTokena + "\n");
nizBrojeva = new int[brojTokena];
// Stampaj tokene i izvedi zbir
int i = 0;
while (podaci.hasMoreTokens()){
nizBrojeva[i] = new Integer(podaci.nextToken()).intValue();
System.out.println(nizBrojeva[i]);
zbir = zbir + nizBrojeva[i++];
}
// Stampaj ukupnu i srednju vrednost
System.out.println("------------\n" + zbir + " (srednja vrednost = " + zbir
/ brojTokena + ")");
}
}

83 179

7 8

.
: Graphical User Interface (GUI). GUI a
a: ,
.
. , GUI
.
GUI.

AWT
GUI a java.awt . GUI
javax.swing, . Swing
w, .
AWT Abstract Windowing Toolkit ( )
:
java.awt paket GUI
java.awt a
: (button), - (radio-button),
(checkbox), (scrollbar), (text box), (list), (combo-box,
choice).

java.awt
7.1.

7.1: java.awt

Component GUI

84 179


o , ,

Container Component AWT

Window je Container

a Frame Window

o Frame

Dialog Window .
:
o ,

o

o :
public Dialog(Frame roditelj, String naslov, boolean modalni)
o
o , a a setVisible(Boolean)

Graphics /
o Graphics
o (clipping)
o ,

o Component Graphics
getGraphics()

Event ( )
o GUI " "
o ()

o aa a aa
o ee a eae a a ee aaa
ae <Ctrl>, <Shift>, <Alt>

Panel
o Container

o ,

o ,

(layout manager).
a aa a a LayoutManager.
:

85 179

FloatLayout -

BorderLayout

CardLayout rasporeuje ( )

GridLayout

GridBagLayout GridBagConstraints


AWT .
(sources) , a aa (listeners)
. .
.
.
(handlers) "" .
"" "".
.
1.0 ( )
:

java.util: EventObject ; Object getSource()


;

java.awt: AWTEvent AWT


; int getID();

java.awt.event: aa AWTEvent.


.
: public class Obradjivac implements ActionListener {}


komponentaIzvor.addActionListener(obradjivac);

. :
public voidactionPerformed(ActionEvente) {/*...*/}


, , .
, .
,
.
.
.
AWT :

86 179

, , .
, .
.
.
.
: , , , , .
( , , ),
( , . scrollbar), ( )
( ).

87 179

1.

. java.awt.

:
// Zdravo.java - Jednostavan program s prozorom (koriscenjem AWT-a).
AWT
import java.awt.*;
import java.awt.event.*;
public class Zdravo extends Frame {
private Zdravo () {
// Sastavljanje prozora.
super ("Prozor");
setSize (200, 150);
CENTER));
add (new Label ("Zdravo!", Label.CENTER
addWindowListener (new ProzorDogadjaji ());
setVisible (true);
}
private class ProzorDogadjaji extends WindowAdapter { // Rukovanje
public void windowClosing (WindowEvent d)
// dogadjajima
{ dispose (); }
// prozora.
}
public static void main (String[] varg)
{ new Pozdrav (); }

// Glavna funkcija.

2.
.
, .
.
java.awt.

88 179

:
import java.awt.*;
import java.awt.event.*;
public class PrimerMenija extends Frame implements ActionListener {
String izborIzMenija = "Izaberite stavku iz menija...";
public PrimerMenija() {
super("Primer Menija");
setSize(300, 200);
dodajMenije();
setVisible(true);
}
void dodajMenije() {
MenuBar trakaMenija = new MenuBar();
Menu prviMeni = new Menu("Prvi meni");
Menu drugiMeni = new Menu("Drugi meni");
prviMeni.add("Prvi meni, prva stavka");
prviMeni.add("Prvi meni, druga stavka");
prviMeni.add("Kraj");
prviMeni.addActionListener(this);
drugiMeni.add("Drugi meni, prva stavka");
drugiMeni.add("Drugi meni, druga stavka");
drugiMeni.addActionListener(this);
trakaMenija.add(prviMeni);
trakaMenija.add(drugiMeni);
setMenuBar(trakaMenija);
}
public void paint(Graphics g) {
g.drawString(izborIzMenija, 50, 100);
}
public void actionPerformed(ActionEvent e) {
String komanda = e.getActionCommand();
if (komanda.equals("Kraj"))
System.exit(0);
else {
izborIzMenija = "Izabrali ste " + komanda + ".";
repaint();
}
}
public static void main(String args[]) {
PrimerMenija prozor = new PrimerMenija();
}
}

89 179

MenuBar

Menu

MenuItem Menu theMenu.add(String)

Menu MenuBar theMenuBar.add(theMenu)

theFrame.setMenuBar(theMenuBar)

a ActionListener

a a a
ActionListener

ea
theMeni.addActionListener(this);

public void actionPerformed (ActionEvent e)

actionPerformed
e.getActionCommand()

3.
dialog.
. , .
java.awt.

:
import java.awt.*;
import java.awt.event.*;
public class PrimerDijaloga extends Frame implements ActionListener {
class Dijalog extends Dialog {
Dijalog(Frame roditelj) {
super(roditelj, "Dijalog", false);
setSize(130, 80);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
setVisible(false);
}
});
}
}

90 179


private Dijalog dijalog;
public PrimerDijaloga() {
super("Primer dijaloga");
setSize(130, 80);
dodajMenije();
dijalog = new Dijalog(this);
setVisible(true);
}
void dodajMenije() {
MenuBar trakaMenija = new MenuBar();
Menu meni = new Menu("Komande");
meni.add("Otvori");
meni.add("Zatvori");
meni.add("Kraj");
meni.addActionListener(this);
trakaMenija.add(meni);
setMenuBar(trakaMenija);
}
public void actionPerformed(ActionEvent e) {
String komanda = e.getActionCommand();
if (komanda.equals("Kraj"))
System.exit(0);
else if (komanda.equals("Otvori"))
dijalog.setVisible(true);
else if (komanda.equals("Zatvori"))
dijalog.setVisible(false);
}
public static void main(String args[]) {
PrimerDijaloga prozor = new PrimerDijaloga();
}
}

4.

. , .
java.awt.

:
import java.awt.*;
import java.awt.event.*;
public class PrimerPanela extends Frame {
public PrimerPanela() {
super("Panel primer");

91 179


setSize(150, 100);
dodajPanele();
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setVisible(true);
}
void dodajPanele() {
Panel panel1 = new Panel();
panel1.setBackground(Color.green);
panel1.add(new Button("jedan"));
panel1.add(new Button("dva"));
add("West", panel1);
Panel panel2 = new Panel();
panel2.setBackground(Color.yellow);
panel2.add(new Button("tri"));
panel2.add(new Button("cetiri"));
add("South", panel2);
}
public static void main(String args[]) {
PrimerPanela prozor = new PrimerPanela();
}
}

5.

( ). ,
. .
java.awt.

:
import java.awt.*;
import java.awt.event.*;
public class PrimerRasporeda extends Frame {
public PrimerRasporeda() {
super("Raspored");
dodajPanele();
setSize(220, 270);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {

92 179


dispose();
}
});
setVisible(true);
}
void dodajPanele() {
setLayout(new GridLayout(2, 2));
Panel flow = new Panel();
Panel card = new Panel();
Panel border = new Panel();
Panel grid = new Panel();
card.setLayout(new CardLayout());
border.setLayout(new BorderLayout());
grid.setLayout(new GridLayout(2, 3));
dodajTastere(flow);
dodajTastere(card);
dodajTastere(border);
dodajTastere(grid);
add(flow);
add(card);
add(border);
add(grid);
}
void dodajTastere(Panel panel) {
panel.add("North", new Button("jedan"));
panel.add("West", new Button("dva"));
panel.add("South", new Button("tri"));
panel.add("East", new Button("cetiri"));
panel.add("Center", new Button("pet"));
}
public static void main(String args[]) {
PrimerRasporeda prozor = new PrimerRasporeda();
}
}

93 179

6.

. .
. java.awt.

:
import java.awt.*;
import java.awt.event.*;
public class Dogadjaj extends Frame implements ActionListener {
private Button dugme;
private int broj = 0;
public Dogadjaj() {
super("Dogadjaj");
setSize(200, 200);
kreirajDugme();
setVisible(true);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
private void kreirajDugme() {
dugme = new Button("Pritisni");
add(dugme);
dugme.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
dugme.setLabel("Pritisnuto " + ++broj + ". put");
}
public static void main(String[] args) {
Dogadjaj d = new Dogadjaj();
}
}

94 179

7.

.

:
// Zbir.java - Zbir dva broja u grafickom okruzenju.
import java.awt.*;
import java.awt.event.*;
public class Zbir extends Frame {
private TextField prvi, drugi; // Prvi i drugi sabirak
private Label rez; // Rezultat.
private Button radi; // Pokretac racunanja.
private Zbir() { // Sastavljanje prozora.
super("Zbir");
setBounds(100, 100, 200, 120);
Dogadjaji());
addWindowListener(new ProzorDogadjaji());
setLayout(new GridLayout(4, 2));
add(new Label("Prvi sabirak:"));
add(prvi = new TextField("0"));
add(new Label("Drugi sabirak:"));
add(drugi = new TextField("0"));
add(new Label("Zbir:"));
add(rez = new Label("0"));
add(new Label());
add(radi = new Button("Racunaj"));
radi.addActionListener(new RadiAkcija());
setVisible(true);
}
private class RadiAkcija implements ActionListener { // Rukovanje
public void actionPerformed(ActionEvent d) { // dogadjajima
try { // dugmeta.
rez.setText(Integer.toString(Integer.parseInt
parseInt(prvi.getText())
+ Integer.parseInt(drugi.getText())));
(drugi.getText())));
} catch (NumberFormatException g) {
rez.setText("GRESKA");
}
}
}
private class ProzorDogadjaji extends WindowAdapter { // Rukovanje
public void windowClosing(WindowEvent d) // dogadjajima
{
dispose();
} // prozora.
}

95 179


public static void main(String[] varg) // Glavna funkcija.
{
new Zbir();
}
}

8.

.

:
// Rastojanje.java - Rastojanje dve tacke u grafickom okruzenju.
import java.awt.*;
import java.awt.event.*;
public class Rastojanje extends Frame {
private TextField[] koord = new TextField[6]; // Niz koordinata.
private Label rez = new Label ("0");
// Rezultat.
private Rastojanje () {
// Inicijalizacija:
super ("Rastojanje");
setBounds (100, 100, 250, 150);
// - popunjavanje prozora,
popuniProzor ();
setVisible (true);
addWindowListener (new WindowAdapter () { // - obrada dogadjaja prozora,
public void windowClosing (WindowEvent d) { dispose (); }
});
}
private void popuniProzor () {
// Popunjavanje prozora:
Panel plo = new Panel (); add (plo, "Center"); // - ploca za koordinate,
plo.setLayout (new GridLayout(4, 2, 4, 2));
plo.add (new Label ("Prva tacka:"));
plo.add (new Label ("Druga tacka:"));
KoordPromena osmatrac = new KoordPromena ();
for (int i=0; i<6; i++) {
(koord[i] = new TextField ("0")).addTextListener (osmatrac);
plo.add (koord[i]);
}
add (plo = new Panel (new GridLayout (4,1)), "West"); // - ploca za
String[] ozn = {"", " X ", " Y ", " Z "};
// oznacavanje
for (int i=0; i<4; plo.add (new Label (ozn[i++]))); // vrsta,

96 179


add (plo = new Panel (), "North");
plo.add (new Label ("Rastojanje:"));
plo.add (rez);

// - ploca za rezultat.

}
private class KoordPromena implements TextListener { // Racunanje
public void textValueChanged (TextEvent d) {
// rastojanja,
try {
// kad god se
rez.setText (
// promeni neka
Double.toString (
// koordinata.
Math.sqrt(
Math.pow (Double.parseDouble(koord[0].getText())Double.parseDouble(koord[1].getText()) ,2) +
Math.pow (Double.parseDouble(koord[2].getText())Double.parseDouble(koord[3].getText()) ,2) +
Math.pow (Double.parseDouble(koord[4].getText())Double.parseDouble(koord[5].getText()) ,2)
)
)
);
} catch (NumberFormatException g) {
rez.setText ("GRESKA!");
}
validate (); // (da bi se komponente prozora prerasporedile
}
// zbog promene broja cifara u rezultatu)
}
public static void main (String[] varg)
{ new Rastojanje (); }

// Glavna funkcija.

97 179

9.

.
.

:
// Kalkulator.java - Jednostavan kalkulator u grafickom okruzenju.
import java.awt.*;
import java.awt.event.*;
public class Kalkulator extends Frame {
private long x, y;
// Registri kalkulatora.
private Label[] reg = new Label [2];
// Prikaz registara.
private static final int X = 0, Y = 1; // Indeksi registara.
private boolean noviBroj = true;
// Unosi se novi broj.
private int osnova = 10;
// Osnova brojevnog sistema.
private Button[] cifre = new Button [16]; // Dugmad s ciframa.
private boolean unisti = false;
// Da li unistiti prozor pri
// zatvaranju?
private Panel ploRegistri () {
// Polja teksta za registre.
Panel ploca = new Panel (new GridLayout (2, 1));
Color[] podloge = {Color.ORANGE, Color.GRAY};
Color[] slova = {Color.BLUE, Color.WHITE};
for (int i=0; i<2; i++) {
reg[i] = new Label ("0", Label.RIGHT);
reg[i].setFont (new Font (null,, Font.BOLD, 20));
reg[i].setForeground (slova[i]);
reg[i].setBackground (podloge[i]);
ploca.add (reg[i]);
}
return ploca;
}
private void prikazi () {
// Prikaz sadrzaja registara.
reg[X].setText (Long.toString (x, osnova));
reg[Y].setText (Long.toString (y, osnova));
}
private Panel ploCifre () {

// Dugmad s ciframa.

98 179


Panel ploca = new Panel (new GridLayout (4, 4));
CifraAkcija osmatrac = new CifraAkcija ();
for (int i=0; i<16; i++) {
ploca.add (cifre[i] = new Button (Integer.toString (i,16)));
cifre[i].addActionListener (osmatrac);
cifre[i].setEnabled (i < osnova);
}
return ploca;
}
private class CifraAkcija implements ActionListener { // Obrada
public void actionPerformed (ActionEvent d) {
// pritisaka
String cif = ((Button)d.getSource ()).getLabel (); // na cifre.
String staro = reg[Y].getText();
reg[Y].setText ((noviBroj || staro.equals("0") ? "" : staro) + cif);
noviBroj = false;
try {
y = Long.parseLong (reg[Y].getText(), osnova);
} catch (NumberFormatException g) {
reg[Y].setText ("G R E S K A");
noviBroj = true;
}
}
}
private Panel ploOsnove () {
// Radio dugmad s osnovama
String[] ozn = {"2", "8", "10", "16"}; // brojevnih sistema.
Panel ploca = new Panel (new GridLayout (ozn.length, 1));
ploca.setBackground (Color.YELLOW);
CheckboxGroup grupa = new CheckboxGroup ();
OsnovaPromena osmatrac = new OsnovaPromena ();
for (String s: ozn) {
Checkbox radio = new Checkbox (s, grupa,
Integer.parseInt(s)==osnova);
ploca.add (radio);
radio.addItemListener (osmatrac);
}
return ploca;
}
private class OsnovaPromena implements ItemListener { // Obrada
public void itemStateChanged (ItemEvent d) {
// promene
String ozn = ((Checkbox)(d.getSource())).getLabel(); // osnove
osnova = Integer.parseInt (ozn);
// brojevnog
for (int i=0; i<16; i++)
// sistema.
cifre[i].setEnabled (i < osnova);
prikazi ();
}
}
private Panel ploOperatori () {
// Dugmad s operatorima.
String[] ozn = {"=", "0", "+=", "|=", "-=", "^=",
"*=", "&=", "/=", "<<=", "%=", ">>="};
Panel ploca = new Panel();
ploca.setLayout (new GridLayout ((ozn.length+1)/2, 2));
OperatorAkcija osmatrac = new OperatorAkcija ();
for (String s: ozn) {
Button dugme = new Button (s);
dugme.setForeground (Color.BLUE);
dugme.setBackground (Color.YELLOW);
dugme.addActionListener (osmatrac);
ploca.add (dugme);
}

99 179


return ploca;
}
private class OperatorAkcija implements ActionListener { // Obrada
public void actionPerformed (ActionEvent d) {
// pritisaka na
try {
// operatore.
switch (((Button)d.getSource()).getLabel().charAt(0)) {
case '=': x = y; break; case '0': y = 0; break;
case '+': x += y; break; case '|': x |= y; break;
case '-': x -= y; break; case '&': x &= y; break;
case '*': x *= y; break; case '^': x ^= y; break;
case '/': x /= y; break; case '<': x <<= y; break;
case '%': x %= y; break; case '>': x >>= y; break;
}
prikazi ();
} catch (ArithmeticException g) {
reg[Y].setText ("G R E S K A");
}
noviBroj = true;
}
}
public Kalkulator (int x, int y) {
// Inicijalizacija:
super ("Kalkulator");
setBounds (x, y, 305, 242);
setResizable (false);
add (ploRegistri(), BorderLayout.NORTH); // - popunjavanje prozora,
add (ploCifre(), BorderLayout.CENTER);
add (ploOsnove(), BorderLayout.WEST);
add (ploOperatori(), BorderLayout.EAST);
addWindowListener (new WindowAdapter () {
public void windowClosing (WindowEvent d) // - unistavanje prozora.
{ if (unisti) dispose (); else setVisible (false); }
});
}
public Kalkulator () { this (250, 50); } // Podrazumevani konstruktor.
public long rezultat () { return x; }

// Dohvatanje rezultata.

public static void main (String[] varg) { // Glavna funkcija.


Kalkulator kalk = new Kalkulator ();
kalk.setVisible (true);
kalk.unisti = true;
}
}

// KalkulatorT.java - Nezavisan program koji koristi kalkulator.


import java.awt.*;
import java.awt.event.*;
public class KalkulatorT extends Frame {
Kalkulator kalk = new Kalkulator (420, 50); // Prozor kalkulatora.
Label rez = new Label ("", Label.CENTER); // Ocitana vrednost.
private void popuniProzor () {
add (rez, "North");

// Popunjavanje prozora:
// - polje rezultata,

Panel ploca = new Panel (); add (ploca, "South"); // - otvaranje


Button dugme = new Button ("Otvori");
// kalkulatora,

100 179


ploca.add (dugme);
dugme.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent d) {
kalk.setVisible (true);
}
});
ploca.add (dugme = new Button ("Ocitaj"));
// - ocitavanje
dugme.addActionListener (new ActionListener () { // kaklulatora,
public void actionPerformed (ActionEvent d) {
rez.setText (Long.toString (kalk.rezultat ()));
}
});
ploca.add (dugme = new Button ("Zatvori"));
// - zatvaranje
dugme.addActionListener (new ActionListener () { // kalkulatora.
public void actionPerformed (ActionEvent d) {
kalk.setVisible (false);
}
});
}
private KalkulatorT () {
// Inicijalizacija:
super ("Neki program");
setBounds (100, 50, 300, 200);
popuniProzor ();
// - popunjavanje prozzora,
addWindowListener (new WindowAdapter () {
public void windowClosing (WindowEvent d) // - unistavanje oba
{ kalk.dispose (); dispose (); }
// prozora,
});
}
public static void main (String[] varg) {
new KalkulatorT ().setVisible (true);
}

// Glavna funkcija.

101 179

- , , ,
.
, .
, .
.
TCP , point-to-point .
TCP-a, .
(eng. socket) . ,
/ .

Socket
socket port.
, socket .
hostname , port
. , port
( ).

, . ,
, .
socket ,
.

, , socket
.

: Socket
. Socket port-, TCP
.
IP port-. TCP
.
.

102 179


:
1. socket.
2. socket-.
3. .
4. .
5. socket.
3,
, .

103 179

1. EchosClient Socket

.
.
:
import java.io.*;
import java.net.*;
public class EchoClient {
public static void main(String[] args) throws IOException {
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
echoSocket = new Socket("localhost", 4444);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: 127.0.0.1.");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for "
+ "the connection to: 127.0.0.1.");
System.exit(1);
}
BufferedReader stdIn = new BufferedReader(new InputStreamReader(
System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("echo: " + in.readLine());
}
out.close();
in.close();
stdIn.close();
echoSocket.close();
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.ServerSocket;
public class EchoServer {
public static void main(String[] args) throws Exception {

104 179


// create socket
int port = 4444;
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("Started server on port " + port);
PrintWriter out = null;
BufferedReader in = null;
// repeatedly wait for connections, and process
while (true) {
// a "blocking" call which waits until a connection is requested
Socket clientSocket = serverSocket.accept();
System.out.println("Accepted connection from client");
out = new PrintWriter(clientSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
// waits for data and reads it in until connection dies
// readLine() blocks until the server receives a new line from client
String s;
while ((s = in.readLine()) != null) {
out.println(s);
}
// close IO streams, then socket
System.out.println("Closing connection with client");
out.close();
in.close();
clientSocket.close();
}
}
}

2.
/ .
.

KnockKnock .
package net;
import java.io.*;
public class Message implements Serializable{
static long ID = 0;
long messageID;
String data;
public Message(){
messageID = ID++;
}
public Message(String s){
messageID = ID++;
data = s;
}
public Message(String s, int sentID){
messageID = sentID;

105 179


data = s;
}
public Message(Message m){
messageID = m.getMessageID();
data = m.getData();
}
public void setData(String data){
this.data = data;
}
public String getData(){
return data;
}
public void setMessageID(long messageID){
this.messageID = messageID;
}
public long getMessageID(){
return messageID;
}
public String toString() {
String s = "";
s += "Message ID " + messageID + " message: " + data ;
return s;
}
}
package net;
public class NextMsgException extends Throwable{
}
// Protocol.java
package net;
public interface Protocol {
public Message conversation(Message msg) throws NextMsgException;
public boolean endConvresation();
public boolean startConvresation();
public void conversation();
public void addCommunicator(Communicator c);
public boolean removeCommunicator(Communicator c);
public Communicator getCommunicator(int id);
}
// Communicator.java
package net;
public interface Communicator {
public boolean init();
public boolean close();
public Message readMessage();
public void writeMessage(Message m);
public Object readObject();
public void writeObject(Object m);
public String readString();
public void writeString(String s);
public void flush();
}
package net;

106 179


public class OneCommunicatorProtocol implements Protocol{
protected Communicator c;
public OneCommunicatorProtocol(){}
public OneCommunicatorProtocol(Communicator c){
this.c = c;
}
public Message conversation(Message msg) throws NextMsgException{ return null;}
public boolean endConvresation(){return true;}
public boolean startConvresation(){ return false;}
public void conversation(){}
public void addCommunicator(Communicator c){
this.c = c;
}
public boolean removeCommunicator(Communicator c) {
if(this.c.equals(c)){
c = null;
return true;
}
return false;
}
public Communicator getCommunicator(int id){
return c;
}
}
package net;
public class ClientProtocol extends OneCommunicatorProtocol{
public ClientProtocol(){}
public ClientProtocol(Communicator c){
this.c = c;
}
public void conversation(){
c.writeString("Hello!");
System.out.println("sent Hello!");
String response = c.readString();
System.out.println("received " + response);
c.writeObject( new Message("Message text" + response));
}
}
package net;
public class ServerProtocol extends OneCommunicatorProtocol{
public ServerProtocol(){}
public ServerProtocol(Communicator c){
this.c = c;

107 179


}
public void conversation(){
String response = c.readString();
System.out.println("received " + response);
c.writeString("Goodbye!");
System.out.println("sent Goodbye! ");
Message m = (Message)c.readObject();
System.out.println(m);
}
}
package net;
import java.net.*;
import java.io.*;
public class SocketCommunicator implements Communicator {
Socket client;
InputStream in;
OutputStream out;
ObjectOutputStream oout;
ObjectInputStream oin;
PrintWriter pout;
BufferedReader pin;
public SocketCommunicator(Socket client) {
this.client = client;
}
public SocketCommunicator() {
}
public boolean init() {
boolean ok = true;
try {
out = client.getOutputStream();
oout = new ObjectOutputStream(out);
pout = new PrintWriter(out, true);
} catch (Exception e) {ok = false;}
try {
in = client.getInputStream();
oin = new ObjectInputStream(in);
pin = new BufferedReader(new InputStreamReader(in));
} catch (Exception e) {ok = false;}
return ok;
}
public boolean close() {
boolean ok = true;
try {
pin.close();
oin.close();
in.close();
} catch (IOException ex) { ok = false; }

108 179


try {
pout.close();
out.close();
oout.close();
client.close();
} catch (IOException ex) { ok = false;}
return ok;
}
public Message readMessage() {
try {
Message m = (Message) oin.readObject();
return m;
} catch (Exception ex) {
System.out.println(ex);
ex.printStackTrace();
}
return null;
}
public void writeMessage(Message m) {
try {
oout.writeObject(m);
} catch (Exception ex) {
System.out.println(ex);
ex.printStackTrace();
}
}
public Object readObject() {
try {
Object m = (Object) oin.readObject();
return m;
} catch (Exception ex) {
System.out.println(ex);
ex.printStackTrace();
}
return null;
}
public void writeObject(Object m) {
try {
oout.writeObject(m);
} catch (Exception ex) {
System.out.println(ex);
ex.printStackTrace();
}
}
public String readString() {
try {
String s = pin.readLine();
return s;
} catch (Exception ex) {
System.out.println(ex);
ex.printStackTrace();
}
return null;
}
public void writeString(String s) {
try {
pout.println(s);
} catch (Exception ex) {

109 179


System.out.println(ex);
ex.printStackTrace();
}
}
public void flush() { }
public void setClient(Socket client) {
this.client = client;
init();
}
}

package net;
import java.net.*;
public class TServer extends Thread {
protected long ID;
protected Protocol protocol;
protected Communicator communicator;
protected Socket client;
public TServer() {
this(null, 0, new ServerProtocol());
}
public TServer(Socket client, long ID) {
this(client, ID, new ServerProtocol());
}
public TServer(Socket client, long ID, Protocol protocol) {
super("Thread Server" + ID);
this.ID = ID;
this.client = client;
this.communicator = new SocketCommunicator(client);
this.protocol = protocol;
}
public void run() {
work();
}
public void work() {
try {
if (protocol == null) return;
Communicator c = this.getCommunicator();
c.init();
protocol.addCommunicator(c);
protocol.conversation();
c.close();
} catch (Exception ex) {
System.out.println(ex);
ex.printStackTrace();
}
}
public Socket getClient() {
System.out.println("getClient " + this.getClass());
return client;
}
public Communicator getCommunicator() {
return new SocketCommunicator(getClient());
}

110 179


}
package net;
import java.net.*;
public class TClient extends TServer{
public TClient() {
super(null, 0, new ClientProtocol());
}
public TClient(Socket client, long ID) {
super(client, ID, new ClientProtocol());
}
public TClient(Socket client, long ID, Protocol protocol) {
super(client, ID, protocol);
}
}
package net;
import java.io.*;
public class KnockKnockClientProtocol extends OneCommunicatorProtocol{
public KnockKnockClientProtocol(){
super();
}
public void conversation(){
String fromServer;
String fromUser;
try{
BufferedReader stdIn = new BufferedReader(new
InputStreamReader(System.in));
System.out.println("BufferedReader " + stdIn);
while ((fromServer = c.readString()) != null) {
System.out.println("Server: " + fromServer);
if (fromServer.equals("Bye."))break;
fromUser = stdIn.readLine();
if (fromUser != null) {
System.out.println("Client: " + fromUser);
c.writeString(fromUser);
}
}
}catch (Exception ex ) { System.out.println(ex); ex.printStackTrace();}
}
}

package net;
public class KnockKnockServerProtocol extends OneCommunicatorProtocol{
private static final int WAITING = 0;
private static final int SENTKNOCKKNOCK = 1;
private static final int SENTCLUE = 2;
private static final int ANOTHER = 3;
private static final int NUMJOKES = 5;
private int state = WAITING;
private int currentJoke = 0;
private String[] clues = { "Turnip", "Little Old Lady", "Atch", "Who", "Who" };
private String[] answers = { "Turnip the heat, it's cold in here!",
"I didn't know you could yodel!",
"Bless you!",

111 179


"Is there an owl in here?",
"Is there an echo in here?" };
public KnockKnockServerProtocol(){
super();
}
public void conversation(){
String outputLine = processInput(null);
c.writeString(outputLine);
String inputLine = null;
while ((inputLine = c.readString()) != null) {
System.out.println("Client: " + inputLine);
outputLine = processInput(inputLine);
c.writeString(outputLine);
System.out.println("Server: " + outputLine);
if(outputLine.equals("Bye.")) break;
}
}
public String processInput(String theInput) {
String theOutput = null;
if(theInput == null) theInput = "";
if (state == WAITING) {
theOutput = "Knock! Knock!";
state = SENTKNOCKKNOCK;
} else if (state == SENTKNOCKKNOCK) {
if (theInput.equalsIgnoreCase("Who's there?")) {
theOutput = clues[currentJoke];
state = SENTCLUE;
} else {
theOutput = "You're supposed to say \"Who's there?\"! " +
"Try again. Knock! Knock!";
}
} else if (state == SENTCLUE) {
if (theInput.equalsIgnoreCase(clues[currentJoke] + " who?")) {
theOutput = answers[currentJoke] + " Want another? (y/n)";
state = ANOTHER;
} else {
theOutput = "You're supposed to say \"" +
clues[currentJoke] +
" who?\"" +
"! Try again. Knock! Knock!";
state = SENTKNOCKKNOCK;
}
} else if (state == ANOTHER) {
if (theInput.equalsIgnoreCase("y")) {
theOutput = "Knock! Knock!";
if (currentJoke == (NUMJOKES - 1))
currentJoke = 0;
else
currentJoke++;
state = SENTKNOCKKNOCK;
} else {
theOutput = "Bye.";
state = WAITING;
}
}
return theOutput;
}
}
package net;
import java.net.*;

112 179


public class ClientTest {
static final int port = 4444;
static final String host = "127.0.0.1";
public static void main(String[] args) {
try {
try {
Socket server = new Socket(host, port);
System.out.println("Iteration " + 1);
TClient tc = new TClient(server, 1,
new KnockKnockClientProtocol());
tc.start();
tc.join();
server.close();
} catch (InterruptedException e) {
System.out.println(e);
e.printStackTrace();
}
} catch (Exception ex) {
System.out.println(ex);
ex.printStackTrace();
}
}
}
package net;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerTest {
static final int port = 4444;
static final String host = "127.0.0.1";
public static void main(String[] args) {
try {
try {
ServerSocket listener = new ServerSocket(port);
Socket client = listener.accept();
TServer ts = new TServer(client, 1,
new KnockKnockServerProtocol());
ts.start();
ts.join();
client.close();
} catch (InterruptedException e) {
System.out.println(e);
e.printStackTrace();
}
} catch (Exception ex) {
System.out.println(ex);
ex.printStackTrace();
}
}
}

113 179

3.
String
.
.
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;
public class ReverseServlet extends HttpServlet {
private static String message = "Error during Servlet processing";
public void doPost(HttpServletRequest req, HttpServletResponse resp) {
try {
int len = req.getContentLength();
byte[] input = new byte[len];
ServletInputStream sin = req.getInputStream();
int c, count = 0 ;
while ((c = sin.read(input, count, input.length-count)) != -1) {
count +=c;
}
sin.close();
String inString = new String(input);
int index = inString.indexOf("=");
if (index == -1) {
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
resp.getWriter().print(message);
resp.getWriter().close();
return;
}
String value = inString.substring(index + 1);
//decode application/x-www-form-urlencoded string
String decodedString = URLDecoder.decode(value, "UTF-8");
//reverse the String
String reverseStr = (new StringBuffer(decodedString)).reverse().toString();
// set the response code and write the response data
resp.setStatus(HttpServletResponse.SC_OK);
OutputStreamWriter writer = new OutputStreamWriter(resp.getOutputStream());
writer.write(reverseStr);
writer.flush();
writer.close();
} catch (IOException e) {
try{
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
resp.getWriter().print(e.getMessage());
resp.getWriter().close();
} catch (IOException ioe) {
}
}
}
}

114 179


import java.io.*;
import java.net.*;
public class Reverse {
public static void main(String[] args) throws Exception {
if (args.length != 2) {
System.err.println("Usage: java Reverse " +
"http://<location of your servlet/script>" +
" string_to_reverse");
System.exit(1);
}
String stringToReverse = URLEncoder.encode(args[1], "UTF-8");
URL url = new URL(args[0]);
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(
connection.getOutputStream());
out.write("string=" + stringToReverse);
out.close();
BufferedReader in = new BufferedReader(
new InputStreamReader(
connection.getInputStream()));
String decodedString;
while ((decodedString = in.readLine()) != null) {
System.out.println(decodedString);
}
in.close();
}
}

115 179

10

:
(
)
( )

(HTML)
( )

, API,
, .
HTTP
.
.
on-line .
. Tako
.
javax.servlet, .
Servlets,
. HttpServlet.

116 179


, :
ServletRequest, .
ServletResponse, .
ServletRequest ServletResponse javax.servlet .
ServletRequest ( )
, ,
.
ServletInputStream -
.
HTML :
<form name=MojaPostForma action=ProbaServlet method=get></form>

<form name=MojaGetForma action=ProbaServlet?par1=88 method=get>


HttpServletRequest interface HTTP .
ServletResponse .
(MIME). stream,
ServletOutputStream Writer . HTTP Servleta HTTP
.
.
HTTP cookie.
, .
:
cookie
URL-a URL-,

117 179

1.
.
, .
:
index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="pozoviServlet" method="POST">
Prvi sabirak: <input type="text" name="prvi" value="" /> <br/>
Drugi sabirak: <input type="text" name="drugi" value="" /> <br/>
<input type="submit" value="saberi" />
</form>
</body>
</html>
PrviServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class PrviServlet extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String prvi=request.getParameter("prvi");
String drugi=request.getParameter("drugi");
int a=0, b=0;
boolean ispravno=true;
try{
a=Integer.parseInt(prvi);
b=Integer.parseInt(drugi);
}
catch(NumberFormatException nfe){ispravno=false;}
int zbir=a+b;
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Primer2</title>");
out.println("</head>");

118 179


if(ispravno){
out.println("<body bgcolor=\"00ffff\">");
out.println("<h1>Zbir je: " + zbir + "</h1>");
}
else{
out.println("<body bgcolor=\"ff0000\">");
out.println("<h1>Neispravni brojevi!</h1>");
}
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}
}

119 179

2.
. ,
(browser
URLa).
:
index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Primeri sa servletima</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<a href="prviServlet">Kliknite na link da pozovete prvi servlet!</a>
<!-- pozivom servleta preko linka poziva se doGet() metod-->
</body>
</html>
PrviServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class PrviServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.sendRedirect("drugiServlet");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "PrviServlet";
}
}

DrugiServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class DrugiServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter izlaz = response.getWriter();
try {
izlaz.println("<html>");

120 179


izlaz.println("<head>");
izlaz.println("<title>Servlet drugiServlet</title>");
izlaz.println("</head>");
izlaz.println("<body>");
izlaz.println("<h1>Ovo je rezultat drugog servleta, a ne prvog!</h1>");
izlaz.println("<form action=\"treciServlet\" method=\"get\">");
izlaz.println("Unesite ime: <input type=\"text\" name=\"ime\">");
izlaz.println("Unesite ime: <input type=\"submit\" value=\"Pozovi treci
servlet\">");
izlaz.println("</form>");
izlaz.println("</body>");
izlaz.println("</html>");
} finally {
izlaz.close();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "DrugiServlet";
}
}

TreciServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TreciServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
String ime=request.getParameter("ime");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet treciServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Dobrodosli " + ime+ "</h1>");
out.println("<br/>");
out.println("<a href=\"index.html\">Povratak na prvu stranu!</a>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)

121 179


throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "TreciServlet";
}
}

3.
,
browsera .
:
index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="servlet1" method="post">
Unesite tekst i kliknite posalji:<br>
<input type="text" name="mojparametar"/><br/>
<input type="submit" value="posalji"/>
</form>
</body>
</html>
Servlet1.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Servlet1 extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
RequestDispatcher rd=request.getRequestDispatcher("servlet2");
rd.forward(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

122 179


processRequest(request, response);
}
public String getServletInfo() {
return "Servlet1";
}
}

Servlet2.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Servlet2 extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
String parametar=request.getParameter("mojparametar");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet servlet2</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet servlet2 " + parametar + "</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "Servlet2";
}
}

123 179

4.
URL-.
:
index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Primeri servleta</title>
</head>
<body>
<h2>Kliknite na servlet!</h2>
<br/>
<a href="counterservlet">click</a>
</body>
</html>

MyServlet.java
package paket;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet extends HttpServlet {
int count;
@Override
public void init(ServletConfig config) throws ServletException {
// prvo pozivamo init metod bazne klase
super.init(config);
// Trazimo fajl u kome stoji ranija vrednost counter-a
try {
File file = new File("my_servlet_pocetno");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String pocetno = bufferedReader.readLine();
count = Integer.parseInt(pocetno);
return;
}
catch (FileNotFoundException e1) { } // stanje nije sacuvano
catch (IOException e2) { }
// problem prilikom citanja
catch (NumberFormatException e3) { } // sacuvano stanje nije broj
// Nismo nasli nigde zapisano inicijalno stanje brojaca, resetujemo counter
count = 0;
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html;charset=UTF-8");

124 179


PrintWriter out = res.getWriter();
count++;
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Brojac poziva</title>");
out.println("</head>");
out.println("<body>");
out.println("Od kad je sveta i veka, ovaj servlet je pozvan " +
count + " puta.");
out.println("<a href=\"counterservlet\">click again</a>");
out.println("</body>");
out.println("</html>");
}
finally{
out.close();
}
}
@Override
public void destroy() {
saveState();
}
public void saveState() {
// Pokusavamo da zapisemo stanje brojaca na perzistentnu memoriju (fajl)
try {
File file = new File("my_servlet_pocetno");
FileWriter fileWriter = new FileWriter(file);
String stanje = Integer.toString(count);
fileWriter.write(stanje, 0, stanje.length());
fileWriter.close();
return;
}
catch (IOException e) { // problem prilikom upisa
}
}
}

5.
,
. cookies .
:
MyCookie.java
package cookie;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyCookie extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
boolean newuser = true;
Cookie[] cookies = request.getCookies();
if (cookies != null) {

125 179


for (int i = 0; i < cookies.length; i++) {
Cookie c = cookies[i];
if ((c.getName().equals("stariPosetilac")) &&
(c.getValue().equals("yes"))) {
newuser = false;
break;
}
}
}
String title;
if (newuser) {
Cookie posetilacCookie =
new Cookie("stariPosetilac", "yes");
posetilacCookie.setMaxAge(60 * 60 * 24 * 365);
response.addCookie(posetilacCookie);
title = "Dobrodosli!";
} else {
title = "Lepo je videti Vas opet";
}
response.setContentType("text/html;charset=UTF-8");
PrintWriter izlaz = response.getWriter();
try {
izlaz.println("<html>");
izlaz.println("<head>");
izlaz.println("<title>" + title + "</title>");
izlaz.println("</head>");
izlaz.println("<body>");
izlaz.println("<h1>" + title + "</h1>");
izlaz.println("</body>");
izlaz.println("</html>");
} finally {
izlaz.close();
}
}

public void doPost(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {
doGet(request, response);
}
public String getServletInfo() {
return "MyCookie";
}
}

126 179

6.
.
. , .
.
:
Korisnik.java
package beans;
public class Korisnik {
private String username="";
private String password="";
private String email="";
private String telefon="";
private String ime="";
private String prezime="";
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTelefon() {
return telefon;
}
public void setTelefon(String telefon) {
this.telefon = telefon;
}
public String getIme() {
return ime;
}
public void setIme(String ime) {
this.ime = ime;
}
public String getPrezime() {

127 179


return prezime;
}
public void setPrezime(String prezime) {
this.prezime = prezime;
}
}

Index.java
package servleti;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import beans.Korisnik;
public class Index extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession sesija = request.getSession();
Korisnik korisnik = (Korisnik) sesija.getAttribute("korisnik");
String username = "", password = "";
if (korisnik != null) {
username = korisnik.getUsername();
password = korisnik.getPassword();
}
String poruka = (String) request.getAttribute("poruka");
if (poruka == null) {
poruka = "Dobrodosli!";
}
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Korisnicka aplikacija</title>");
out.println("</head>");
out.println("<body>");
out.println("<h3>" + poruka + " </h3><br/><br/>");
out.println("Molimo, ulogujte se: ");
out.println("<table><tr><td>Korisnicko ime:</td>");
out.println("<form action=\"login\" method=\"POST\">");
out.println("<td><input type=\"text\" name=\"username\" value=\"" + username
+ "\" width=\"20\"></td></tr>");
out.println("<tr><td>Lozinka:</td>");
out.println("<td><input type=\"password\" name=\"password\" value=\"" +
password + "\" width=\"20\"></td></tr>");
out.println("<tr><td><input type=\"submit\" value=\"Ulogujte se\"</td>");
out.println("<td><input type=\"reset\"
value=\"Ponistite\"</td><tr></table>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}

128 179


protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "index";
}
}

Login.java
package servleti;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import beans.*;
public class Login extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
HttpSession sesija = request.getSession();
String poruka = null;
String username = request.getParameter("username");
String password = request.getParameter("password");
Korisnik korisnik = new Korisnik();
korisnik.setUsername(username);
korisnik.setPassword(password);
sesija.setAttribute("korisnik", korisnik);
if (username.isEmpty() || password.isEmpty()) {
poruka = "Niste popunili sva polja!";
request.setAttribute("poruka", poruka);
RequestDispatcher rd = request.getRequestDispatcher("index");
rd.forward(request, response);
}

Connection con = null;


Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(
"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};"
+ "DBQ=D:/ITS/ITA
nastava/IPA/LabVezbe/2010/Servleti/Korisnik.mdb");
stmt = con.createStatement();
String upit = "select * from KorisnikInfo where username='" + username + "'
and password='" + password + "';";
rs = stmt.executeQuery(upit);
if (rs.next()) {
String email = rs.getString("email");
String ime = rs.getString("Ime");

129 179


String prezime = rs.getString("Prezime");
String telefon = rs.getString("phone");
korisnik.setEmail(email);
korisnik.setIme(ime);
korisnik.setPrezime(prezime);
korisnik.setTelefon(telefon);
stmt.close();
con.close();
} else {
poruka = "Neispravno korisnicko ime i lozinka! Pokusajte ponovo.";
request.setAttribute("poruka", poruka);
korisnik.setPassword("");
RequestDispatcher rd = request.getRequestDispatcher("index");
stmt.close();
con.close();
rd.forward(request, response);
}
} catch (SQLException ex) {
sesija.invalidate();
String errormsg = ex.getMessage();
if (con != null) {
try {
con.close();
} catch (Exception exc) {
errormsg = errormsg + exc.getMessage();
}
}
request.setAttribute("errormsg", errormsg);
RequestDispatcher rd = request.getRequestDispatcher("error");
rd.forward(request, response);
} catch (ClassNotFoundException cnf) {
}
request.setAttribute("poruka", "Vasi podaci (prethodna stranice je \"login\")");
RequestDispatcher rd = request.getRequestDispatcher("prikaz");
rd.forward(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "Login";
}
}

Prikaz.java
package servleti;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import beans.*;

130 179


public class Prikaz extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession sesija = request.getSession();
Korisnik korisnik = (Korisnik) sesija.getAttribute("korisnik");
String poruka = (String) request.getAttribute("poruka");
if(poruka == null) {
poruka = "Vasi podaci (prethodna stranica je \"promena\")";
}
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Korisnicka aplikacija</title>");
out.println("</head>");
out.println("<body>");
out.println("<h3>" + poruka + "</h3><br/><br/>");
out.println("<table width=\"40%\" border=\"3\">"
+ "<tr><td width=\"50%\">Korisnicko ime:</td>"
+ "<td>" + korisnik.getUsername() + "</td></tr>");
out.println("<tr><td>Ime:</td>"
+ "<td>" + korisnik.getIme() + "</td></tr>");
out.println("<tr><td>Prezime:</td>"
+ "<td>" + korisnik.getPrezime() + "</td></tr>");
out.println("<tr><td>Email:</td>"
+ "<td>" + korisnik.getEmail() + "</td></tr>");
out.println("<tr><td>Telefon:</td>"
+ "<td>" + korisnik.getTelefon() + "</td></tr>");
out.println("</table><br/>");
out.println("<a href=\"promena\">Promenite podatke</a>");
out.println("<a href=\"logout\">Izlogujte se</a>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "Prikaz";
}
}

Izmena.java
package servleti;

131 179


import beans.Korisnik;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Izmena extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
HttpSession sesija = request.getSession();
Korisnik korisnik = (Korisnik) sesija.getAttribute("korisnik");
String ime = request.getParameter("ime");
String prezime = request.getParameter("prezime");
String telefon = request.getParameter("telefon");
String email = request.getParameter("email");
korisnik.setIme(ime);
korisnik.setPrezime(prezime);
korisnik.setTelefon(telefon);
korisnik.setEmail(email);
String upit = "update KorisnikInfo "
+ "set Ime='" + ime + "',Prezime='" + prezime + "', phone='" + telefon +
"', email='" + email + "'"
+ "where username='" + korisnik.getUsername() + "';";
Connection con = null;
Statement stmt = null;
try {
con = DriverManager.getConnection(
"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};"
+ "DBQ=D:/ITS/ITS
nastava/IPA/LabVezbe/2010/Servleti/Korisnik.mdb");
stmt = con.createStatement();
stmt.executeUpdate(upit);
stmt.close();
con.close();
} catch (SQLException ex) {
sesija.invalidate();
String errormsg = ex.getMessage();
if (con != null) {
try {
con.close();
} catch (Exception exc) {
errormsg = errormsg + exc.getMessage();
}
}
request.setAttribute("errormsg", errormsg);
RequestDispatcher rd = request.getRequestDispatcher("error");
rd.forward(request, response);
}
request.setAttribute("poruka", "Podaci su uspesno izmenjeni");
RequestDispatcher rd = request.getRequestDispatcher("prikaz");
rd.forward(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

132 179


protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "Izmena";
}
}

Promena.java
package servleti;
import beans.Korisnik;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Promena extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession sesija = request.getSession();
Korisnik korisnik = (Korisnik) sesija.getAttribute("korisnik");
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Korisnicka aplikacija</title>");
out.println("</head>");
out.println("<body>");
out.println("<h3>Vasi podaci koje mozete menjati</h3><br/><br/>");
out.println("<form action=\"izmena\" method=\"post\" >");
out.println("<table width=\"40%\" border=\"3\">"
+ "<tr><td width=\"50%\">Ime:</td>"
+ "<td><input type=\"text\" name=\"ime\" value=\"" +
korisnik.getIme() + "\"/></td></tr>");
out.println("<tr><td>Prezime:</td>"
+ "<td><input type=\"text\" name=\"prezime\" value=\"" +
korisnik.getPrezime() + "\"/></td></tr>");
out.println("<tr><td>Email:</td>"
+ "<td><input type=\"text\" name=\"email\" value=\"" +
korisnik.getEmail() + "\"/></td></tr>");
out.println("<tr><td>Telefon:</td>"
+ "<td><input type=\"text\" name=\"telefon\" value=\"" +
korisnik.getTelefon() + "\"/></td></tr>");
out.println("</table><br/>");
out.println("<input type=\"submit\" value=\"Prihvatite izmenu\"/>");
out.println("<input type=\"reset\" value=\"Odbacite izmenu\"/>");
out.println("</form></body>");
out.println("<a href=\"prikaz\">Nazad</a>");
out.println("</html>");
} finally {
out.close();
}
}

133 179


protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "Promena";
}
}

Logout.java
package servleti;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Logout extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
request.getSession().invalidate();
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Dovidjenja</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Dovidjenja</h1>");
out.println("<a href=\"index\">nazad na login stranu</a>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Logout";
}
}

134 179


Greska.java
package servleti;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Greska extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String errormsg = (String) request.getAttribute("errormsg");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Greska!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Greska u radu sa bazom podataka</h1>");
out.println("<br/>" + errormsg + "<br/>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Greska";
}
}

135 179

7.
. Microsoft Office Word
.
:
index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"


"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Prikaz slike i datoteke</title>
</head>
<body>
<h1>Primer za prikaz slika i download fajlova!</h1>
Izaberite sliku:
<a href="ImageHandlerServlet?image_name=zima.jpg"> Zima</a>
ili
<a href="ImageHandlerServlet?image_name=jesen.jpg"> Jesen</a>
<br/>
<br/>
Izaberite datoteku:
<a href="FileHandlerServlet?file_name=dokument_1.docx"> Dokument 1</a>
ili
<a href="FileHandlerServlet?file_name=dokument_2.docx"> Dokument 2</a>
</body>
</html>
FileHandlerServlet.java
package servleti;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class FileHandlerServlet extends HttpServlet {
private String lokacija = "c:/";
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletOutputStream out = response.getOutputStream();
try {
String fileName = request.getParameter("file_name");
int data;
response.setContentType("application/msword");
BufferedInputStream in = new BufferedInputStream(
new FileInputStream(lokacija + fileName));

136 179


while ((data = in.read()) != -1) {
out.write(data);
}
} finally {
out.close();
}
}
}

ImageHandlerServlet.java
package servleti;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ImageHandlerServlet extends HttpServlet {
private String lokacija = "c:/";
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletOutputStream out = response.getOutputStream();
try {
String imageName = request.getParameter("image_name");
int data;
response.setContentType("image/jpeg");
BufferedInputStream in = new BufferedInputStream(
new FileInputStream(lokacija + imageName));
while ((data = in.read()) != -1) {
out.write(data);
}
} finally {
out.close();
}
}
}

137 179

8.
String
.
.
:
ReverseServlet.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;
public class ReverseServlet extends HttpServlet {
private static String message = "Error during Servlet processing";
public void doPost(HttpServletRequest req, HttpServletResponse resp) {
try {
int len = req.getContentLength();
byte[] input = new byte[len];
ServletInputStream sin = req.getInputStream();
int c, count = 0 ;
while ((c = sin.read(input, count, input.length-count)) != -1) {
count +=c;
}
sin.close();
String inString = new String(input);
int index = inString.indexOf("=");
if (index == -1) {
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
resp.getWriter().print(message);
resp.getWriter().close();
return;
}
String value = inString.substring(index + 1);
//decode application/x-www-form-urlencoded string
String decodedString = URLDecoder.decode(value, "UTF-8");
//reverse the String
String reverseStr = (new StringBuffer(decodedString)).reverse().toString();
// set the response code and write the response data
resp.setStatus(HttpServletResponse.SC_OK);
OutputStreamWriter writer = new OutputStreamWriter(resp.getOutputStream());
writer.write(reverseStr);
writer.flush();
writer.close();
} catch (IOException e) {
try{
resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);
resp.getWriter().print(e.getMessage());
resp.getWriter().close();
} catch (IOException ioe) {
}

138 179


}
}
}

Reverse.java
import java.io.*;
import java.net.*;
public class Reverse {
public static void main(String[] args) throws Exception {
if (args.length != 2) {
System.err.println("Usage: java Reverse " + "http://<location of your servlet/script>" +
" string_to_reverse");
System.exit(1);
}
String stringToReverse = URLEncoder.encode(args[1], "UTF-8");
URL url = new URL(args[0]);
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write("string=" + stringToReverse);
out.close();
BufferedReader in = new BufferedReader(
new InputStreamReader(
connection.getInputStream()));
String decodedString;
while ((decodedString = in.readLine()) != null) {
System.out.println(decodedString);
}
in.close();
}
}

139 179

11, 12 13

PHP Web HTML


. PHP Web .
Web , , .
ySQL
- Web

( ), ,
SQL . PHP,
Web .
PHP HTML .

HTML/HTTP (
).
PHP
.php .

:
:
<?php
echo '<big><center> Zdravo <center><BR>';
echo '1+2=';
echo 1+2;
?>
PHP <? ?> . ( PHPa
) HTML.. nekoIme.php

php.

C:\Program
Program
Files\wamp\www\test,

http://localhost/test/nekoIme.php. .

PHP
PHPa
. ($)
. loosely typed ,
, .
:

140 179


($)


, _
($)
PHP
(=).

Echo
echo :
echo hello;
echo hello, goodbye;
echo (hello);
echo nema povratnu vrednost
.


if
true false
:

if (Boolean_Izraz)
Naredbe ako je true;
sledeca_naredba; uvek se izvrava

Action1 Action2,
:

if (Boolean_Expression)
{
Action1
}
else
{
Action2
}
Action3 //uvek se izvrsava

:

if(Boolean_Expression_1)
Action_1
elseif(Boolean_Expression_2)
Action_2
.
.
.

elseif(Boolean_Expression_n)
Action_n
else
Default_Action

141 179

:
while-do
while (uslov)

naredbe

for
for (init; cond; incr)

naredbe

do-while
do naredbe
while (cond)

. , :
PHP,, .
( !)

( !)
PHPa
.

142 179

Na jednostavan nain se pristupa svakom elementu niza


niza:
Ako je key-expression n, n- array-name,
0
Ako je string,

$angles = array(3.5, 9.7, 15.01);
:
: array(). ,
:
$angles[0] = 3.5;
$angles[1] = 9.7;
$angles[2] = 15.01;

$product = array(name => gumball,
price => 0.07,

143 179


quantity => 1500);

( {}) .
.
,
.

:
function <identifier> ( <parameters> ) {
// kod funkcije
return <expression>
}
PHP <identifier>(<parameters>). : phpinfo(), rand(1,10).
case sensitive.
:
<? phpinfo(); ?>
, .
. :
: rand(int min, int max)
: rand(1,10);
, :
rand(44%3, 2*$max*$max);
:
rand($minGuess,$maxGuess);
substr($name,1,$i);
(.. ,
web ) .
. :
: int, float, boolean, ...
: array, object, ...
void
, .
.
:
function doubler($value) {
return 2*$value;
}
echo doubler($doubleUp);
$doubleUp = doubler($doubleUp);

144 179


,
():
function swapTwoValues(&$a, &$b) {
$tmp = $a;
$a = $b;
$b = $tmp;
}
$var1 = 1; $var2 = 2;
echo \$var1 is $var1 and \$var2 is $var2<BR>;
swapTwoValues($var1, $var2);
echo \$var1 is $var1 and \$var2 is $var2;

web EGPCS (Environment, GET, POST, Cookies,
Server). PHP EGPCS :

$HTTP_COOKIE_VARS, $HTTP_GET_VARS, $HTTP_POST_VARS, ...

. . PHP
$_SERVER[PHP_SELF] ,
.
$_SERVER : SERVER_NAME, REQUEST_METHOD,
QUERY_STRING, REMOTE_ADDR, PHP_SELF, ...

PHP MySQL
PHP mySQL , mysql_. , -- .
.
:
mysql_connect()
Koristi se da bi se uspostavila veza sa mySQL serverom. mysql_connect('host', 'user',
'password');
mysql_error()

mySQL . . :
$error=mysql_error();
if($error) {
print "mySQL error: $error<br/>";
}
mysql_select_db()
mysql_select_db('database') database .
Boolean. mySQL
database. :
mysql_select_db(primer');
mysql_query()
mysql_query(query) alje upit query ka mySQL.
$link = mysql_connect("localhost", "shop_owner", "bruch");
$query="SELECT * FROM beer_shop.customers";

145 179

$result=mysql_query($query);
;.
$result. mysql_fetch_array(result)
.
:
while($columns=mysql_fetch_array($result)) {
print 'name: '.$columns['name'];
print 'first column: $columns[0];
}
mysql_close()
. ,
. .

HTTP stateless .
.
-. PHP cookie- , ,
.
Cookie / . cookie-
HTTP header-: Set-Cookie:. , cookie
HTTP header Cookie. setcookie() :
setcookie(name [,value ,expires, path, domain, secure])
. Cookie-
Web $_COOKIE . cookie-
$_COOKIE[] .

session_start() . session_start()
ID : session ID string:
7f39d7dd020773f115d753c71290e11f. session_start() Web server
session ID, sess_. session_start() Web
browseru . cookie-ije, session ID
cookie- PHPSESSID.
$_SESSION. session_start() PHP
$_SESSION ( session ID)
$_SESSION

:
1. session_start()
2. array() $_SESSION
3. session_destroy()

146 179

1.
online , :

,
:



;

8%;
! !

147 179


apoteka.html
<html>
<body>
<form action="apoteka.php" method="post">
<table border="0">
<tr bgcolor="#cccccc">
<td width="150">Artikal</td>
<td width="15">Kolicina</td>
</tr>
<tr>
<td>Andol</td>
<td align="center"><input type="text" name="kolicina1" size="3"
maxlength="3"></td>
</tr>
<tr>
<td>Aspirin</td>
<td align="center"><input type="text" name="kolicina2" size="3" maxlength="3"></td>
</tr>
<tr>
<td>Vitamin C</td>
<td align="center"><input type="text" name="kolicina3" size="3"
maxlength="3"></td>
</tr>
<tr>
<td>Kako ste saznali za nasu apoteku?</td>
<td><select name="nadji">
<option value = "a">Ja sam redovan kupac</option>
<option value = "b">TV reklama</option>
<option value = "c">Halo oglasi</option>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Naruci"></td>
</tr>
</table>
</form>
</body>
</html>
apoteka.php
<?php
// kreiranje kracih imena varijabli
$kolicina1 = $_POST['kolicina1'];
$kolicina2 = $_POST['kolicina2'];
$kolicina3 = $_POST['kolicina3'];
$nadji = $_POST['nadji'];
?>
<html>
<head>
<title>Online apoteka</title>
</head>
<body>
<h1>Apoteka - narudzbina</h1>
<h2>Fiskalni racun</h2>
<?php
echo '<p>Roba narucena u ';
echo date('H:i, jS F');
echo '</p>';
echo '<p>Porucili ste: </p>';
$ukupno = 0;
$ukupno = $kolicina1 + $kolicina2 + $kolicina3; //sabiranje

148 179


echo 'Ukupna kolicina: '.$ukupno.'<br />';
if( $ukupno == 0) {
echo 'Niste kupili nista!<br />'; }
else {
if ( $kolicina1>0 )
echo $kolicina1.' andol<br />';
if ( $kolicina2>0 )
echo $kolicina2.' aspirin<br />';
if ( $kolicina3>0 )
echo $kolicina3.' vitamin C<br />';
echo '<br />';
}
$ukupna_cena = 0.00;
define('ANDOLCENA', 10);
define('ASPIRINCENA', 100);
define('VITCCENA', 25);
$ukupna_cena = $kolicina1 * ANDOLCENA
//mnozenje
+ $kolicina2 * ASPIRINCENA
+ $kolicina3 * VITCCENA;
echo 'Ukupno bez poreza: '.number_format($ukupna_cena,2).' dinara<br/>';
$porez = 0.08; // porez je 8%
$ukupna_cena = $ukupna_cena * (1 + $porez); //mnozenje
echo 'Ukupno sa porezom: '.number_format($ukupna_cena,2).' dinara<br/>';
if($nadji == 'a')
echo '<p>HVALA!</p>';
else
echo '<p>Hvala! Dodjite nam ponovo!</p>';
?>
</body>
</html>

2.
.

, .
( ).

149 179


:
apoteka.html
<html>
<head>
<title>Apoteka</title>
</head>
<body>
<h1>Apoteka</h1>
<h2>Online narudzbenica</h2>
<form action="apoteka.php" method=post>
<table border=0>
<tr bgcolor=#cccccc>
<td width=150>Artikal</td>
<td width=15>Kolicina</td>
</tr>
<tr>
<td>Andol</td>
<td align=left><input type="text" name="kolicina1" size=3 maxlength=3></td>
</tr>
<tr>
<td>Aspirin</td>
<td align=left><input type="text" name="kolicina2" size=3 maxlength=3></td>
</tr>
<tr>
<td>Vitamin C</td>
<td align=left><input type="text" name="kolicina3" size=3 maxlength=3></td>
</tr>
<tr>
<td>Adresa za isporuku</td>
<td align=center><input type="text" name="adresa" size=40 maxlength=40></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit value="Poruci"></td>
</tr>
</table>
</form>
</body>
</html>
apoteka.php
<?php
// create short variable names
$kolicina1 = $_POST['kolicina1'];
$kolicina2 = $_POST['kolicina2'];
$kolicina3 = $_POST['kolicina3'];
$adresa = $_POST['adresa'];
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; //ovo mora da postoji
?>
<html>
<head>
<title>Online apoteka</title>
</head>
<body>
<h1>Apoteka - narudzbina</h1>
<h2>Fiskalni racun</h2>
<?php
$date = date('H:i, jS F');
echo '<p>Roba narucena u ';

150 179


echo $date;
echo '</p>';
echo '<p>Kupili ste sledece artikle: </p>';
$ukupno = 0;
$ukupno = $kolicina1 + $kolicina2 + $kolicina3;
echo 'Kupljenih proizvoda: '.$ukupno.'<br />';
if( $ukupno == 0)
{
echo 'Nista niste kupili!<br />';
}
else
{
if ( $kolicina1>0 )
echo $kolicina1.' andol<br />';
if ( $kolicina2>0 )
echo $kolicina2.' aspirin<br />';
if ( $kolicina3>0 )
echo $kolicina3.' vitamin C<br />';
}
$ukupna_cena = 0.00;
define('cena1', 100);
define('cena2', 10);
define('cena3', 4);
$ukupna_cena = $kolicina1 * cena1
+ $kolicina2 * cena2
+ $kolicina3 * cena3;
$ukupna_cena=number_format($ukupna_cena, 2, '.', ' ');
echo '<p>Racun - suma: '.$ukupna_cena.'</p>';
echo '<p>Adresa za isporuku: '.$adresa.'</p>';
$izlaz = $date."\t".$kolicina1." andol \t".$kolicina2." aspirin\t"
.$kolicina3." vitamin C\t\$".$ukupna_cena
."\t". $adresa."\n\n";
// otvaranje fajla za upis
@ $fp = fopen("$DOCUMENT_ROOT/../naruciti.txt", 'ab');
flock($fp, LOCK_EX); //zakljucaj datoteku radi upisivanja
if (!$fp)
{
echo '<p><strong> Vasa porudzbina ne moze biti obradjena trenutno.
.'Pokusajte kasnije.</strong></p></body></html>';
exit;
}

'

fwrite($fp, $izlaz, strlen($izlaz));


flock($fp, LOCK_UN); //otkljucaj datoteku
fclose($fp);
echo '<p>Upisani podaci u fajl.</p>';
?>
</body>
</html>

151 179

3.
txt ( 2) PHP .
narudzbine.php.
:
<?php
//kreiranje kraceg imena
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
?>
<html>
<head>
<title>Apoteka</title>
</head>
<body>
<h1>Online apoteka</h1>
<h2>Kupljena roba</h2>
<?php
@

$fp = fopen("$DOCUMENT_ROOT/../naruciti.txt", 'rb');


flock($fp, LOCK_SH); //zakljucaj datoteku radi citanja
if (!$fp)
{
echo '<p><strong>Pokusajte kasnije.</strong></p>';
exit;
}
while (!feof($fp))
{
$order= fgets($fp, 999);
echo $order.'<br />';
}

echo 'Poslednja pozicija pokazivaca u fajlu je '.(ftell($fp));


echo '<br />';
rewind($fp);
echo 'Posle f-je rewind, pozicija je '.(ftell($fp));
echo '<br />';
flock($fp, LOCK_UN); //otkljucaj datoteku
fclose($fp);
?>
</body>
</html>

4.
<?php
// sve u velika slova
print(strtoupper("prikazivanje svih velikih slova pomocu funkcije strtoupper<br>"));
// sve u mala slova
print(strtolower("PRIKAZIVANJE SVIH MALIH SLOVA POMOCU FUNKCIJE STRTOLOWER<br>"));
// postavljanje prvog slova u stringu na veliko
print(ucfirst("prikazivenje koriscenja funkcije ucfirst<br>"));
// postavljanje prvog slova svake RECI u stringu na veliko
print(ucwords("prikazivenje koriscenja funkcije ucwords<br>"));
?>

152 179

5.
.
:
<?php
function napravi_tabelu($nesto)
{
echo '<table border = 1>';
reset($nesto); // Pokazivac na pocetak niza
$vrednost = current($nesto);
while ($vrednost)
{
echo "<tr><td>$vrednost</td></tr>\n";
$vrednost = next($nesto);
}
echo '</table>';
}
function napravi_tabelu2($nesto, $ivica=1, $razmak1=4, $razmak2=4)
{
echo "<table border = $ivica cellpadding=$razmak1 cellspacing=$razmak2>";
reset($nesto); // Pokazivac na pocetak niza
$vrednost = current($nesto);
while ($vrednost)
{
echo "<tr><td>$vrednost</td></tr>\n";
$vrednost = next($nesto);
}
echo '</table>';
}
$moj_niz = array('Prvo polje.','Drugo polje.','Trece polje.');
napravi_tabelu($moj_niz);
napravi_tabelu2($moj_niz, 3,8,8);
napravi_tabelu2($moj_niz);
?>

6. Eurosong
2008
3 . .
:
<?php
$slike = array('serbia.jpg', 'italy.jpg', 'france.jpg', 'germany.jpg');
shuffle($slike);
?>
<html>
<head>
<title>Eurosong</title>
</head>
<body>
<center>
<h1>Eurosong</h1>
<table width = 100%>

153 179


<tr>
<?php
for ( $i = 0; $i < 3; $i++ )
{
echo '<td align="center"><img src="';
echo $slike[$i];
echo '"width="100" height="100"></td>';
}
?>
</tr>
</table>
</center>
</body>
</html>

7.
7 .
.
:
<html>
<head>
<title>Pozadinska boja</title>
</head>
<?php
$today = date("w");
$bgcolor = array(
"#BA55D3", "#0000FF", "#00FFFF", "#228B22",
"#FFA500", "#FFFF00", "#FF0000"
);
?>
<body bgcolor="<?php print("$bgcolor[$today]");?>">
<br>Ovo je boja za danasnji dan.
</body>
</html>

154 179

8.
html , php .
:
index.html
<html>
<head>
<title>Obrada HTML form podataka POST metodom</title>
</head>
<body>
<form name="myform" action="process.php" method="POST">
<input type="hidden" name="check_submit" value="1" />
Ime: <input type="text" name="Name" /><br />
Lozinka: <input type="password" name="Password" maxlength="10" /><br />
Izabetire neto iz liste: <select name="Seasons">
<option value="Spring" selected="selected">Prolee</option>
<option value="Summer">Leto</option>
<option value="Autumn">Jesen</option>
<option value="Winter">Zima</option>
</select><br /><br />
Izaberite zemlju:
<input type="radio" name="Country" value="Srbija" /> Srbija
<input type="radio" name="Country" value="Makedonija" /> Makedonija
<input type="radio" name="Country" value="Other" checked="true"/> Neka druga
<br />
Uzaberite jednu boju:
<input type="checkbox" name="Colors[]" value="green"
checked="checked" /> Green
<input type="checkbox" name="Colors[]" value="yellow" /> Yellow
<input type="checkbox" name="Colors[]" value="red" /> Red
<input type="checkbox" name="Colors[]" value="gray" /> Gray
<br /><br />
Komentari:<br />
<textarea name="Comments" rows="10" cols="60">
Unesite Vae komentare ovde:</textarea><br />
<input type="submit" />
</form>
</body>
</head>
</html>

process.php
<?php
//Check whether the form has been submitted
if (array_key_exists('check_submit', $_POST)) {
//Converts the new line characters (\n) in the text area into HTML line breaks
//(the <br/> tag)
$_POST['Comments'] = nl2br($_POST['Comments']);
if ( isset($_POST['Colors']) ) {
//Converts an array into a single string
$_POST['Colors'] = implode(', ', $_POST['Colors']);
}
//Let's now print out the received values in the browser
echo "Vae ime: {$_POST['Name']}<br />";
echo "Va fra: {$_POST['Password']}<br />";
echo "Vae omiljeno godije doba: {$_POST['Seasons']}<br /><br />";

155 179


echo "Va komentari:<br />{$_POST['Comments']}<br /><br />";
echo "Vi ste iz: {$_POST['Country']}<br />";
echo "Boja koju ste izabrali: {$_POST['Colors']}<br />";
} else {
echo "Ne moete videti ovu stranicu bez slanja forme.";
}
?>

9.
PHP- :

, , .
, , , .
(
).
PHP
, .
napravi_bazu.php
<?php
function create_db()
{
mysql_query("CREATE DATABASE IF NOT EXISTS ispit") or die(mysql_error());
mysql_select_db("ispit");
$login="CREATE TABLE IF NOT EXISTS login (
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
username char(11) NOT NULL,
password char(50) NOT NULL)";
mysql_query($login) or die(mysql_error());
$gas="CREATE TABLE IF NOT EXISTS gas (
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
zemlja char(30) NOT NULL ,
kolicina int(10) NOT NULL,
cena int(10) NOT NULL,
datum char(15) NOT NULL
)";
mysql_query($gas) or die(mysql_error());
}
function fill_db()
{
$login="INSERT INTO login(username,password) VALUES
('pera','pera'),
('mika','mika'),
('zika','zika')
";
mysql_query($login) or die(mysql_error());
$gas="INSERT INTO gas(zemlja, kolicina, cena, datum) VALUES
('rusija',10,1,'2008-01-05'),
('kina',20,2,'2008-01-05'),
('rusija',40,1,'2008-01-06'),
('rusija',20,2,'2008-01-07')
";
mysql_query($gas) or die(mysql_error());

156 179


}
function install_db()
{
$host="localhost";
$username="root";
$password="";
mysql_connect($host,$username,$password);
mysql_query("DROP DATABASE IF EXISTS ispit");
create_db();
fill_db();
}
install_db();
echo "successfuly installed";
?>
footer.inc
<!-- page footer -->
<table width="100%" bgcolor="blue" cellpadding="12" border="0">
<tr>
<td>
<p class="foot">&copy; GAS</p>
<p class="foot">pogledajte nasu <a href="help.php">stranu sa informacijama</a></p>
</td>
</tr>
</table>
</body>
</html>
header.inc
<html>
<head>
<title>GAS</title>
<style type="text/css">
h1 {
color:white;
font-size:24pt;
text-align:center;
font-family:arial}
</style>
</head>
<body>
<table width="100%" cellpadding="12" cellspacing="0" border="0">
<tr bgcolor="red">
<td>
<h1>Evidencija gasa</h1>
</td>
</tr>
</table>
<table width="100%" bgcolor="white" cellpadding="4" cellspacing="4">
<tr >
<td width="33%">
<a href="pregled.php"> Pregled </a></td>
<td width="33%">
<a href="dodaj.php"> Dodaj </a></td>
<td width="33%">
<a href="brisi.php"> Brisi </a></td>
</tr>
</table>

157 179


index.php
<?php
if (array_key_exists('Submited',$_POST))
{
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("ispit");

$result=mysql_query("SELECT id FROM login WHERE username='".$_POST['uname']."'


AND password='".$_POST['pass']."'");
if(mysql_num_rows($result)==1)
{
session_start();
$niz=mysql_fetch_array($result);
$id=$niz['id'];
$_SESSION['user_id']=$id;
header("Location: gas.php");
}
else
{
echo "Wrong username or password!";
}
}
?>
<form action='<?php echo $_SERVER['PHP_SELF'];?>' method ='post'>
<table>
<tr>
<td> User: </td>
<td><input type='text' name='uname'></td>
</tr>
<tr>
<td> Pass:
</td>
<td> <input type='password' name='pass'></td>
</tr>
</table>
<input type='submit' name='Submited' value='Sign in'>
</form>
<?php
?>
gas.php
<?php
session_start();
if($_SESSION['user_id'])
{
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("ispit");
}
else
{
header("Location: index.php");
exit;
}
?>
<HTML>
<HEAD>
<TITLE>Gas</TITLE></HEAD>
<?php
include('header.inc');

158 179


echo "Welcome to our Web site! <br/><br/>";
include('footer.inc');
?>
</HTML>

pregled.php
<?php
session_start();
if($_SESSION['user_id'])
{
include('header.inc');
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("ispit");
if (!empty($_POST['zemlja']) && !empty($_POST['cena'])){
$result=mysql_query("SELECT zemlja, kolicina, cena, datum FROM gas
WHERE zemlja='".$_POST['zemlja']."' and cena=".$_POST['cena']);
}
else if (!empty($_POST['zemlja'])){
$result=mysql_query("SELECT zemlja, kolicina, cena, datum FROM gas
WHERE zemlja='".$_POST['zemlja']."'");
}
else if(!empty($_POST['cena'])){
$result=mysql_query("SELECT zemlja, kolicina, cena, datum FROM gas
WHERE cena=".$_POST['cena']);
}
else{
$result=mysql_query("SELECT * FROM gas");
}
echo "<table border=1>
<tr>
<td>zemlja</td>
<td>kolicina</td>
<td>cena</td>
<td>datum</td>
</tr>";
while($niz=mysql_fetch_array($result))
{
echo "<tr>
<td>".$niz['zemlja']."</td>
<td>".$niz['kolicina']."</td>
<td>".$niz['cena']."</td>
<td>".$niz['datum']."</td>
</tr>";
}
echo "</table>";
}
else
{
header("Location: index.php");
exit;
}
?>
<br>Trazi: <br>

159 179


<form action='<?php echo $_SERVER['PHP_SELF'];?>' method ='post'>
<table>
<tr><td> Zemlja: </td><td> <input type='text' name='zemlja'> </td></tr>
<tr><td> Cena:
</td><td> <input type='text' name='cena'>
</td></tr>
</table>
<input type='submit' name='Submited' value='search'>
</form>
<?php
include('footer.inc');
?>
dodaj.php
<?php
session_start();
if($_SESSION['user_id']) {
if(array_key_exists('Submited', $_POST)) {
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("ispit");
$result=mysql_query("SELECT * FROM gas
WHERE zemlja='".$_POST['zemlja']."' AND datum='".$_POST['datum']."'");
if(mysql_num_rows($result)==0) {
$result=mysql_query("INSERT INTO gas VALUES
('','".$_POST['zemlja']."',"
.$_POST['kolicina'].",".$_POST['cena'].",'".$_POST['datum']."')");
}
else echo "Vec je unet podatak za taj datum za datu zemlju";
}
} else {
header("Location: index.php");
exit;
}
include('header.inc');
?>
<form action='<?php echo $_SERVER['PHP_SELF'];?>' method ='post'>
<table>
<tr><td>Zemlja: </td><td><input type='text' name='zemlja'></td></tr>
<tr><td>Kolicina:</td><td><input type='text' name='kolicina'></td></tr>
<tr><td> Cena:</td><td><input type='text' name='cena'></td></tr>
<tr><td> Datum:</td><td><input type='text' name='datum'></td></tr>
</table>
<input type='submit' name='Submited' value='dodaj'>
</form>
<?php
include('footer.inc');
?>
brisi.php
<?php
session_start();
if($_SESSION['user_id'])
{
mysql_connect("localhost","root","") or die(mysql_error());
mysql_select_db("ispit");

160 179


if (array_key_exists('SubmitedForDelete',$_POST))
{
for ($i=1; $i<=$_SESSION['broj']; $i++)
{
if (isset($_POST['g'.$i]) and $_POST['g'.$i]=='on'){
$result=mysql_query("DELETE FROM gas WHERE id=".$i);
}
}
header("Location: pregled.php");
}
else
{
$result=mysql_query("SELECT id, zemlja, kolicina, cena, datum FROM gas");
$cnt=0;
?>
<form action='<?php echo $_SERVER['PHP_SELF'];?>' method ='post'>
<?php
include('header.inc');
echo "
<table border=1>
<tr>
<td>zemlja</td>
<td>kolicina</td>
<td>cena</td>
<td>datum</td>
<td>Brisi</td>
</tr>";
while($niz=mysql_fetch_array($result))
{
echo "<tr>
<td>".$niz['zemlja']."</td>
<td>".$niz['kolicina']."</td>
<td>".$niz['cena']."</td>
<td>".$niz['datum']."</td>
<td><INPUT type='checkbox' name='g".$niz['id']."'>
</tr>";
$cnt=$niz['id'];
}
$_SESSION['broj']=$cnt;
echo "</table>";
echo"<input type='submit' name='SubmitedForDelete' value='delete'>";
echo "</form>";
}
}
else
{
header("Location: index.php");
}
include('footer.inc');
?>

help.php
<?php
include('header.inc');
?>
Under construction...<br/><br/>
<?php
include('footer.inc');
?>

161 179

10.
PHP : ,
. ,
. (),
. .
baza.sql
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
CREATE DATABASE `s_rezultati` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `s_rezultati`;
DROP TABLE IF EXISTS `admin`;
CREATE TABLE IF NOT EXISTS `admin` (
`AdminID` int(11) NOT NULL auto_increment,
`ImePrezime` varchar(100) default NULL,
`User` varchar(50) default NULL,
`Pass` varchar(150) default NULL,
PRIMARY KEY (`AdminID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
INSERT INTO `admin` (`AdminID`, `ImePrezime`, `User`, `Pass`) VALUES
(1, 'Administrator', 'admin', 'd033e22ae348aeb5660fc2140aec35850c4da997');
DROP TABLE IF EXISTS `rezultati`;
CREATE TABLE IF NOT EXISTS `rezultati` (
`RezultatiID` int(11) NOT NULL auto_increment,
`Domacin` varchar(50) NOT NULL,
`Gost` varchar(50) NOT NULL,
`DomacinRez` int(10) NOT NULL,
`GostRez` int(10) NOT NULL,
`SportID` int(11) NOT NULL,
PRIMARY KEY (`RezultatiID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
INSERT INTO `rezultati` (`RezultatiID`, `Domacin`, `Gost`, `DomacinRez`, `GostRez`,
`SportID`) VALUES
(1, 'Test dom 1', 'Test gost 1', 1, 0, 1),
(2, 'Test domain 2', 'Test gost 2', 2, 0, 1),
(3, 'Test dom ko', 'Test gost ko', 1, 2, 2),
(4, 'Test dom 4', 'Test gost 4', 5, 1, 4),
(5, 'Test dom 5', 'Test gost 5', 43, 0, 1),
(7, 'Test dom 7', 'Test gost 7', 4, 3, 1);
DROP TABLE IF EXISTS `sport`;
CREATE TABLE IF NOT EXISTS `sport` (
`SportID` int(11) NOT NULL auto_increment,
`Ime` varchar(100) NOT NULL,
PRIMARY KEY (`SportID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
INSERT INTO `sport` (`SportID`, `Ime`) VALUES
(1, 'Fudbal'),
(2, 'Koarka'),
(3, 'Odbojka'),
(4, 'Vaterpolo');
index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?php

162 179


include("podesavanja.php");
?>
<html>
<head>
<link rel="stylesheet" href="stil.css">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Sportski rezultati</title>
</head>
<body>
<?php
echo "<table cellspacing='0' cellpadding='0' border='0' width='100%'>";
echo "<tr>";
echo "<td align='right' valign='middle' style='padding:10px 5px 10px 0px;'>";
echo "<div style='border:1px solid #3D3D3D; padding:2px 2px 2px 2px;
width:300px;'>";
echo "<div style='background-color:#CDCDCD; color:#3D3D3D;
padding:4px 4px 4px 4px; text-align:center;'>";
$korisnik = uzmiPrijavljenogKorisnika();
if($korisnik == -1)
echo "Trenutno niste prijavljeni.
<a href='index.php?tabs=prijava'>Prijavite se</a>";
else
echo "Dobrodoli: <b>".$korisnik['ImePrezime']."</b>.
<a href='index.php?tabs=prijava&akcija=odjava'>Odjavite se</a>";
echo "</div>";
echo "</div>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td align='center' valign='middle' class='meniStruct'>";
################# MENI #######################
echo "<table cellspacing='0' cellpadding='0' border='0' height='100%'
width='100%' class='meniStruct'>";
echo "<tr>";
$meniQuery = mysql_query("SELECT * FROM sport");
if($korisnik == -1)
$postotakSirinaMeni = 100/(mysql_num_rows($meniQuery)+1);
else $postotakSirinaMeni = 100/(mysql_num_rows($meniQuery)+2);
echo "<td align='center' valign='middle'
width='".$postotakSirinaMeni."%'>
<a href='index.php'>Poetna strana</a></td>";
while($meni = mysql_fetch_array($meniQuery))
{
echo "<td align='center' align='middle'
width='".$postotakSirinaMeni."%'>
<a href='index.php?sport=".$meni['SportID']."'>"
.$meni['Ime']."</td>";
}
if($korisnik != -1)
{
echo "<td align='center' valign='middle'
width='".$postotakSirinaMeni."%'>
<a href='index.php?tabs=unosRez'>Admin</a></td>";
}
echo "</tr>";
echo "</table>";
################# KRAJ MENI ##################

163 179


echo "</td>";
echo "</tr>";
echo "<tr>";
################ SADRZAJ #####################
echo "<td align='center' valign='top' style='padding-top:30px;'>";
if(isset($_GET['tabs']) && $_GET['tabs'] != "")
{
include($_GET['tabs'].".php");
}
else
if(!isset($_GET['sport']) || $_GET['sport'] == "")
{
$sportQuery = mysql_query("SELECT * FROM sport");
while($sport = mysql_fetch_array($sportQuery))
{
echo "<h1>".$sport['Ime']."</h1>";
$zadnjiRezQuery = mysql_query("SELECT * FROM rezultati
WHERE SportID='".$sport['SportID']."' ORDER BY
RezultatiID DESC LIMIT 0,1");
if(mysql_num_rows($zadnjiRezQuery) == 1)
while($rezultat = mysql_fetch_array($zadnjiRezQuery))
{
echo "<div>";
echo "<table cellspacing='0' cellpadding='4' border='0'
style='width:300px;'>";
echo "<tr><td width='50%' align='center' valign='middle'
style='background-color:#3D3D3D;
border-bottom:2px solid #0066CC; color:#FFFFFF;
font-weight:bold;'>";
echo $rezultat['Domacin'];
echo "</td>";
echo "<td align='center' valign='middle'
style='background-color:#3D3D3D; border-bottom:2px
solid #0066CC; color:#FFFFFF; font-weight:bold;'>";
echo $rezultat['Gost'];
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td align='center' valign='middle'
style='color:#3D3D3D; font-weight:bold; border:1px
solid #3D3D3D; border-right:none;
border-top:none;'>";
echo $rezultat['DomacinRez'];
echo "</td>";
echo "<td align='center' valign='middle'
style='color:#3D3D3D; font-weight:bold; border:1px
solid #3D3D3D; border-top:none;'>";
echo $rezultat['GostRez'];
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</div>";
}
else
echo "Nema rezultata iz:
<span style='font-weight:bold;'>".$sport['Ime']."</span>";
}
}
else
{

164 179


$sport = mysql_fetch_array(mysql_query("SELECT * FROM sport
WHERE SportID='".$_GET['sport']."'"));
echo "<h1>".$sport['Ime']."</h1>";
$zadnjiRezQuery = mysql_query("SELECT * FROM rezultati
WHERE SportID='".$sport['SportID']."'
ORDER BY RezultatiID DESC");
if(mysql_num_rows($zadnjiRezQuery) > 0)
while($rezultat = mysql_fetch_array($zadnjiRezQuery))
{
echo "<div style='padding-bottom:20px;'>";
echo "<table cellspacing='0' cellpadding='4' border='0'
style='width:300px;'>";
echo "<tr><td width='50%' align='center' valign='middle'
style='background-color:#3D3D3D;
border-bottom:2px solid #0066CC; color:#FFFFFF;
font-weight:bold;'>";
echo $rezultat['Domacin'];
echo "</td>";
echo "<td align='center' valign='middle'
style='background-color:#3D3D3D;
border-bottom:2px solid #0066CC; color:#FFFFFF;
font-weight:bold;'>";
echo $rezultat['Gost'];
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td align='center' valign='middle' style='color:#3D3D3D;
font-weight:bold; border:1px solid #3D3D3D;
border-right:none; border-top:none;'>";
echo $rezultat['DomacinRez'];
echo "</td>";
echo "<td align='center' valign='middle' style='color:#3D3D3D;
font-weight:bold; border:1px solid #3D3D3D;
border-top:none;'>";
echo $rezultat['GostRez'];
echo "</td>";
echo "</tr>";
echo "</table>";
echo "</div>";
}
else
echo "Nema rezultata iz:
<span style='font-weight:bold;'>".$sport['Ime']."</span>";
}
echo "</td>";
################ KRAJ SADRZAJ ################
echo "</tr>";
echo "</table>";
?>
</body>
</html>
podesavanja.php
<?php
ob_start();
session_start();
$mysql = array(
"host" => "localhost",

165 179


"korisnik" => "root",
"lozinka" => "",
"baza" => "s_rezultati"
);
mysql_connect($mysql['host'], $mysql['korisnik'], $mysql['lozinka']);
mysql_select_db($mysql['baza']);
mysql_query("SET NAMES 'utf8'");
function uzmiPrijavljenogKorisnika()
{
if(!isset($_SESSION['prijavljeni']) || $_SESSION['prijavljeni'] == "")
return -1;
else
{
$prijavljeniKor = mysql_fetch_array(mysql_query("SELECT * FROM admin
WHERE AdminID='".base64_decode($_SESSION['prijavljeni'])."'
LIMIT 0,1"));
return array(
"ID" => $prijavljeniKor['AdminID'],
"ImePrezime" => $prijavljeniKor['ImePrezime'],
"Korisnicko" => $prijavljeniKor['User']
);
}
}
function odjaviKorisnika()
{
$_SESSION['prijavljeni'] = "";
session_destroy();
}
?>
prijava.php
<?php
if(isset($_GET['akcija']) && $_GET['akcija'] == "odjava")
{
odjaviKorisnika();
echo "Uspjeno ste odjavljeni.<br><a href='index.php'>Idite na poetnu stranicu</a>";
}
else
{
if(isset($_POST['korime']))
{
$provjeri = mysql_fetch_array(mysql_query("SELECT * FROM admin
WHERE User = '".$_POST['korime']."' AND
Pass='".sha1($_POST['pass'])."'"));
if(!$provjeri)
echo "Niste unijeli ispravne podatke!<br>
<a href='index.php?tabs=prijava'>Ponovo se prijavite</a>";
else
{
echo "Uspjeno ste prijavljeni.<br><a href='index.php'>Idite na poetnu
stranicu</a>";
$_SESSION['prijavljeni'] = base64_encode($provjeri['AdminID']);
}
}
else
{
echo "<h1>Prijavite se</h1>";
echo "<form name='prijava' action='index.php?tabs=prijava' method='post'>";

166 179


echo "<table cellspacing='0' cellpadding='0' border='0'>";
echo "<tr><td align='right' valign='middle'>Korisniko ime:</td>
<td align='left' valign='middle'><input type='text'
name='korime'></td>
</tr>";
echo "<tr><td align='right' valign='middle'>Lozinka: </td>
<td align='left' valign='middle'><input type='password'
name='pass'>
</tr>";
echo "<tr><td colspan='2' align='center' valign='middle'>
<input type='submit' name='posalji'
value='Prijavite se!'></td>
</tr>";
echo "</table>";
echo "</form>";
}
}
?>
unosRez.php
<?php
if($korisnik != -1)
{
switch($_GET['akcija'])
{
case "brisanje":
if(isset($_GET['id']) && $_GET['id'] != "")
{
mysql_query("DELETE FROM rezultati WHERE RezultatiID='".$_GET['id']."'");
header("Location: index.php?tabs=unosRez");
}
break;

case "unos":
if(isset($_POST['upisi']) && $_POST['upisi'] == "da")
{
$greska = 0;
if(trim($_POST['domacin']) == "") $greska++;
if(trim($_POST['gost']) == "") $greska++;
if(trim($_POST['domacinRez']) == "") $greska++;
if(trim($_POST['gostRez']) == "") $greska++;
if($greska == 0)
{
mysql_query("INSERT INTO rezultati (Domacin, Gost, DomacinRez, GostRez,
SportID) VALUES('".$_POST['domacin']."', '".$_POST['gost']."',
'".(int)$_POST['domacinRez']."', '".(int)$_POST['gostRez']."',
'".$_POST['sport']."')");
header("Location: index.php?tabs=unosRez");
}
else
echo "Molimo unesite sve podatke ispravno.<br>
Rezultati moraju biti brojevi!<br>
<a href='index.php?tabs=unosRez&akcija=unos'>Vratite se nazad</a>";
}
else

167 179


{
echo "<h1>Unos novog rezultata</h1>";
echo "<form name='unos' action='index.php?tabs=unosRez&akcija=unos'
method='post'>";echo "<input type='hidden'
name='upisi' value='da'>";
echo "<table cellspacing='0' cellpadding='0' border='0'>";
echo "<tr><td align='right' valign='middle'>Domain:</td>
<td align='left' valign='middle'><input type='text'
name='domacin'></td>
</tr>";
echo "<tr><td align='right' valign='middle'>Gost:</td>
<td align='left' valign='middle'><input type='text'
name='gost'></td>
</tr>";
echo "<tr><td align='right' valign='middle'>Domain rezultat:</td>
<td align='left' valign='middle'><input type='text'
name='domacinRez'></td>
</tr>";
echo "<tr><td align='right' valign='middle'>Gost rezultat:</td>
<td align='left' valign='middle'><input type='text'
name='gostRez'></td>
</tr>";
echo "<tr><td align='right' valign='middle'>Sport:</td>
<td align='left' valign='middle'>";
echo "<select name='sport'>";
$sportQuery = mysql_query("SELECT * FROM sport");
while($sport = mysql_fetch_array($sportQuery))
{
echo
"<option value='".$sport['SportID']."'>".$sport['Ime']."</option>";
}
echo "</select>";
echo "</td></tr>";
echo "<tr><td colspan='2' align='center' valign='middle'>
<input type='submit' name='posalji'
value='Snimi promene'></td></tr>";
echo "</table>";
echo "</form>";
}
break;
case "pregled": default:
echo "<h1>Pregled svih unosa</h1>";
$sviRezultatiQuery = mysql_query("SELECT * FROM rezultati");
if(mysql_num_rows($sviRezultatiQuery) > 0)
{
echo "<table cellspacing='0' cellpadding='2' border='0' style='width:600px;
color:#3D3D3D;'>";
echo "<tr><td colspan='2' align='center' valign='middle'
style='font-weight:bold; background-color:#3D3D3D; color:#FFFFFF;
height:30px; border-bottom:2px solid #0066CC;'>Domain</td>
<td colspan='2' align='center' valign='middle'
style='font-weight:bold; background-color:#3D3D3D; color:#FFFFFF;
height:30px; border-bottom:2px solid #0066CC;'>Gost</td>";
echo "<td align='center' valign='middle' style='font-weight:bold;
background-color:#3D3D3D; color:#FFFFFF; height:30px;
border-bottom:2px solid #0066CC;'>Sport</td>";
echo "<td style=''>&nbsp;</td>";
echo "</tr>";
while($rezultat = mysql_fetch_array($sviRezultatiQuery))
{
echo "<tr>";

168 179


echo "<td align='right' valign='middle' style='width:30%;
border-bottom:1px solid #3D3D3D; border-left:1px solid #3D3D3D;'>"
.$rezultat['Domacin']."</td>";
echo "<td align='center' valign='middle' style='width:10%;
border-bottom:1px solid #3D3D3D; border-left:1px solid #3D3D3D;'>"
.$rezultat['DomacinRez']."</td>";
echo "<td align='center' valign='middle' style='width:10%;
border-bottom:1px solid #3D3D3D; border-left:1px solid #3D3D3D;'>"
.$rezultat['GostRez']."</td>";
echo "<td align='left' valign='middle' style='width:30%;
border-bottom:1px solid #3D3D3D; border-left:1px solid #3D3D3D;'>"
.$rezultat['Gost']."</td>";
$sport = mysql_fetch_array(mysql_query("SELECT * FROM sport
WHERE SportID='".$rezultat['SportID']."' LIMIT 0,1"));
echo "<td align='center' valign='middle' style='width:20%;
border-bottom:1px solid #3D3D3D; border-left:1px solid #3D3D3D;
border-right: 1px solid #3D3D3D;'>".$sport['Ime']."</td>";
echo "<td align='right' valign='middle'>
<a href='index.php?tabs=unosRez&akcija=brisanje&id="
.$rezultat['RezultatiID']."'>Obrii</a></td>";
echo "</tr>";
}
echo "</table>";
}
echo "<br><br>";
echo "<a href='index.php?tabs=unosRez&akcija=unos'>Unos novog rezultata</a>";
break;
}
}
else echo "Nemate pravo pristupa ovom dijelu stranice!";
?>
stil.css
html, body
{
margin: 0px 0px 0px 0px;
}
html, body, table, td, div, span
{
font-family:Verdana, Tahoma, Arial, sans-serif;
font-size:12px;
color:#3D3D3D;
}
a, a:visited, a:active
{
color:#0066CC;
text-decoration:none;
}
a:hover
{
text-decoration:underline;
}
td.meniStruct
{
height:30px;
text-align:center;
}

169 179


table.meniStruct
{
background-color:#CDCDCD;
color:#3D3D3D;
font-weight:bold;
border-bottom:2px solid #0066CC;
}
h1
{
font-size:22px;
font-weight:bold;
color:#0066CC;
width:600px;
border-bottom:1px solid #3D3D3D;
text-align:left;
}

11.
PHP :

. // .
.
,
. .
(, ,
, ), : Pregled Promena.
Pregled
(, , ). 100 000
, .
Promena ,
( , , , ). , .
.
baza.sql
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
CREATE DATABASE `turist` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `sasa0107`;
DROP TABLE IF EXISTS `aranzmani`;
CREATE TABLE IF NOT EXISTS `aranzmani` (
`ID` int(50) NOT NULL auto_increment,
`Mesec` int(10) NOT NULL,
`Naziv` varchar(200) NOT NULL,
`Mesto` varchar(100) NOT NULL,
`Cena` double(10,2) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
INSERT INTO `aranzmani` (`ID`, `Mesec`, `Naziv`, `Mesto`, `Cena`) VALUES
(1, 2, 'Februar naziv', 'Mesto februar', 100001.00),
(4, 2, 'Februar 2', 'Mesto februar 2', 9292.00);
DROP TABLE IF EXISTS `korisnik`;
CREATE TABLE IF NOT EXISTS `korisnik` (
`ID` int(50) NOT NULL auto_increment,

170 179


`Ime` varchar(100) NOT NULL,
`Prezime` varchar(100) NOT NULL,
`DatumRodjenja` date NOT NULL,
`JMBG` varchar(13) NOT NULL,
`KorisnickoIme` varchar(100) NOT NULL,
`Lozinka` varchar(100) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `JMBG` (`JMBG`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
INSERT INTO `korisnik` (`ID`, `Ime`, `Prezime`, `DatumRodjenja`, `JMBG`, `KorisnickoIme`,
`Lozinka`) VALUES (1, 'Petar', 'Petrovic', '1988-03-06', '0603988301228', 'pera12',
'pera');
sr.php
<?php
define("_MYSQL_NEMA_KONEKCIJE_", "Konekcija na bazu nije pronadjena!<br>Provjerite da li
su podaci za konekciju ispravni!");
define("_MYSQL_NEMA_BAZE_", "Baza podataka nije pronadjena na serveru!<br>Ukoliko zelite
instalirati bazu podataka, kliknite
<a href='index.php?podesavanja=nemaBaze'>ovdje</a>.");

define("_KORISNIK_NIJE_PRIJAVLJEN_", "Niste prijavljeni.");


define("_KORISNIK_PRIJAVA_NASLOV_", "Prijavite se");
define("_LOGIN_KORISNICKO_IME_", "Korisniko ime");
define("_LOGIN_LOZINKA_", "Lozinka");
define("_LOGIN_PRIJAVITE_SE_", "Prijavite se");
define("_LOGIN_NEISPRAVNO_KORIME_LOZINKA_", "Korisniko ime ili lozinka nisu ispravni!");
define("_KORISNIK_PRIJAVLJENI_STE_KAO_", "Dobrodoli, ");
define("_KORISNIK_NIJE_TACAN_", "Ukoliko ovo niste Vi, kliknite <a
href='index.php?login=odjava'>ovdje</a> da se odjavite.");
define("_KORISNIK_DATUM_RODJENJA_", "Datum roenja");
define("_KORISNIK_JMBG_", "JMBG");
define("_KORISNIK_IME_", "Vae ime");
define("_KORISNIK_PREZIME_", "Vae prezime");
define("_STA_ZELITE_RADITI_", "ta elite raditi?");
define("_STA_ZELITE_PREGLED_AR_", "Pregledati aranmane");
define("_STA_ZELITE_UNOS_AR_", "Unositi aranmane");
define("_KORISNIK_MORATE_BITI_PRIJAVLJENI_", "Morate biti prijavljeni za ovu akciju!");
define("_ARANZMAN_MESEC_", "Mesec");
define("_ARANZMAN_PREGLED_", "Pregledajte aranmane");
define("_ARANZMAN_NAZIV_", "Naziv");
define("_ARANZMAN_MESTO_", "Mesto");
define("_ARANZMAN_CENA_", "Cena");
define("_ARANZMAN_UNOS_", "Snimite");
define("_ARANZMAN_OBRISI_", "Brisanje");
define("_ARANZMAN_OBISAN_", "Ovaj aranman je uspeno obrisan.
Kliknite <a href='index.php?aranzman=pregled'>ovdje</a> da se vratite nazad.");

$MJESEC = array(
1 => "Januar",
2 => "Februar",
3 => "Mart",
4 => "April",
5 => "Maj",
6 => "Jun",
7 => "Jul",

171 179


8 => "Avgust",
9 => "Septembar",
10 => "Oktobar",
11 => "Novembar",
12 => "Decembar"

);
?>
podesavanja.php
<?php
ob_start();
session_start();
$nemaKonekcije = false;
$nemaBaze = false;

$mysql = array(
"host" => "localhost",
"korime" => "root",
"password" => "",
"baza" => "turist"
);
if(!mysql_connect($mysql['host'], $mysql['korime'], $mysql['password']))
{
$nemaKonekcije = true;
}
if(isset($_GET['podesavanja']) && $_GET['podesavanja'] != "")
{
if($_GET['podesavanja'] == "nemaBaze")
instalirajBazu();
}
if(!mysql_select_db($mysql['baza']))
{
$nemaBaze = true;
}
else
{
mysql_query("SET NAMES 'utf8'");
}

function instalirajBazu()
{
$upit = "DROP TABLE IF EXISTS `aranzmani`";
mysql_query($upit);
$upit = "CREATE TABLE IF NOT EXISTS `aranzmani`
(`ID` int(50) NOT NULL auto_increment,`Mesec` int(10) NOT NULL,`Naziv`
varchar(200) NOT NULL,`Mesto` varchar(100) NOT NULL,`Cena`
double(10,2) NOT NULL,PRIMARY KEY (`ID`))
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
mysql_query($upit);
$upit = "DROP TABLE IF EXISTS `korisnik0107`CREATE TABLE IF NOT EXISTS `korisnik`
(`ID` int(50) NOT NULL auto_increment,`Ime` varchar(100)

172 179


NOT NULL,`Prezime` varchar(100) NOT NULL,`DatumRodjenja` date
NOT NULL,`JMBG` varchar(13) NOT NULL,`KorisnickoIme` varchar(100)
NOT NULL,`Lozinka` varchar(100) NOT NULL,PRIMARY KEY (`ID`),
UNIQUE KEY `JMBG` (`JMBG`))
ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1";
mysql_query($upit);
$upit = "INSERT INTO `korisnik` (`Ime`, `Prezime`, `DatumRodjenja`, `JMBG`,
`KorisnickoIme`, `Lozinka`) VALUES('Admin', 'Administrator', '1988-0306', 'admin', 'admin', 'admin')";
mysql_query($upit);
}
function prikaziKorisnika()
{
if(!isset($_SESSION['prijavljeniKorisnik']) ||
$_SESSION['prijavljeniKorisnik'] == "")
{
return -1;
}
else
{
$korQuery = mysql_query("SELECT * FROM korisnik WHERE
ID='".base64_decode($_SESSION['prijavljeniKorisnik'])."'");
if(mysql_num_rows($korQuery) <= 0) return -1;
else
{
$korFetch = mysql_fetch_array($korQuery);
return array(
"ID" => $korFetch['ID'],
"Ime" => $korFetch['Ime'],
"Prezime" => $korFetch['Prezime'],
"DatumRodjenja" => $korFetch['DatumRodjenja'],
"JMBG" => $korFetch['JMBG'],
"KorisnickoIme" => $korFetch['KorisnickoIme']
);
}
}
}
function odjaviKorisnika()
{
$_SESSION['prijavljeniKorisnik'] = "";
session_destroy();
header("Location: index.php");
}
?>
index.php
<?php include("sr.php"); ?>
<?php include("podesavanja.php"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="stil.css">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Turisticka agencija</title>
</head>
<body>
<?php
if($nemaKonekcije)
{

173 179


echo _MYSQL_NEMA_KONEKCIJE_;
exit();
}
if($nemaBaze)
{
echo _MYSQL_NEMA_BAZE_;
}
include("header.php");
?>
</body>
</html>
header.php
<?php
if(isset($_GET['login']) && $_GET['login'] == "odjava")
odjaviKorisnika();
echo "<table cellspacing='0' cellpadding='0' border='0' width='100%' style='width:100%;
height:100%;'>";
echo "<tr><td colspan='3' style='height:20px;'>&nbsp;</td></tr>";
echo "<tr><td><td align='center' valign='middle' style=''>";
$logovanKorisnik = prikaziKorisnika();
if($logovanKorisnik == -1)
{
echo "<table cellspacing='0' cellpadding='0' border='0' style='width:300px;
height:150px; border:1px solid #3D3D3D;'>";
echo "<tr><td align='center' valign='middle' style='background:#3D3D3D;
color:#CDCDCD; height:30px;
font-weight:bold;'>"._KORISNIK_PRIJAVA_NASLOV_.
"</td></tr>";
echo "<tr><td align='center' valign='middle'>";
echo include("login.php");
echo "</td></tr>";
echo "</table>";
}
else
{
echo "<table cellspacing='0' cellpadding='0' border='0' style='width:100%;
height:100%;'>";
echo "<tr><td align='right' valign='middle' style='height:15px;'>";
echo _KORISNIK_PRIJAVLJENI_STE_KAO_."<b>".$logovanKorisnik['Ime']."
".$logovanKorisnik['Prezime'].".</b> ";
echo _KORISNIK_NIJE_TACAN_;
echo "</td></tr>";
echo "<tr><td align='left' valign='middle' style='height:15px;'>
<a href='index.php'>Poetna stranica</a></td></tr>";
echo "<tr><td align='center' valign='top' style='border-top:1px solid #3D3D3D;
padding-top:40px;'>";
if(isset($_GET['aranzman']) && $_GET['aranzman'] != "")
include("aranzman.php");
else
{
echo "<table cellspacing='0' cellpadding='0' border='0' style='width:300px;
border:1px solid #3D3D3D;'>";
echo "<tr><td align='center' valign='middle' style='background:#3D3D3D;
color:#FFFFFF; font-weight:bold; height:25px;'>";
echo $logovanKorisnik['Ime']." ".$logovanKorisnik['Prezime'];

174 179


echo "</td></tr>";
echo "<tr><td align='center' valign='middle' style='padding-top:10px;
padding-bottom:5px;'>";
echo _KORISNIK_IME_.": <b>".$logovanKorisnik['Ime']."</b>";
echo "<br>"._KORISNIK_PREZIME_.": <b>".$logovanKorisnik['Prezime']."</b>";
echo "<br>"._KORISNIK_DATUM_RODJENJA_.":
<b>".$logovanKorisnik['DatumRodjenja']."</b>";
echo "<br>"._KORISNIK_JMBG_.": <b>".$logovanKorisnik['JMBG']."</b>";
echo "</td></tr>";
echo "</table>";
echo "<table cellspacing='0' cellpadding='0' border='0' style='width:300px;
margin-top:40px; border:1px solid #3D3D3D;'>";
echo "<tr><td align='center' valign='middle' style='background:#3D3D3D;
color:#FFFFFF; font-weight:bold; height:25px;'>";
echo _STA_ZELITE_RADITI_;
echo "</td></tr>";
echo "<tr><td align='center' valign='middle' style='padding-top:10px;
padding-bottom:5px;'>";
echo "<a href='index.php?aranzman=pregled'>"
._STA_ZELITE_PREGLED_AR_."</a><br>";
echo "<a href='index.php?aranzman=unos'>"._STA_ZELITE_UNOS_AR_."</a><br>";
echo "</td></tr>";
echo "</table>";
}
echo "</td></tr>";
echo "</table>";
}
echo "</td>";
echo "</tr>";
echo "<tr><td colspan='3' style='height:20px;'>&nbsp;</td></tr>";

echo "</table>";
?>
login.php
<?php
if(prikaziKorisnika() == -1)
{
echo "<form name='login' action='index.php?login=1' method='POST'>";
echo "<table cellspacing='0' cellpadding='0' border='0' style='width:100%;'>";
echo "<tr><td align='right' valign='middle'>"._LOGIN_KORISNICKO_IME_.": </td><td
align='left' valign='middle'><input type='text'
name='LoginKorisnickoIme'></td></tr>";
echo "<tr><td align='right' valign='middle'>"._LOGIN_LOZINKA_.":</td>
<td align='left' valign='middle'><input type='password'
name='LoginLozinka'></td>
</tr>";
echo "<tr><td align='center' valign='middle' colspan='2'><input type='submit'
name='LoginPrijaviteSe' value='"._LOGIN_PRIJAVITE_SE_."'>
</td></tr>";
echo "</table>";
echo "</form>";
if(isset($_POST['LoginPrijaviteSe']) && $_POST['LoginPrijaviteSe'] != "")
{
$loginGreska = false;
if(!isset($_POST['LoginKorisnickoIme']) || $_POST['LoginKorisnickoIme'] == "")
$loginGreska = true;
if($loginGreska != true)

175 179


if(!isset($_POST['LoginLozinka']) || $_POST['LoginLozinka'] == "")
$loginGreska = true;
$LoginQuery = mysql_query("SELECT * FROM korisnik WHERE
KorisnickoIme = '".$_POST['LoginKorisnickoIme']."' AND
Lozinka = '".$_POST['LoginLozinka']."'");
if($loginGreska != true)
{
if(mysql_num_rows($LoginQuery) <= 0)
$loginGreska = true;
else
{
$korisnik = mysql_fetch_array($LoginQuery);
$_SESSION['prijavljeniKorisnik'] = base64_encode($korisnik['ID']);
header("Location: index.php");
}
}
if($loginGreska == true)
{
echo "<span
style='color:#FF0000;'>"._LOGIN_NEISPRAVNO_KORIME_LOZINKA_."</span>";
}
}
}
?>
aranzman.php
<?php
switch($_GET['aranzman'])
{
case "obrisi":
echo "<h1>Brisanje aranzmana</h1>";
if(prikaziKorisnika() != -1)
{
if(isset($_GET['AraID']) && $_GET['AraID'] != "")
mysql_query("DELETE FROM aranzmani WHERE ID='".$_GET['AraID']."'");
echo _ARANZMAN_OBISAN_;
}
else
{
echo _KORISNIK_MORATE_BITI_PRIJAVLJENI_;
}
break;
case "pregled": default:
echo "<h1>Pregled aranzmana</h1>";
if(prikaziKorisnika() != -1)
{
echo "<form name='pregledAranzman' action='index.php?aranzman=pregled'
method='POST'>";
echo "<table cellspacing='0' cellpadding='0' border='0'
style='width:100%; '>";
echo "<tr><td align='right' valign='middle'
style='width:100px;'>"._ARANZMAN_MESEC_.":</td>
<td align='left' valign='middle' style='width:100px;'>";
echo "<select name='AranzmanMesec'>";
foreach($MESEC as $mjKey => $mjValue)
{
echo "<option value='".$mjKey."'>".$mjValue."</option>";
}
echo "</select>";

176 179


echo "</td>";
echo "<td align='center' valign='middle' style='width:50px;'>
<input type='submit' name='AranzmanPregled'
value='"._ARANZMAN_PREGLED_."'></td><td>&nbsp;</td></tr>";
if(isset($_POST['AranzmanMesec']) && $_POST['AranzmanMesec'] != "")
{
echo "<tr><td align='center' valign='top' colspan='4'
style='padding-top:20px;'>";
echo "<h1>".$MESEC[$_POST['AranzmanMesec']]."</h1>";
$query = mysql_query("SELECT * FROM aranzmani0107 WHERE
Mesec = '".$_POST['AranzmanMesec']."'");
if(mysql_num_rows($query) > 0)
{
echo "<table cellspacing='0' cellpadding='0' border='0'
style='width:400px; border:1px solid #3D3D3D;'>";
echo "<tr><td align='center' valign='middle' style='height:25px;
background:#3D3D3D; color:#FFFFFF;
font-weight:bold;'>Naziv</td>
<td align='center' valign='middle' style='height:25px;
background:#3D3D3D; color:#FFFFFF;
font-weight:bold;'>Mesto</td>
<td align='center' valign='middle' style='height:25px;
background:#3D3D3D; color:#FFFFFF;
font-weight:bold;'>Cena</td>
<td align='center' valign='middle' style='height:25px;
background:#3D3D3D; color:#FFFFFF;
font-weight:bold;'>Brisanje</td></tr>";
$stil = "color:blue;";
while($ara = mysql_fetch_array($query))
{
if($ara['Cijena'] > 100000) $stil = "color:red;";
else $stil = "color:blue;";
echo "<tr><td align='center' valign='middle' style='".$stil."'>";
echo $ara['Naziv'];
echo "</td><td align='center' valign='middle'
style='".$stil."'>".$ara['Mjesto']."</td>";
echo "<td align='center' valign='middle'
style='".$stil."'>".$ara['Cijena']."</td>";
echo "</td>";
echo "<td align='center' valign='middle'>
<a href='index.php?aranzman=obrisi&AraID="
.$ara['ID']."'>"._ARANZMAN_OBRISI_."</a></td>";
echo "</tr>";
}
echo "</table>";
}
else echo "Nema aranzmana";
echo "</td></tr>";
}
echo "</table>";
echo "</form>";
}
else
echo _KORISNIK_MORATE_BITI_PRIJAVLJENI_;
break;
case "unos":
echo "<h1>Unos novog aranzmana</h1>";
if(prikaziKorisnika() != -1)
{

177 179


echo "<form name='unosAranzman' action='index.php?aranzman=unos'
method='POST'>";
echo "<table cellspacing='0' cellpadding='0' border='0'
style='width:400px;'>";
echo "<tr><td align='right' valign='middle'>"._ARANZMAN_MESEC_.": </td><td
align='left' valign='middle'>";
echo "<select name='AranzmanMesec'>";
foreach($MJESEC as $mjKey => $mjValue)
{
echo "<option value='".$mjKey."'>".$mjValue."</option>";
}
echo "</select>";
echo "</td></tr>";
echo "<tr><td align='right' valign='middle'>"._ARANZMAN_NAZIV_.": </td>
<td align='left' valign='middle'><input type='text'
name='AranzmanNaziv'></td>
</tr>";
echo "<tr><td align='right' valign='middle'>"._ARANZMAN_MESTO_.": </td>
<td align='left' valign='middle'><input type='text'
name='AranzmanMesto'></td>
</tr>";
echo "<tr><td align='right' valign='middle'>"._ARANZMAN_CENA_.": </td>
<td align='left' valign='middle'><input type='text'
name='AranzmanCena'></td>
</tr>";
echo "<tr><td align='center' valign='middle' colspan='2'>
<input type='submit' name='AranzmanUnos'
value='"._ARANZMAN_UNOS_."'></td></tr>";
echo "</table>";
echo "</form>";

if(isset($_POST['AranzmanUnos']) && $_POST['AranzmanUnos'] != "")


{
mysql_query("INSERT INTO aranzmani (Mesec, Naziv, Mesto, Cena)
VALUES('".$_POST['AranzmanMesec']."',
'".$_POST['AranzmanNaziv']."', '".$_POST['AranzmanMesto']."',
'".$_POST['AranzmanCena']."')");
header("Location: index.php?aranzman=pregled");
}
}
else
echo _KORISNIK_MORATE_BITI_PRIJAVLJENI_;
break;
}
?>

178 179


stil.css
body
{
margin: 0px 0px 0px 0px;
font-family: Verdana, Tahoma, Arial, sans-serif;
}
html,body
{
width:100%;
height:100%;
}
html,body,table,td,tr,div,span
{
font-size:12px;
color:#000000;
}

179 179

You might also like