Advertisement
Guest User

JavaServleti

a guest
Jun 11th, 2016
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 75.41 KB | None | 0 0
  1. Rešeni zadaci iz programskog jezika
  2. Java Servlet i JavaServerPages
  3. Studenti koji uvide greške u ovim materijalima, imaju neke primedbe, predloge, pohvale ili na drugi način žele da pomognu u pripremi materijala za ovaj kurs, mogu se javiti na e-mail:
  4. drazen.draskovic@etf.bg.ac.rs
  5. /verzija 10.01.2015./
  6. Primer 1 - Aritmetička operacija sabiranja
  7. Korišćenjem Java Servlet tehnologije napisati servlet koji vrši sabiranje dva broja. Unos podataka treba izvršiti kroz HTML formu.
  8. Rešenje:
  9. //web page: index.html
  10. <!DOCTYPE html>
  11. <html>
  12. <head>
  13. <title></title>
  14. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  15. </head>
  16. <body>
  17. <form action="pozoviServlet" method="POST">
  18. <table>
  19. <tr>
  20. <td>Prvi sabirak:</td>
  21. <td><input type="text" name="prvi" value="" /> </td>
  22. </tr>
  23. <tr>
  24. <td>Drugi sabirak:</td>
  25. <td><input type="text" name="drugi" value="" /> </td>
  26. </tr>
  27. <tr>
  28. <td colspan="2" align="center">
  29. <input type="submit" value="saberi" />
  30. </td>
  31. </tr>
  32. </table>
  33. </form>
  34. </body>
  35. </html>
  36. //source file: PrviServlet.java
  37. import java.io.*;
  38. import javax.servlet.*;
  39. import javax.servlet.http.*;
  40. public class PrviServlet extends HttpServlet {
  41. //metoda za obradu i HTTP GET i HTTP POST zahteva
  42. protected void processRequest(HttpServletRequest request,
  43. HttpServletResponse response)
  44. throws ServletException, IOException {
  45. response.setContentType("text/html;charset=UTF-8");
  46. PrintWriter out = response.getWriter();
  47. String prvi=request.getParameter("prvi");
  48. String drugi=request.getParameter("drugi");
  49. int a=0, b=0;
  50. boolean ispravno=true;
  51. double c=0.0;
  52. try{
  53. a=Integer.parseInt(prvi);
  54. b=Integer.parseInt(drugi);
  55. c = Double.parseDouble(prvi);
  56. }catch(NumberFormatException nfe){ispravno=false;}
  57. int zbir=a+b;
  58. try {
  59. out.println("<html>");
  60. out.println("<head>");
  61. out.println("<title>Primer2</title>");
  62. out.println("</head>");
  63. if(ispravno){
  64. out.println("<body bgcolor=\"00ffff\">");
  65. out.println("<h1>Zbir je: " + zbir + "</h1>");
  66. }
  67. else{
  68. out.println("<body bgcolor=\"ff0000\">");
  69. out.println("<h1>Neispravni brojevi!</h1>");
  70. }
  71. out.println("</body>");
  72. out.println("</html>");
  73. } finally {
  74. out.close();
  75. }
  76. }
  77. protected void doGet(HttpServletRequest request,
  78. HttpServletResponse response)
  79. throws ServletException, IOException {
  80. processRequest(request, response);
  81. }
  82. protected void doPost(HttpServletRequest request,
  83. HttpServletResponse response)
  84. throws ServletException, IOException {
  85. processRequest(request, response);
  86. }
  87. public String getServletInfo() {
  88. return "Short description";
  89. }
  90. }
  91. //XML file: WEB-INF/web.xml
  92. //fajl koji generise okruzenje Netbeans prilikom kreiranja servleta
  93. <?xml version="1.0" encoding="UTF-8"?>
  94. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  95. <servlet>
  96. <servlet-name>imeServleta</servlet-name>
  97. <servlet-class>PrviServlet</servlet-class>
  98. </servlet>
  99. <servlet-mapping>
  100. <servlet-name>imeServleta</servlet-name>
  101. <url-pattern>/pozoviServlet</url-pattern>
  102. </servlet-mapping>
  103. <session-config>
  104. <session-timeout>
  105. 30
  106. </session-timeout>
  107. </session-config>
  108. <welcome-file-list>
  109. <welcome-file>index.html</welcome-file>
  110. </welcome-file-list>
  111. </web-app>
  112. Primer 2 - Pozivanje servleta iz drugog servleta
  113. Korišćenjem Java Servlet tehnologije napisati HTML stranu koja preko linka poziva prvi servlet, koji zatim vrši prosleđivanje na drugi servlet, korišćenjem metode sendRedirect. Na drugom servletu napraviti formu koja ima tekstualno polje za unos imena korisnika i dugme za potvrdu, kojim se poziva treći servlet. Na trećem servletu pročitati podatak (GET parametar), koji je prosleđen tom servletu od strane drugog.
  114. Rešenje:
  115. //web page: index.html
  116. <!DOCTYPE html>
  117. <html>
  118. <head>
  119. <title>Primer sa prosledjivanjem izmedju servleta</title>
  120. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  121. </head>
  122. <body>
  123. <a href="prviServlet">Kliknite na link da pozovete prvi servlet!</a>
  124. <!-- pozivom servleta preko linka poziva se doGet() metod-->
  125. </body>
  126. </html>
  127. //source file: servleti/PrviServlet.java
  128. package servleti;
  129. import java.io.*;
  130. import javax.servlet.*;
  131. import javax.servlet.http.*;
  132. public class PrviServlet extends HttpServlet {
  133. protected void doGet(HttpServletRequest request,
  134. HttpServletResponse response)
  135. throws ServletException, IOException {
  136. PrintWriter izlaz = response.getWriter();
  137. try {
  138. izlaz.println("<html>");
  139. izlaz.println("<head>");
  140. izlaz.println("<title>Servlet prviServlet</title>");
  141. izlaz.println("</head>");
  142. izlaz.println("<body>");
  143. izlaz.println("<h1>Ovo je rezultat prvog!</h1>");
  144. izlaz.println("</body>");
  145. izlaz.println("</html>");
  146. } finally {
  147. }
  148. response.sendRedirect("drugiServlet");
  149. }
  150. }
  151. //source file: servleti/DrugiServlet.java
  152. package servleti;
  153. import java.io.*;
  154. import javax.servlet.*;
  155. import javax.servlet.http.*;
  156. public class DrugiServlet extends HttpServlet {
  157. protected void doGet(HttpServletRequest request,
  158. HttpServletResponse response)
  159. throws ServletException, IOException {
  160. response.setContentType("text/html;charset=UTF-8");
  161. PrintWriter izlaz = response.getWriter();
  162. try {
  163. izlaz.println("<html>");
  164. izlaz.println("<head>");
  165. izlaz.println("<title>Servlet drugiServlet</title>");
  166. izlaz.println("</head>");
  167. izlaz.println("<body>");
  168. izlaz.println("<h1>Ovo je rezultat drugog servleta,
  169. a ne prvog!</h1>");
  170. izlaz.println("<form action=\"treciServlet\" method=\"get\">");
  171. izlaz.println("Unesite ime: <input type=\"text\" name=\"ime\">");
  172. izlaz.println("<input type=\"submit\" value=\"Pozovi treci
  173. servlet\">");
  174. izlaz.println("</form>");
  175. izlaz.println("</body>");
  176. izlaz.println("</html>");
  177. } finally {
  178. izlaz.close();
  179. }
  180. }
  181. }
  182. //source file: servleti/TreciServlet.java
  183. package servleti;
  184. import java.io.*;
  185. import javax.servlet.*;
  186. import javax.servlet.http.*;
  187. public class TreciServlet extends HttpServlet {
  188. protected void doGet(HttpServletRequest request,
  189. HttpServletResponse response)
  190. throws ServletException, IOException {
  191. response.setContentType("text/html;charset=UTF-8");
  192. PrintWriter out = response.getWriter();
  193. try {
  194. String ime=request.getParameter("ime");
  195. out.println("<html>");
  196. out.println("<head>");
  197. out.println("<title>Servlet treciServlet</title>");
  198. out.println("</head>");
  199. out.println("<body>");
  200. out.println("<h1>Dobrodosli " + ime+ "</h1>");
  201. out.println("<br/>");
  202. out.println("<a href=\"index.html\">Povratak na
  203. prvu stranu!</a>");
  204. out.println("</body>");
  205. out.println("</html>");
  206. } finally {
  207. out.close();
  208. }
  209. }
  210. }
  211. //XML file: WEB-INF/web.xml
  212. //fajl koji generise okruzenje Netbeans prilikom kreiranja servleta
  213. <?xml version="1.0" encoding="UTF-8"?>
  214. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  215. <servlet>
  216. <servlet-name>prviServlet</servlet-name>
  217. <servlet-class>servleti.PrviServlet</servlet-class>
  218. </servlet>
  219. <servlet>
  220. <servlet-name>drugiServlet</servlet-name>
  221. <servlet-class>servleti.DrugiServlet</servlet-class>
  222. </servlet>
  223. <servlet>
  224. <servlet-name>treciServlet</servlet-name>
  225. <servlet-class>servleti.TreciServlet</servlet-class>
  226. </servlet>
  227. <servlet-mapping>
  228. <servlet-name>prviServlet</servlet-name>
  229. <url-pattern>/prviServlet</url-pattern>
  230. </servlet-mapping>
  231. <servlet-mapping>
  232. <servlet-name>drugiServlet</servlet-name>
  233. <url-pattern>/drugiServlet</url-pattern>
  234. </servlet-mapping>
  235. <servlet-mapping>
  236. <servlet-name>treciServlet</servlet-name>
  237. <url-pattern>/treciServlet</url-pattern>
  238. </servlet-mapping>
  239. <session-config>
  240. <session-timeout>
  241. 30
  242. </session-timeout>
  243. </session-config>
  244. <welcome-file-list>
  245. <welcome-file>index.html</welcome-file>
  246. </welcome-file-list>
  247. </web-app>
  248. Primer 3 - Prosleđivanje putem zahteva i sesije
  249. Korišćenjem Java Servlet tehnologije napisati HTML stranu koja ima formu sa tekstualnim poljem i dugme za potvrdu. HTML strana treba da pozove prvi servlet, koji će da taj uneti parametar (tekst unet kroz formu) proslediti drugom servletu korišćenjem:
  250. a) sendRedirect metode
  251. b) objekta klase RequestDispatcher i forward metode
  252. U prvom servletu osim ovog parametra koji unosi korisnik, treba postaviti još dva parametra, jedan koji se prosleđuje drugom servletu preko zahteva (request-a) i jedan koji se prosleđuje drugom servletu preko sesije (odnosno objekta klase HttpSession).
  253. Rešenje:
  254. //web page: index.html
  255. <!DOCTYPE html>
  256. <html>
  257. <head>
  258. <title></title>
  259. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  260. </head>
  261. <body>
  262. <form action="Servlet1" method="get">
  263. Unesite tekst i kliknite pošalji:<br>
  264. <input type="text" name="mojparametar"/><br/>
  265. <input type="submit" value="Pošalji"/>
  266. </form>
  267. </body>
  268. </html>
  269. //source file: servleti/Servlet1.java
  270. package servleti;
  271. import java.io.*;
  272. import javax.servlet.*;
  273. import javax.servlet.http.*;
  274. public class Servlet1 extends HttpServlet {
  275. protected void doGet(HttpServletRequest request,
  276. HttpServletResponse response)
  277. throws ServletException, IOException {
  278. String ime="ETF";
  279. request.setAttribute("param2", ime);
  280. HttpSession sesija = request.getSession();
  281. sesija.setAttribute("param3", ime);
  282. //zadatak pod a
  283. response.sendRedirect("Servlet2");
  284. //zadatak pod b
  285. //RequestDispatcher rd=request.getRequestDispatcher("Servlet2");
  286. //rd.forward(request, response);
  287. }
  288. }
  289. //source file: servleti/Servlet2.java
  290. package servleti;
  291. import java.io.*;
  292. import javax.servlet.*;
  293. import javax.servlet.http.*;
  294. public class Servlet2 extends HttpServlet {
  295. protected void doGet(HttpServletRequest request,
  296. HttpServletResponse response)
  297. throws ServletException, IOException {
  298. response.setContentType("text/html;charset=UTF-8");
  299. PrintWriter out = response.getWriter();
  300. try {
  301. HttpSession sesija = request.getSession();
  302. String parametar=request.getParameter("mojparametar");
  303. String param2 = request.getParameter("param2");
  304. String param3 = (String)sesija.getAttribute("param3");
  305. out.println("<html>");
  306. out.println("<head>");
  307. out.println("<title>Servlet servlet2</title>");
  308. out.println("</head>");
  309. out.println("<body>");
  310. out.println("<h1>Servlet servlet2: <br/> parametar=" + parametar +
  311. "<br/> param2 (iz request-a)=" + param2 +
  312. "<br/> param3 (iz sesije)=" + param3 + "</h1>");
  313. out.println("</body>");
  314. out.println("</html>");
  315. } finally {
  316. out.close();
  317. }
  318. }
  319. }
  320. //XML file: WEB-INF/web.xml
  321. //fajl koji generise okruzenje Netbeans prilikom kreiranja servleta
  322. <?xml version="1.0" encoding="UTF-8"?>
  323. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  324. <servlet>
  325. <servlet-name>Servlet1</servlet-name>
  326. <servlet-class>servleti.Servlet1</servlet-class>
  327. </servlet>
  328. <servlet>
  329. <servlet-name>Servlet2</servlet-name>
  330. <servlet-class>servleti.Servlet2</servlet-class>
  331. </servlet>
  332. <servlet-mapping>
  333. <servlet-name>Servlet1</servlet-name>
  334. <url-pattern>/Servlet1</url-pattern>
  335. </servlet-mapping>
  336. <servlet-mapping>
  337. <servlet-name>Servlet2</servlet-name>
  338. <url-pattern>/Servlet2</url-pattern>
  339. </servlet-mapping>
  340. <session-config>
  341. <session-timeout>
  342. 30
  343. </session-timeout>
  344. </session-config>
  345. <welcome-file-list>
  346. <welcome-file>index.html</welcome-file>
  347. </welcome-file-list>
  348. </web-app>
  349. Rezultat izvršavanja sa sendRedirect metodom:
  350. Rezultat izvršavanja sa RequestDispatcher i forward metodom:
  351. Primer 4 - Realizacija narudžbenice korišćenjem sesije
  352. Korišćenjem Java Servlet tehnologije napisati HTML stranu koja ima formu sa tekstualnim poljem za dodavanje proizvoda u korpu za kupovinu i dugme za potvrdu. HTML strana treba da pozove servlet, koji će da taj uneti parametar (tekst unet kroz formu) ubaciti u niz proizvoda koji su do tada dodati u korpu. Kada se proizvod doda, treba prikazati spisak svih naručenih proizvoda koji se trenutno nalaze u korpi i mogućnost da se korisnik vrati na početnu stranicu i nastavi kupovinu, odnosno dodavanje novih proizvoda u korpu. Trenutno stanje korpe čuvati u sesiji (objektu klase HttpSession).
  353. Rešenje:
  354. //web page: index.html
  355. <!DOCTYPE html>
  356. <html>
  357. <head>
  358. <title>E-korpa</title>
  359. </head>
  360. <body bgcolor="#FDF5E6">
  361. <center>
  362. <h1>Narudžbenica</h1>
  363. <form action="prikaz" method="GET">
  364. Unesite artikal koji zelite da porucite:
  365. <input type="TEXT" name="noviProizvod"
  366. value="Sok od breskve"><P>
  367. <input type="SUBMIT" value="Dodaj u korpu">
  368. </form>
  369. </center>
  370. </body>
  371. </html>
  372. //source file: servleti/PrikazKorpe.java
  373. package servleti;
  374. import java.io.*;
  375. import java.util.*;
  376. import javax.servlet.*;
  377. import javax.servlet.http.*;
  378. /** Servlet prikazuje listu narucenih artikala.
  379. * Svi artikli u korpi cuvaju se kao ArrayList.
  380. * Posto servlet moze vise puta da se pozove,
  381. * sadrzaj korpe se prenosi preko sesije.
  382. */
  383. @SuppressWarnings("unchecked")
  384. public class PrikazKorpe extends HttpServlet {
  385. public void doGet(HttpServletRequest request,
  386. HttpServletResponse response)
  387. throws ServletException, IOException {
  388. HttpSession sesija = request.getSession();
  389. ArrayList<String> prethodniProizvodi =
  390. (ArrayList<String>) sesija.getAttribute("prethodniArtikli");
  391. if (prethodniProizvodi == null) {
  392. prethodniProizvodi = new ArrayList<String>();
  393. sesija.setAttribute("prethodniArtikli", prethodniProizvodi);
  394. }
  395. String novi = request.getParameter("noviProizvod");
  396. if ((novi != null)
  397. && (!novi.trim().equals(""))) {
  398. prethodniProizvodi.add(novi);
  399. }
  400. response.setContentType("text/html");
  401. PrintWriter out = response.getWriter();
  402. String naslov = "Naruceni proizvodi:";
  403. String docType =
  404. "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
  405. + "Transitional//EN\">\n";
  406. out.println(docType
  407. + "<html>\n"
  408. + "<head><title>" + naslov + "</title></head>\n"
  409. + "<body bgcolor=\"#FDF5E6\">\n"
  410. + "<h1>" + naslov + "</h1>");
  411. if (prethodniProizvodi.isEmpty()) {
  412. out.println("<i>Nema nijednog artikla.</i>");
  413. } else {
  414. out.println("<ul>");
  415. for (String stavka : prethodniProizvodi) {
  416. out.println(" <li>" + stavka);
  417. }
  418. out.println("</ul>");
  419. }
  420. out.println("<br/>");
  421. out.println("<a href=\"e-korpa.html\"> Nazad na kupovinu </a>");
  422. out.println("</body></html>");
  423. }
  424. }
  425. //XML file: WEB-INF/web.xml
  426. <?xml version="1.0" encoding="UTF-8"?>
  427. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  428. <session-config>
  429. <session-timeout>
  430. 30
  431. </session-timeout>
  432. </session-config>
  433. <servlet>
  434. <servlet-name>prikaz</servlet-name>
  435. <servlet-class>servleti.PrikazKorpe</servlet-class>
  436. </servlet>
  437. <servlet-mapping>
  438. <servlet-name>prikaz</servlet-name>
  439. <url-pattern>/prikaz</url-pattern>
  440. </servlet-mapping>
  441. <welcome-file-list>
  442. <welcome-file>e-korpa.html</welcome-file>
  443. </welcome-file-list>
  444. </web-app>
  445. Prikaz korpe sa naručenim proizvodima:
  446. Primer 5 - Pretraživanje pojmova korišćenjem različitih pretraživača
  447. Korišćenjem Java Servlet tehnologije napraviti HTML formu koja služi za pretraživanje pojmova korišćenjem različitih internet pretraživača. Korisnik treba da ima mogućnost da u formi unese u tekstualno polje pojam koji želi da pronađe i da u listi ponuđenih internet pretraživača (eng. search engines) odabere od kog pretraživača želi da dobije pojam. Lista internet pretraživača treba da bude prikazana kao lista radio dugmadi, po jedan za svaki pretraživač (Google, Bing i Yahoo).
  448. Rešenje:
  449. Servlet FormaPretrazivanja treba da napravi HTML formu koja služi za unos parametara pretrage - pojma koji pretražujemo i izbor pretraživača. Pojam koji pretražujemo treba da se unese u tekstualno polje, koje će biti prosleđeno upitu pretrage, a upit će biti formiran u zavisnosti koji pretraživač smo odabrali. Izbor pretraživača izvršićemo odabirom jednog radio dugmeta, a nazivi pretraživača dobijaju se iz klase VrstePretrazivaca.
  450. //source file: FormaPretrazivanja.java
  451. import java.io.*;
  452. import javax.servlet.*;
  453. import javax.servlet.http.*;
  454. public class FormaPretrazivanja extends HttpServlet {
  455. public void doGet(HttpServletRequest request,
  456. HttpServletResponse response)
  457. throws ServletException, IOException {
  458. response.setContentType("text/html");
  459. PrintWriter out = response.getWriter();
  460. String naslov = "Internet pretrazivanje";
  461. String URLadresa = "odgovor";
  462. String docType =
  463. "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
  464. "Transitional//EN\">\n";
  465. out.println
  466. (docType +
  467. "<HTML>\n" +
  468. "<HEAD><TITLE>" + naslov + "</TITLE></HEAD>\n" +
  469. "<BODY BGCOLOR=\"#FDF5E6\">\n" +
  470. "<CENTER>\n" +
  471. "<H1>" + naslov + "</H1>\n" +
  472. "<FORM ACTION=\"" + URLadresa + "\">\n" +
  473. " Pojam za pretragu: \n" +
  474. " <INPUT TYPE=\"TEXT\" NAME=\"pojamzapretragu\"><P>\n");
  475. Pretrazivac[] vrste = VrstePretrazivaca.getPretrazivaci();
  476. for(int i=0; i<vrste.length; i++) {
  477. String naziv = vrste[i].getIme();
  478. out.println("<INPUT TYPE=\"RADIO\" " +
  479. "NAME=\"tipPretrazivaca\" " +
  480. "VALUE=\"" + naziv + "\">\n");
  481. out.println(naziv + "<BR>\n");
  482. }
  483. out.println
  484. ("<BR> <INPUT TYPE=\"SUBMIT\" VALUE=\"PRONADJI\">\n" +
  485. "</FORM>\n" +
  486. "</CENTER></BODY></HTML>");
  487. }
  488. }
  489. Klasa Pretrazivac služi da poveže ime pretraživača sa njegovom URL adresom. Metoda napraviURL treba da izgradi rezultujuću stranicu za svaki pretraživač posebno, tako što na osnovnu URL adresu pretraživača i sufiksa za ključ koji taj pretraživač koristi u svom upitu (http://...?nekiKljuc=”) doda pojam koji se traži u URL-enkodovanom formatu (internet+programiranje).
  490. //source file: Pretrazivac.java
  491. public class Pretrazivac {
  492. private String ime, URLadresa;
  493. public Pretrazivac(String ime,
  494. String URLadresa) {
  495. this.ime = ime;
  496. this.URLadresa = URLadresa;
  497. }
  498. public String napraviURL(String pojam) {
  499. return(URLadresa + pojam);
  500. }
  501. public String getIme() {
  502. return(ime);
  503. }
  504. }
  505. Klasa VrstePretrazivaca ima statički niz pretraživača, koji sadrži njihove adrese (poziva se konstruktor prethodne klase Pretrazivac koji pravi po jedan objekat za svaki internet pretraživač).
  506. //source file: VrstePretrazivaca.java
  507. public class VrstePretrazivaca {
  508. private static Pretrazivac[] pretrazivaci =
  509. { new Pretrazivac("Google",
  510. "http://www.google.com/#q="),
  511. new Pretrazivac("Bing",
  512. "http://www.bing.com/search?q="),
  513. new Pretrazivac("Yahoo",
  514. "http://search.yahoo.com/bin/search?p=")
  515. };
  516. public static Pretrazivac[] getPretrazivaci() {
  517. return(pretrazivaci);
  518. }
  519. public static String napraviURL(String searchEngineName,
  520. String searchString) {
  521. Pretrazivac[] searchSpecs = getPretrazivaci();
  522. String URLadresa = null;
  523. for(Pretrazivac spec : searchSpecs) {
  524. if (spec.getIme().equalsIgnoreCase(searchEngineName)) {
  525. URLadresa = spec.napraviURL(searchString);
  526. break;
  527. }
  528. }
  529. return(URLadresa);
  530. }
  531. }
  532. Servlet OdgovorPretrazivaca dobija se kao rezultat izvršavanja forme u servletu FormaPretrazivanja. Cilj ovog servleta je da prihvati pojam za pretragu i vrstu pretraživača iz forme koju popunjava korisnik i da pošalje upit internet pretraživaču koji je odabran u toj formi. Ako je pretraživač izabran u listi radio dugmadi, šalje se odgovor 302 korišćenjem sendRedirect metode, a ako pretraživač nija izabran, šalje se odgovor 404 korišćenjem sendError.
  533. URL enkoder menja blanko (space) znak sa znakom + i sve druge nealfabetske karaktere konvertuje u “%XY” gde je XY heksadecimalna vrednost ASCII (ili ISO Latin-1) karaktera. Veb pregledači uvek enkoduju vrednosti forme, ali getParameter metoda ih automatski dekoduje.
  534. //source file: OdgovorPretrazivaca.java
  535. import java.io.*;
  536. import java.net.*;
  537. import javax.servlet.*;
  538. import javax.servlet.http.*;
  539. public class OdgovorPretrazivaca extends HttpServlet {
  540. public void doGet(HttpServletRequest request,
  541. HttpServletResponse response)
  542. throws ServletException, IOException {
  543. String kljuc = request.getParameter("pojamzapretragu");
  544. if (kljuc == null || kljuc.isEmpty()) {
  545. reportProblem(response, "Niste uneli pojam koji zelite da pronadjete.");
  546. return;
  547. }
  548. kljuc = URLEncoder.encode(kljuc, "UTF-8");
  549. String imepretrazivaca = request.getParameter("tipPretrazivaca");
  550. if (imepretrazivaca == null || imepretrazivaca.isEmpty()) {
  551. reportProblem(response, "Niste uneli pretrazivac koji koristite.");
  552. return;
  553. }
  554. String pretragaURL = VrstePretrazivaca.napraviURL(imepretrazivaca, kljuc);
  555. if (pretragaURL != null) {
  556. response.sendRedirect(pretragaURL);
  557. } else {
  558. reportProblem(response, "Nije prepoznat pretrazivac.");
  559. }
  560. }
  561. private void reportProblem(HttpServletResponse response, String message)
  562. throws IOException {
  563. response.sendError(response.SC_NOT_FOUND, message);
  564. }
  565. }
  566. //XML file: WEB-INF/web.xml
  567. <?xml version="1.0" encoding="UTF-8"?>
  568. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  569. <servlet>
  570. <servlet-name>odgovor</servlet-name>
  571. <servlet-class>OdgovorPretrazivaca</servlet-class>
  572. </servlet>
  573. <servlet-mapping>
  574. <servlet-name>odgovor</servlet-name>
  575. <url-pattern>/odgovor</url-pattern>
  576. </servlet-mapping>
  577. <servlet>
  578. <servlet-name>index</servlet-name>
  579. <servlet-class>FormaPretrazivanja</servlet-class>
  580. </servlet>
  581. <servlet-mapping>
  582. <servlet-name>index</servlet-name>
  583. <url-pattern>/index</url-pattern>
  584. </servlet-mapping>
  585. <session-config>
  586. <session-timeout>
  587. 30
  588. </session-timeout>
  589. </session-config>
  590. <welcome-file-list>
  591. <welcome-file>index</welcome-file>
  592. </welcome-file-list>
  593. </web-app>
  594. Primer 6 - Brojač i rad sa fajlom
  595. Korišćenjem Java Servlet tehnologije napraviti servlet koji čita početno stanje brojača iz tekstualnog fajla brojacposeta.txt i inkrementira taj brojač. Servletu treba omogućiti da se za svaki ponovni poziv tog servleta uvećava taj brojač u tekstualnom fajlu. Koristiti metode init za čitanje početne vrednosti brojača i destroy za ažuriranje vrednosti brojača u fajlu. Ukoliko tekstualni fajl inicijalno ne postoji na lokaciji sa koje čitamo, treba ga kreirati, a brojač postaviti na početnu vrednost 0.
  596. Rešenje:
  597. //web page: index.html
  598. <!DOCTYPE HTML>
  599. <html>
  600. <head>
  601. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  602. <title>Brojac</title>
  603. </head>
  604. <body>
  605. <h2>Kliknite na servlet!</h2>
  606. <br/>
  607. <a href="brojacservlet">click</a>
  608. </body>
  609. </html>
  610. //source file: paket/MyServlet.java
  611. package paket;
  612. import java.io.*;
  613. import javax.servlet.*;
  614. import javax.servlet.http.*;
  615. public class MyServlet extends HttpServlet {
  616. int count;
  617. @Override
  618. public void init(ServletConfig config) throws ServletException {
  619. // Prvo pozivamo init metod bazne klase
  620. super.init(config);
  621. // Trazimo fajl u kome stoji ranija vrednost brojaca
  622. try {
  623. File file = new File("c:/brojacposeta.txt");
  624. FileReader fileReader = new FileReader(file);
  625. BufferedReader bufferedReader = new BufferedReader(fileReader);
  626. String pocetno = bufferedReader.readLine();
  627. count = Integer.parseInt(pocetno);
  628. return;
  629. }
  630. catch (FileNotFoundException e1) { } // Ako stanje nije sacuvano
  631. catch (IOException e2) { } // Ako ima problem prilikom citanja
  632. catch (NumberFormatException e3) { } // Ako sacuvano stanje nije broj
  633. // Nismo nasli nigde zapisano inicijalno stanje brojaca, pa ga resetujemo
  634. count = 0;
  635. }
  636. @Override
  637. public void doGet(HttpServletRequest req, HttpServletResponse res)
  638. throws ServletException, IOException {
  639. res.setContentType("text/html;charset=UTF-8");
  640. PrintWriter out = res.getWriter();
  641. count++;
  642. try {
  643. out.println("<html>");
  644. out.println("<head>");
  645. out.println("<title>Brojac poziva</title>");
  646. out.println("</head>");
  647. out.println("<body>");
  648. out.println("Od kad je sveta i veka, ovaj servlet je pozvan " +
  649. count + " puta.");
  650. out.println("<a href=\"brojacservlet\">klikni ponovo</a>");
  651. out.println("</body>");
  652. out.println("</html>");
  653. }
  654. finally{
  655. out.close();
  656. }
  657. }
  658. @Override
  659. public void destroy() {
  660. saveState();
  661. }
  662. public void saveState() {
  663. // Pokusavamo da zapisemo stanje brojaca na perzistentnu memoriju (fajl)
  664. try {
  665. File file = new File("c:/brojacposeta.txt");
  666. FileWriter fileWriter = new FileWriter(file);
  667. String stanje = Integer.toString(count);
  668. fileWriter.write(stanje, 0, stanje.length());
  669. fileWriter.close();
  670. return;
  671. }
  672. catch (IOException e) { // ako postoji problem prilikom upisa
  673. }
  674. }
  675. }
  676. //XML file: WEB-INF/web.xml
  677. <?xml version="1.0" encoding="UTF-8"?>
  678. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  679. <servlet>
  680. <servlet-name>moj_servlet</servlet-name>
  681. <servlet-class>paket.MyServlet</servlet-class>
  682. </servlet>
  683. <servlet-mapping>
  684. <servlet-name>moj_servlet</servlet-name>
  685. <url-pattern>/brojacservlet</url-pattern>
  686. </servlet-mapping>
  687. <session-config>
  688. <session-timeout>
  689. 30
  690. </session-timeout>
  691. </session-config>
  692. <welcome-file-list>
  693. <welcome-file>index.html</welcome-file>
  694. </welcome-file-list>
  695. </web-app>
  696. Primer 7 - Loto
  697. Korišćenjem Java Servlet tehnologije napraviti servlet koji korisniku prikazuje 7 slučajno odabranih brojeva na igri loto, koristeći metodu Math.random(). Brojeve odabrati prilikom inicijalizacije servleta (metoda init()). Brojevi neka budu u opsegu od 1 do 37.
  698. Rešenje:
  699. //source file: Loto.java
  700. import java.io.*;
  701. import javax.servlet.*;
  702. import javax.servlet.http.*;
  703. /** Primer koriscenja init i
  704. * getLastModified metoda kod servleta.
  705. */
  706. public class Loto extends HttpServlet {
  707. private long modTime;
  708. private int[] brojevi = new int[7];
  709. /** Ova init metoda se poziva samo kada se servlet
  710. * prvi put poziva, pre obrade prvog request-a.
  711. */
  712. public void init() throws ServletException {
  713. // zaokruzuje na pribliznu vrednost
  714. modTime = System.currentTimeMillis()/1000*1000;
  715. for(int i=0; i<brojevi.length; i++) {
  716. brojevi[i] = randomNum();
  717. }
  718. }
  719. /** Metoda doGet vraca listu koji je izracunala metoda init. */
  720. public void doGet(HttpServletRequest request,
  721. HttpServletResponse response)
  722. throws ServletException, IOException {
  723. response.setContentType("text/html");
  724. PrintWriter out = response.getWriter();
  725. String naslov = "Tvoja loto kombinacija";
  726. String docType =
  727. "<!DOCTYPE HTML>\n";
  728. out.println(docType +
  729. "<HTML>\n" +
  730. "<HEAD><TITLE>" + naslov + "</TITLE></HEAD>\n" +
  731. "<BODY BGCOLOR=\"yellow\">\n" +
  732. "<H1 ALIGN=CENTER>" + naslov + "</H1>\n" +
  733. "<B>Izracunali smo slucajnu kombinaciju " +
  734. brojevi.length +" loto brojeva najboljih za Vas: " +
  735. ".</B> <OL>");
  736. for(int i=0; i<brojevi.length; i++) {
  737. out.println(" <LI>" + brojevi[i]);
  738. }
  739. out.println("</OL>" +
  740. "</BODY></HTML>");
  741. }
  742. /** Standarda servisna metoda koja uporedjuje ovaj datum
  743. * sa datumom u If-Modified-Since u headeru requesta.
  744. * Ako je getLastModified datum kasniji ili ako ne postoji
  745. * polje If-Modified-Since u headeru, doGet metoda se poziva
  746. * uobicajno. Ako getLastModified datum predstavlja isti
  747. * ili raniji, servisna metoda ce kao odgovor
  748. * poslati 304 (Not Modified) i nece pozvati doGet metodu.
  749. * Pretrazivac ce u tom slucaju iskoristiti kesiranu
  750. * verziju te stranice (tj tog servleta).
  751. */
  752. public long getLastModified(HttpServletRequest request) {
  753. return(modTime);
  754. }
  755. // Slucaj ceo broj izmedju 1 i 37
  756. // random metoda vraca broj izmedju 0 i 1
  757. private int randomNum() {
  758. return((int)(1 + Math.random() * 37));
  759. }
  760. }
  761. Primer 8 - Kolačići
  762. Korišćenjem Java Servlet tehnologije napraviti servlet koji proverava da li u internet pregledaču postoji kolačić (cookie) koji pokazuje da li je korisnik već posećivao datu veb stranicu, pa ako ne postoji da ispiše „Dobrodošli!“, a ako kolačić postoji, odnosno korisnik je već posećivao datu veb stranicu, da se ispiše „Lepo je videti Vas opet“.
  763. Rešenje:
  764. //source file: cookie/MyCookie.java
  765. package cookie;
  766. import java.io.*;
  767. import javax.servlet.*;
  768. import javax.servlet.http.*;
  769. public class MyCookie extends HttpServlet {
  770. public void doGet(HttpServletRequest request, HttpServletResponse response)
  771. throws ServletException, IOException {
  772. boolean newuser = true;
  773. Cookie[] cookies = request.getCookies();
  774. if (cookies != null) {
  775. for (int i = 0; i < cookies.length; i++) {
  776. Cookie c = cookies[i];
  777. if ((c.getName().equals("stariPosetilac"))
  778. && (c.getValue().equals("yes"))) {
  779. newuser = false;
  780. break;
  781. }
  782. }
  783. }
  784. String title;
  785. if (newuser) {
  786. Cookie posetilacCookie =
  787. new Cookie("stariPosetilac", "yes");
  788. // posetilacCookie.setMaxAge(60 * 60 * 24 * 365);
  789. posetilacCookie.setMaxAge(60);
  790. response.addCookie(posetilacCookie);
  791. title = "Dobrodosli!";
  792. } else {
  793. title = "Lepo je videti Vas opet";
  794. }
  795. response.setContentType("text/html;charset=UTF-8");
  796. PrintWriter izlaz = response.getWriter();
  797. try {
  798. izlaz.println("<html>");
  799. izlaz.println("<head>");
  800. izlaz.println("<title>" + title + "</title>");
  801. izlaz.println("</head>");
  802. izlaz.println("<body>");
  803. izlaz.println("<h1>" + title + "</h1>");
  804. izlaz.println("</body>");
  805. izlaz.println("</html>");
  806. } finally {
  807. izlaz.close();
  808. }
  809. }
  810. }
  811. Primer 9 - Korisnici
  812. Korišćenjem Java Servlet tehnologije napraviti servlet koji prikazuje HTML stranu sa formom za logovanje korisnika, u koju korisnik treba da unese svoje korisničko ime i svoju lozinku (kredencijali), i ukoliko su korisnički kredencijali ispravni (postoje u bazi podataka u tabeli KorisnikInfo) korisniku prikazati stranicu sa svojim ličnim podacima (servlet Prikaz), a ukoliko podaci nisu dobri korisniku prikazati stranicu sa greškom (servlet Greska). Takođe, potrebno je realizovati još tri servleta: servlete za promenu ličnih podataka (servlet Promena, koji prikazuje formu za izmenu korisničkih podataka i koji poziva za ažuriranje tabele u bazi drugi servlet Izmena) i servlet koji služi prekidanje sesije i izlogovanje iz sistema (servlet Logout).
  813. Izgled tabela u bazi dbkorisnik:
  814. KorisnikInfo
  815. #
  816. Naziv kolone
  817. Tip
  818. 1
  819. username (PK)
  820. varchar(32)
  821. 2
  822. password
  823. varchar(32)
  824. 3
  825. first_name
  826. varchar(32)
  827. 4
  828. last_name
  829. varchar(32)
  830. 5
  831. email
  832. varchar(32)
  833. 6
  834. phone
  835. varchar(32)
  836. Rešenje:
  837. //source file: util/DB.java
  838. package util;
  839. import java.sql.Connection;
  840. import java.sql.DriverManager;
  841. public class DB {
  842. private static DB instance;
  843. private static final int MAX_CON = 5;
  844. private static final Connection[] bafer = new Connection[MAX_CON];
  845. private int first = 0, last = 0, free = MAX_CON;
  846. private DB() { //za MySQL
  847. try {
  848. Class.forName("com.mysql.jdbc.Driver");
  849. for (int i = 0; i < MAX_CON; i++) {
  850. bafer[i] =
  851. DriverManager.getConnection("jdbc:mysql://
  852. localhost:3306/dbkorisnik", "root", "");
  853. }
  854. } catch (Exception e) {
  855. e.printStackTrace();
  856. }
  857. }
  858. /* za Access
  859. private DB(){
  860. try{
  861. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  862. for(int i=0; i<MAX_CON; i++)
  863. bafer[i] = DriverManager.getConnection("jdbc:odbc:dbkorisnik");
  864. }catch(Exception e){}
  865. }
  866. */
  867. public static DB getInstance() {
  868. if (instance == null) {
  869. instance = new DB();
  870. }
  871. return instance;
  872. }
  873. public synchronized Connection getConnection() {
  874. if (free == 0) {
  875. return null;
  876. }
  877. free--;
  878. Connection con = bafer[first];
  879. first = (first + 1) % MAX_CON;
  880. return con;
  881. }
  882. public synchronized void putConnection(Connection con) {
  883. if (con == null) {
  884. return;
  885. }
  886. free++;
  887. bafer[last] = con;
  888. last = (last + 1) % MAX_CON;
  889. }
  890. }
  891. //source file: beans/Korisnik.java
  892. //Java bean
  893. package beans;
  894. public class Korisnik {
  895. private String username = "";
  896. private String password = "";
  897. private String ime = "";
  898. private String prezime = "";
  899. private String email = "";
  900. private String telefon = "";
  901. public String getUsername() {
  902. return username;
  903. }
  904. public void setUsername(String username) {
  905. this.username = username;
  906. }
  907. public String getPassword() {
  908. return password;
  909. }
  910. public void setPassword(String password) {
  911. this.password = password;
  912. }
  913. public String getIme() {
  914. return ime;
  915. }
  916. public void setIme(String ime) {
  917. this.ime = ime;
  918. }
  919. public String getPrezime() {
  920. return prezime;
  921. }
  922. public void setPrezime(String prezime) {
  923. this.prezime = prezime;
  924. }
  925. public String getEmail() {
  926. return email;
  927. }
  928. public void setEmail(String email) {
  929. this.email = email;
  930. }
  931. public String getTelefon() {
  932. return telefon;
  933. }
  934. public void setTelefon(String telefon) {
  935. this.telefon = telefon;
  936. }
  937. }
  938. //source file: servleti/Index.java
  939. package servleti;
  940. import beans.Korisnik;
  941. import java.io.*;
  942. import javax.servlet.*;
  943. import javax.servlet.http.*;
  944. public class Index extends HttpServlet {
  945. protected void processRequest(HttpServletRequest request,
  946. HttpServletResponse response)
  947. throws ServletException, IOException {
  948. response.setContentType("text/html;charset=UTF-8");
  949. PrintWriter out = response.getWriter();
  950. HttpSession sesija = request.getSession();
  951. Korisnik korisnik = (Korisnik) sesija.getAttribute("korisnik");
  952. String username = "", password = "";
  953. if (korisnik != null) {
  954. username = korisnik.getUsername();
  955. password = korisnik.getPassword();
  956. }
  957. String poruka = (String) request.getAttribute("poruka");
  958. if (poruka == null) {
  959. poruka = "Dobrodosli!";
  960. }
  961. try {
  962. out.println("<html>");
  963. out.println("<head>");
  964. out.println("<title>Korisnicka aplikacija</title>");
  965. out.println("</head>");
  966. out.println("<body>");
  967. out.println("<h3>" + poruka + " </h3><br/><br/>");
  968. out.println("Molimo, ulogujte se: ");
  969. out.println("<table><tr><td>Korisnicko ime:</td>");
  970. out.println("<form action=\"login\" method=\"POST\">");
  971. out.println("<td><input type=\"text\" name=\"username\" value=\""
  972. + username + "\" width=\"20\"></td></tr>");
  973. out.println("<tr><td>Lozinka:</td>");
  974. out.println("<td><input type=\"password\" name=\"password\"
  975. value=\"" + password + "\" width=\"20\"></td></tr>");
  976. out.println("<tr><td><input type=\"submit\"
  977. value=\"Ulogujte se\"</td>");
  978. out.println("<td><input type=\"reset\"
  979. value=\"Ponistite\"</td><tr></table>");
  980. out.println("</form>");
  981. out.println("</body>");
  982. out.println("</html>");
  983. } finally {
  984. out.close();
  985. }
  986. }
  987. @Override
  988. protected void doGet(HttpServletRequest request,
  989. HttpServletResponse response)
  990. throws ServletException, IOException {
  991. processRequest(request, response);
  992. }
  993. @Override
  994. protected void doPost(HttpServletRequest request,
  995. HttpServletResponse response)
  996. throws ServletException, IOException {
  997. processRequest(request, response);
  998. }
  999. }
  1000. //source file: servleti/Login.java
  1001. package servleti;
  1002. import beans.*;
  1003. import java.io.*;
  1004. import java.sql.*;
  1005. import javax.servlet.*;
  1006. import javax.servlet.http.*;
  1007. import util.DB;
  1008. public class Login extends HttpServlet {
  1009. protected void processRequest(HttpServletRequest request,
  1010. HttpServletResponse response)
  1011. throws ServletException, IOException {
  1012. HttpSession sesija = request.getSession();
  1013. String poruka = null;
  1014. String username = request.getParameter("username");
  1015. String password = request.getParameter("password");
  1016. Korisnik korisnik = new Korisnik();
  1017. korisnik.setUsername(username);
  1018. korisnik.setPassword(password);
  1019. sesija.setAttribute("korisnik", korisnik);
  1020. if (username.isEmpty() || password.isEmpty()) {
  1021. poruka = "Niste popunili sva polja!";
  1022. request.setAttribute("poruka", poruka);
  1023. RequestDispatcher rd = request.getRequestDispatcher("index");
  1024. rd.forward(request, response);
  1025. }
  1026. Connection con = null;
  1027. Statement stmt = null;
  1028. ResultSet rs = null;
  1029. String address = "prikaz";
  1030. try {
  1031. con = DB.getInstance().getConnection();
  1032. stmt = con.createStatement();
  1033. String upit = "select * from KorisnikInfo where username='" + username +
  1034. "' and password='" + password + "';";
  1035. rs = stmt.executeQuery(upit);
  1036. if (rs.next()) {
  1037. String email = rs.getString("email");
  1038. String ime = rs.getString("first_name");
  1039. String prezime = rs.getString("last_name");
  1040. String telefon = rs.getString("phone");
  1041. korisnik.setEmail(email);
  1042. korisnik.setIme(ime);
  1043. korisnik.setPrezime(prezime);
  1044. korisnik.setTelefon(telefon);
  1045. stmt.close();
  1046. } else {
  1047. poruka = "Neispravno korisnicko ime i/ili lozinka! Pokusajte ponovo.";
  1048. request.setAttribute("poruka", poruka);
  1049. korisnik.setPassword("");
  1050. address = "index";
  1051. }
  1052. } catch (SQLException ex) {
  1053. sesija.invalidate();
  1054. String errormsg = ex.getMessage();
  1055. request.setAttribute("errormsg", errormsg);
  1056. address = "error";
  1057. } finally {
  1058. DB.getInstance().putConnection(con);
  1059. }
  1060. request.getRequestDispatcher(address).forward(request, response);
  1061. }
  1062. @Override
  1063. protected void doGet(HttpServletRequest request,
  1064. HttpServletResponse response)
  1065. throws ServletException, IOException {
  1066. processRequest(request, response);
  1067. }
  1068. @Override
  1069. protected void doPost(HttpServletRequest request,
  1070. HttpServletResponse response)
  1071. throws ServletException, IOException {
  1072. processRequest(request, response);
  1073. }
  1074. }
  1075. //source file: servleti/Prikaz.java
  1076. package servleti;
  1077. import beans.*;
  1078. import java.io.*;
  1079. import javax.servlet.*;
  1080. import javax.servlet.http.*;
  1081. public class Prikaz extends HttpServlet {
  1082. protected void processRequest(HttpServletRequest request,
  1083. HttpServletResponse response)
  1084. throws ServletException, IOException {
  1085. response.setContentType("text/html;charset=UTF-8");
  1086. PrintWriter out = response.getWriter();
  1087. HttpSession sesija = request.getSession();
  1088. Korisnik korisnik = (Korisnik) sesija.getAttribute("korisnik");
  1089. String poruka = (String) request.getAttribute("poruka");
  1090. if (poruka == null) {
  1091. poruka = "Vasi podaci (prethodna stranica je \"promena\")";
  1092. }
  1093. try {
  1094. out.println("<html>");
  1095. out.println("<head>");
  1096. out.println("<title>Korisnicka aplikacija</title>");
  1097. out.println("</head>");
  1098. out.println("<body>");
  1099. out.println("<h3>" + poruka + "</h3><br/><br/>");
  1100. out.println("<table width=\"40%\" border=\"3\">"
  1101. + "<tr><td width=\"50%\">Korisnicko ime:</td>"
  1102. + "<td>" + korisnik.getUsername() + "</td></tr>");
  1103. out.println("<tr><td>Ime:</td>"
  1104. + "<td>" + korisnik.getIme() + "</td></tr>");
  1105. out.println("<tr><td>Prezime:</td>"
  1106. + "<td>" + korisnik.getPrezime() + "</td></tr>");
  1107. out.println("<tr><td>Email:</td>"
  1108. + "<td>" + korisnik.getEmail() + "</td></tr>");
  1109. out.println("<tr><td>Telefon:</td>"
  1110. + "<td>" + korisnik.getTelefon() + "</td></tr>");
  1111. out.println("</table><br/>");
  1112. out.println("<a href=\"promena\">Promenite podatke</a>");
  1113. out.println("<a href=\"logout\">Izlogujte se</a>");
  1114. out.println("</body>");
  1115. out.println("</html>");
  1116. } finally {
  1117. out.close();
  1118. }
  1119. }
  1120. @Override
  1121. protected void doGet(HttpServletRequest request,
  1122. HttpServletResponse response)
  1123. throws ServletException, IOException {
  1124. processRequest(request, response);
  1125. }
  1126. @Override
  1127. protected void doPost(HttpServletRequest request,
  1128. HttpServletResponse response)
  1129. throws ServletException, IOException {
  1130. processRequest(request, response);
  1131. }
  1132. }
  1133. //source file: servleti/Greska.java
  1134. package servleti;
  1135. import java.io.*;
  1136. import javax.servlet.*;
  1137. import javax.servlet.http.*;
  1138. public class Greska extends HttpServlet {
  1139. protected void processRequest(HttpServletRequest request,
  1140. HttpServletResponse response)
  1141. throws ServletException, IOException {
  1142. response.setContentType("text/html;charset=UTF-8");
  1143. String errormsg = (String) request.getAttribute("errormsg");
  1144. PrintWriter out = response.getWriter();
  1145. try {
  1146. out.println("<html>");
  1147. out.println("<head>");
  1148. out.println("<title>Greska!</title>");
  1149. out.println("</head>");
  1150. out.println("<body>");
  1151. out.println("<h1>Greska u radu sa bazom podataka</h1>");
  1152. out.println("<br/>" + errormsg + "<br/>");
  1153. out.println("</body>");
  1154. out.println("</html>");
  1155. } finally {
  1156. out.close();
  1157. }
  1158. }
  1159. @Override
  1160. protected void doGet(HttpServletRequest request,
  1161. HttpServletResponse response)
  1162. throws ServletException, IOException {
  1163. processRequest(request, response);
  1164. }
  1165. @Override
  1166. protected void doPost(HttpServletRequest request,
  1167. HttpServletResponse response)
  1168. throws ServletException, IOException {
  1169. processRequest(request, response);
  1170. }
  1171. }
  1172. //source file: servleti/Promena.java
  1173. package servleti;
  1174. import beans.Korisnik;
  1175. import java.io.*;
  1176. import javax.servlet.*;
  1177. import javax.servlet.http.*;
  1178. public class Promena extends HttpServlet {
  1179. protected void processRequest(HttpServletRequest request,
  1180. HttpServletResponse response)
  1181. throws ServletException, IOException {
  1182. response.setContentType("text/html;charset=UTF-8");
  1183. PrintWriter out = response.getWriter();
  1184. HttpSession sesija = request.getSession();
  1185. Korisnik korisnik = (Korisnik) sesija.getAttribute("korisnik");
  1186. try {
  1187. out.println("<html>");
  1188. out.println("<head>");
  1189. out.println("<title>Korisnicka aplikacija</title>");
  1190. out.println("</head>");
  1191. out.println("<body>");
  1192. out.println("<h3>Vasi podaci koje mozete menjati</h3><br/><br/>");
  1193. out.println("<form action=\"izmena\" method=\"post\" >");
  1194. out.println("<table width=\"40%\" border=\"3\">"
  1195. + "<tr><td width=\"50%\">Ime:</td>"
  1196. + "<td><input type=\"text\" name=\"ime\" value=\""
  1197. + korisnik.getIme() + "\"/></td></tr>");
  1198. out.println("<tr><td>Prezime:</td>"
  1199. + "<td><input type=\"text\" name=\"prezime\" value=\""
  1200. + korisnik.getPrezime() + "\"/></td></tr>");
  1201. out.println("<tr><td>Email:</td>"
  1202. + "<td><input type=\"text\" name=\"email\" value=\""
  1203. + korisnik.getEmail() + "\"/></td></tr>");
  1204. out.println("<tr><td>Telefon:</td>"
  1205. + "<td><input type=\"text\" name=\"telefon\" value=\""
  1206. + korisnik.getTelefon() + "\"/></td></tr>");
  1207. out.println("</table><br/>");
  1208. out.println("<input type=\"submit\" value=\"Prihvatite izmenu\"/>");
  1209. out.println("<input type=\"reset\" value=\"Odbacite izmenu\"/>");
  1210. out.println("</form></body>");
  1211. out.println("<a href=\"prikaz\">Nazad</a>");
  1212. out.println("</html>");
  1213. } finally {
  1214. out.close();
  1215. }
  1216. }
  1217. @Override
  1218. protected void doGet(HttpServletRequest request,
  1219. HttpServletResponse response)
  1220. throws ServletException, IOException {
  1221. processRequest(request, response);
  1222. }
  1223. @Override
  1224. protected void doPost(HttpServletRequest request,
  1225. HttpServletResponse response)
  1226. throws ServletException, IOException {
  1227. processRequest(request, response);
  1228. }
  1229. }
  1230. //source file: servleti/Izmena.java
  1231. package servleti;
  1232. import beans.Korisnik;
  1233. import java.io.*;
  1234. import java.sql.*;
  1235. import javax.servlet.*;
  1236. import javax.servlet.http.*;
  1237. import util.DB;
  1238. public class Izmena extends HttpServlet {
  1239. protected void processRequest(HttpServletRequest request,
  1240. HttpServletResponse response)
  1241. throws ServletException, IOException {
  1242. HttpSession sesija = request.getSession();
  1243. Korisnik korisnik = (Korisnik) sesija.getAttribute("korisnik");
  1244. String ime = request.getParameter("ime");
  1245. String prezime = request.getParameter("prezime");
  1246. String telefon = request.getParameter("telefon");
  1247. String email = request.getParameter("email");
  1248. korisnik.setIme(ime);
  1249. korisnik.setPrezime(prezime);
  1250. korisnik.setTelefon(telefon);
  1251. korisnik.setEmail(email);
  1252. String upit = "update KorisnikInfo "
  1253. + "set first_name='" + ime + "',last_name='" + prezime
  1254. + "', phone='" + telefon + "', email='" + email + "'"
  1255. + "where username='" + korisnik.getUsername() + "';";
  1256. Connection con = null;
  1257. Statement stmt = null;
  1258. String address = "prikaz";
  1259. try {
  1260. con = DB.getInstance().getConnection();
  1261. stmt = con.createStatement();
  1262. stmt.executeUpdate(upit);
  1263. stmt.close();
  1264. } catch (SQLException ex) {
  1265. sesija.invalidate();
  1266. String errormsg = ex.getMessage();
  1267. request.setAttribute("errormsg", errormsg);
  1268. address = "error";
  1269. } finally {
  1270. DB.getInstance().putConnection(con);
  1271. }
  1272. request.setAttribute("poruka", "Podaci su uspesno izmenjeni");
  1273. request.getRequestDispatcher(address).forward(request, response);
  1274. }
  1275. @Override
  1276. protected void doGet(HttpServletRequest request,
  1277. HttpServletResponse response)
  1278. throws ServletException, IOException {
  1279. processRequest(request, response);
  1280. }
  1281. @Override
  1282. protected void doPost(HttpServletRequest request,
  1283. HttpServletResponse response)
  1284. throws ServletException, IOException {
  1285. processRequest(request, response);
  1286. }
  1287. }
  1288. //source file: servleti/Logout.java
  1289. package servleti;
  1290. import java.io.*;
  1291. import javax.servlet.*;
  1292. import javax.servlet.http.*;
  1293. public class Logout extends HttpServlet {
  1294. protected void processRequest(HttpServletRequest request,
  1295. HttpServletResponse response)
  1296. throws ServletException, IOException {
  1297. HttpSession sesija = request.getSession();
  1298. sesija.invalidate();
  1299. response.setContentType("text/html;charset=UTF-8");
  1300. PrintWriter out = response.getWriter();
  1301. try {
  1302. out.println("<html>");
  1303. out.println("<head>");
  1304. out.println("<title>Dovidjenja</title>");
  1305. out.println("</head>");
  1306. out.println("<body>");
  1307. out.println("<h1>Dovidjenja</h1>");
  1308. out.println("<a href=\"index\">nazad na login stranu</a>");
  1309. out.println("</body>");
  1310. out.println("</html>");
  1311. } finally {
  1312. out.close();
  1313. }
  1314. }
  1315. @Override
  1316. protected void doGet(HttpServletRequest request,
  1317. HttpServletResponse response)
  1318. throws ServletException, IOException {
  1319. processRequest(request, response);
  1320. }
  1321. @Override
  1322. protected void doPost(HttpServletRequest request,
  1323. HttpServletResponse response)
  1324. throws ServletException, IOException {
  1325. processRequest(request, response);
  1326. }
  1327. }
  1328. //XML file: WEB-INF/web.xml
  1329. <?xml version="1.0" encoding="UTF-8"?>
  1330. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  1331. <servlet>
  1332. <servlet-name>index</servlet-name>
  1333. <servlet-class>servleti.Index</servlet-class>
  1334. </servlet>
  1335. <servlet>
  1336. <servlet-name>login</servlet-name>
  1337. <servlet-class>servleti.Login</servlet-class>
  1338. </servlet>
  1339. <servlet>
  1340. <servlet-name>greska</servlet-name>
  1341. <servlet-class>servleti.Greska</servlet-class>
  1342. </servlet>
  1343. <servlet>
  1344. <servlet-name>promena</servlet-name>
  1345. <servlet-class>servleti.Promena</servlet-class>
  1346. </servlet>
  1347. <servlet>
  1348. <servlet-name>izmena</servlet-name>
  1349. <servlet-class>servleti.Izmena</servlet-class>
  1350. </servlet>
  1351. <servlet>
  1352. <servlet-name>prikaz</servlet-name>
  1353. <servlet-class>servleti.Prikaz</servlet-class>
  1354. </servlet>
  1355. <servlet>
  1356. <servlet-name>logout</servlet-name>
  1357. <servlet-class>servleti.Logout</servlet-class>
  1358. </servlet>
  1359. <servlet-mapping>
  1360. <servlet-name>index</servlet-name>
  1361. <url-pattern>/index</url-pattern>
  1362. </servlet-mapping>
  1363. <servlet-mapping>
  1364. <servlet-name>login</servlet-name>
  1365. <url-pattern>/login</url-pattern>
  1366. </servlet-mapping>
  1367. <servlet-mapping>
  1368. <servlet-name>greska</servlet-name>
  1369. <url-pattern>/error</url-pattern>
  1370. </servlet-mapping>
  1371. <servlet-mapping>
  1372. <servlet-name>promena</servlet-name>
  1373. <url-pattern>/promena</url-pattern>
  1374. </servlet-mapping>
  1375. <servlet-mapping>
  1376. <servlet-name>izmena</servlet-name>
  1377. <url-pattern>/izmena</url-pattern>
  1378. </servlet-mapping>
  1379. <servlet-mapping>
  1380. <servlet-name>prikaz</servlet-name>
  1381. <url-pattern>/prikaz</url-pattern>
  1382. </servlet-mapping>
  1383. <servlet-mapping>
  1384. <servlet-name>logout</servlet-name>
  1385. <url-pattern>/logout</url-pattern>
  1386. </servlet-mapping>
  1387. <session-config>
  1388. <session-timeout>
  1389. 30
  1390. </session-timeout>
  1391. </session-config>
  1392. <welcome-file-list>
  1393. <welcome-file>index</welcome-file>
  1394. </welcome-file-list>
  1395. </web-app>
  1396. Primer 10 - Poređenje brojeva
  1397. Korišćenjem Java Server Pages tehnologije napisati JSP stranu koja preko HTML forme prihvata dva broja, prosleđuje ih drugoj JSP strani i upoređuje ih. Ukoliko je prvi broj manji od drugog, treba ispisati „Razlika je manja od nule“ i obojiti pozadinu u plavu boju, ukoliko je prvi broj veći od drugog, treba ispisati „Razlika je veća od nule“ i obojiti pozadinu u zelenu boju, a ukoliko su brojevi isti, treba ispisati „Razlika je nula“ i obojiti pozadinu u žutu boju. Sve provere treba realizovati na JSP stranama.
  1398. Rešenje:
  1399. //web page: index.jsp
  1400. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  1401. <html>
  1402. <head>
  1403. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  1404. <title>Poredjenje</title>
  1405. </head>
  1406. <body>
  1407. <form action="rezultat.jsp" method="post">
  1408. Unesite prvi broj: <input type="text" name="prvi"/><br/>
  1409. Unesite drugi broj: <input type="text" name="drugi"/><br/>
  1410. <input type="submit" value="Uporedi"/>
  1411. </form>
  1412. </body>
  1413. </html>
  1414. //web page: rezultat.jsp
  1415. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  1416. <!-- direktiva -->
  1417. <%@ page errorPage="error.jsp" %>
  1418. <!-- deklaracija -->
  1419. <%! int a, b, razlika;
  1420. String prvi, drugi;
  1421. %>
  1422. <!-- skriplet -->
  1423. <%
  1424. prvi = request.getParameter("prvi");
  1425. drugi = request.getParameter("drugi");
  1426. a = Integer.parseInt(prvi);
  1427. b = Integer.parseInt(drugi);
  1428. razlika = a - b;
  1429. %>
  1430. <html>
  1431. <head>
  1432. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  1433. <title>
  1434. <%if (razlika < 0) {%>
  1435. Manje
  1436. <%} else if (razlika > 0) {%>
  1437. Veće
  1438. <%} else {%>
  1439. Nula
  1440. <%}%>
  1441. </title>
  1442. </head>
  1443. <body bgcolor="<%if (razlika < 0) {%>
  1444. blue
  1445. <%} else if (razlika > 0) {%>
  1446. green
  1447. <%} else {%>
  1448. red
  1449. <%} %>">
  1450. <h2>
  1451. Razlika je
  1452. <%if (razlika < 0) {%>
  1453. manja od nule.
  1454. <%} else if (razlika > 0) {%>
  1455. veća od nule.
  1456. <%} else {%>
  1457. nula.
  1458. <%}%>
  1459. </h2>
  1460. </body>
  1461. </html>
  1462. //web page: error.jsp
  1463. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  1464. <%@page isErrorPage="true" %>
  1465. <html>
  1466. <head>
  1467. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  1468. <title>Error Page</title>
  1469. </head>
  1470. <body>
  1471. <h2>Greska!</h2>
  1472. <h3><%=exception%></h3>
  1473. </body>
  1474. </html>
  1475. Primer 11 - Poređenje brojeva (MVC pristup)
  1476. Korišćenjem Java Server Pages tehnologije napisati JSP stranu koja preko HTML forme prihvata dva broja, prosleđuje ih Java Servletu, koji ih upoređuje. Ukoliko je prvi broj veći od drugog, servlet nas preusmerava na stranu vece.jsp, ukoliko je prvi broj manji od drugog, servlet nas preusmerava na stranu manje.jsp, a ukoliko je razlika jednaka 0, servlet nas preusmerava na stranu nula.jsp. Sve provere treba realizovati na servletu.
  1477. Rešenje:
  1478. //web page: index.jsp
  1479. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  1480. <html>
  1481. <head>
  1482. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  1483. <title>MVC prvi primer</title>
  1484. </head>
  1485. <body>
  1486. <H2>MVC pristup resavanja problema - prednosti i mane</H2>
  1487. <form action="Uporedi" method="post">
  1488. Unesite prvi broj: <input type="text" name="prvi"/><br/>
  1489. Unesite drugi broj: <input type="text" name="drugi"/><br/>
  1490. <input type="submit" value="Uporedi"/>
  1491. </form>
  1492. </body>
  1493. </html>
  1494. //web page: vece.jsp
  1495. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  1496. <html>
  1497. <head>
  1498. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  1499. <title>Vece</title>
  1500. </head>
  1501. <body bgcolor="#00ff00">
  1502. <h1>Razlika je veca od nule.</h1>
  1503. </body>
  1504. </html>
  1505. //web page: manje.jsp
  1506. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  1507. <html>
  1508. <head>
  1509. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  1510. <title>Manje</title>
  1511. </head>
  1512. <body bgcolor="#0000ff">
  1513. <h1>Razlika je manja od nule.</h1>
  1514. </body>
  1515. </html>
  1516. //web page: nula.jsp
  1517. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  1518. <html>
  1519. <head>
  1520. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  1521. <title>Nula</title>
  1522. </head>
  1523. <body bgcolor="#ff0000">
  1524. <h1>Razlika je nula.</h1>
  1525. </body>
  1526. </html>
  1527. //web page: error.jsp
  1528. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  1529. <html>
  1530. <head>
  1531. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  1532. <title>Error Page</title>
  1533. </head>
  1534. <body bgcolor="#ff0000">
  1535. <h2>Greska!</h2>
  1536. </body>
  1537. </html>
  1538. //source file: servlets/UporediServlet.java
  1539. package servlets;
  1540. import java.io.*;
  1541. import javax.servlet.*;
  1542. import javax.servlet.http.*;
  1543. public class UporediServlet extends HttpServlet {
  1544. @Override
  1545. protected void doPost(HttpServletRequest request,
  1546. HttpServletResponse response)
  1547. throws ServletException, IOException {
  1548. String prvi = request.getParameter("prvi");
  1549. String drugi = request.getParameter("drugi");
  1550. String address;
  1551. int a, b;
  1552. try {
  1553. a = Integer.parseInt(prvi);
  1554. b = Integer.parseInt(drugi);
  1555. int razlika = a - b;
  1556. if (razlika > 0) {
  1557. address = "/vece.jsp";
  1558. } else if (razlika < 0) {
  1559. address = "/manje.jsp";
  1560. } else {
  1561. address = "/nula.jsp";
  1562. }
  1563. } catch (NumberFormatException nfe) {
  1564. address = "/error.jsp";
  1565. }
  1566. RequestDispatcher dispatcher = request.getRequestDispatcher(address);
  1567. dispatcher.forward(request, response);
  1568. }
  1569. }
  1570. //XML file: WEB-INF/web.xml
  1571. <?xml version="1.0" encoding="UTF-8"?>
  1572. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  1573. <servlet>
  1574. <servlet-name>Uporedi</servlet-name>
  1575. <servlet-class>servlets.UporediServlet</servlet-class>
  1576. </servlet>
  1577. <servlet-mapping>
  1578. <servlet-name>Uporedi</servlet-name>
  1579. <url-pattern>/Uporedi</url-pattern>
  1580. </servlet-mapping>
  1581. <session-config>
  1582. <session-timeout>
  1583. 30
  1584. </session-timeout>
  1585. </session-config>
  1586. <welcome-file-list>
  1587. <welcome-file>index.jsp</welcome-file>
  1588. </welcome-file-list>
  1589. </web-app>
  1590. Primer 12 - Podaci o osobi (JSP sa binovima)
  1591. Korišćenjem Java Server Pages tehnologije napisati JSP stranu koja preko HTML forme prihvata podatke o osobi: ime, prezime, adresu e-pošte, telefon, adresu i zanimanje i prosleđuje ih drugoj JSP strani, koja prikazuje te podatke. Za prikaz podataka potrebno je koristiti Java binove (Java beans).
  1592. Rešenje:
  1593. //web page: index.jsp
  1594. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  1595. <!DOCTYPE HTML>
  1596. <html>
  1597. <head>
  1598. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  1599. <title>Rad sa binovima</title>
  1600. </head>
  1601. <body>
  1602. <h3>Unesite podatke o osobi:</h3>
  1603. <form action="prikaz.jsp" method="post">
  1604. <table>
  1605. <tr>
  1606. <td>Ime:</td>
  1607. <td><input type="text" name="ime"/></td>
  1608. </tr>
  1609. <tr>
  1610. <td>Prezime:</td>
  1611. <td><input type="text" name="prezime"/></td>
  1612. </tr>
  1613. <tr>
  1614. <td>E-pošta:</td>
  1615. <td><input type="text" name="email"/></td>
  1616. </tr>
  1617. <tr>
  1618. <td>Telefon:</td>
  1619. <td><input type="text" name="telefon"/></td>
  1620. </tr>
  1621. <tr>
  1622. <td>Adresa:</td>
  1623. <td><input type="text" name="adresa"/></td>
  1624. </tr>
  1625. <tr>
  1626. <td>Zanimanje:</td>
  1627. <td><input type="text" name="zanimanje"/></td>
  1628. </tr>
  1629. </table>
  1630. <input type="submit" value="Pošalji">
  1631. </form>
  1632. </body>
  1633. </html>
  1634. //source file: beans/Korisnik.java
  1635. package beans;
  1636. public class Korisnik {
  1637. private String ime = "";
  1638. private String prezime = "";
  1639. private String email = "";
  1640. private String telefon = "";
  1641. private String adresa = "";
  1642. private String zanimanje = "";
  1643. public String getIme() {
  1644. return ime;
  1645. }
  1646. public void setIme(String ime) {
  1647. this.ime = ime;
  1648. }
  1649. public String getPrezime() {
  1650. return prezime;
  1651. }
  1652. public void setPrezime(String prezime) {
  1653. this.prezime = prezime;
  1654. }
  1655. public String getEmail() {
  1656. return email;
  1657. }
  1658. public void setEmail(String email) {
  1659. this.email = email;
  1660. }
  1661. public String getTelefon() {
  1662. return telefon;
  1663. }
  1664. public void setTelefon(String telefon) {
  1665. this.telefon = telefon;
  1666. }
  1667. public String getAdresa() {
  1668. return adresa;
  1669. }
  1670. public void setAdresa(String adresa) {
  1671. this.adresa = adresa;
  1672. }
  1673. public String getZanimanje() {
  1674. return zanimanje;
  1675. }
  1676. public void setZanimanje(String zanimanje) {
  1677. this.zanimanje = zanimanje;
  1678. }
  1679. }
  1680. //web page: prikaz.jsp
  1681. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  1682. <html>
  1683. <head>
  1684. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  1685. <title>Prikaz</title>
  1686. </head>
  1687. <jsp:useBean id="korisnik" class="beans.Korisnik" scope="session"/>
  1688. <jsp:setProperty name="korisnik" property="*"/>
  1689. <body>
  1690. <table>
  1691. <tr>
  1692. <td>Ime:</td>
  1693. <td>${korisnik.ime}</td>
  1694. </tr>
  1695. <tr>
  1696. <td>Prezime:</td>
  1697. <td>${korisnik.prezime}</td>
  1698. </tr>
  1699. <tr>
  1700. <td>e-mail:</td>
  1701. <td>${korisnik.email}</td>
  1702. </tr>
  1703. <tr>
  1704. <td>Telefon:</td>
  1705. <td>${korisnik.telefon}</td>
  1706. </tr>
  1707. <tr>
  1708. <td>Adresa:</td>
  1709. <td>${korisnik.adresa}</td>
  1710. </tr>
  1711. <tr>
  1712. <td>Zanimanje:</td>
  1713. <td>${korisnik.zanimanje}</td>
  1714. </tr>
  1715. </table>
  1716. </body>
  1717. </html>
  1718. Primer 13 - Kviz
  1719. Korišćenjem tehnologija Java Servlet i Java Server Pages napraviti mini aplikaciju za kviz matematičkog znanja. Korisnik treba da ima mogućnost da na veb strani vidi pitanje, polje za unos odgovora i dugme za potvrdu, kao i trenutni rezultat koji je postigao u kvizu. Prikaz pitanja i unos odgovora treba da se izvrši na JSP strani, a sve provere treba da se izvrše na servletu.
  1720. Rešenje:
  1721. //web page: index.jsp
  1722. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  1723. <!DOCTYPE HTML>
  1724. <html>
  1725. <head>
  1726. <title>JSP Page</title>
  1727. </head>
  1728. <body>
  1729. <H2>Dobrodosli na nas kviz!</H2><br/>
  1730. Kliknite za pocetak <a href="QuizHandler"> kviza </a>
  1731. </body>
  1732. </html>
  1733. //source file: servlets/QuizHandlerServlet.java
  1734. package servlets;
  1735. import beans.*;
  1736. import java.io.*;
  1737. import javax.servlet.*;
  1738. import javax.servlet.http.*;
  1739. public class QuizHandlerServlet extends HttpServlet {
  1740. protected void processRequest(HttpServletRequest request,
  1741. HttpServletResponse response)
  1742. throws ServletException, IOException {
  1743. HttpSession session = request.getSession(true);
  1744. QuizBean quizBean = (QuizBean) session.getAttribute("quizBean");
  1745. String address = "quiz.jsp";
  1746. if ((quizBean == null) || (quizBean.isFinished() == true)) {
  1747. // pocetak kviza
  1748. quizBean = new QuizBean();
  1749. session.setAttribute("quizBean", quizBean);
  1750. } else {
  1751. // negde u toku kviza
  1752. int userAnswer = 0;
  1753. boolean ok = true;
  1754. try {
  1755. userAnswer = Integer.parseInt(request.getParameter("answer"));
  1756. } catch (NumberFormatException nfe) {
  1757. ok = false;
  1758. }
  1759. if (ok && (quizBean.checkAnswer(userAnswer) == true)) {
  1760. quizBean.incrementScore();
  1761. }
  1762. quizBean.setCurrentIndex(quizBean.getCurrentIndex() + 1);
  1763. if (quizBean.isFinished() == true) {
  1764. address = "score.jsp";
  1765. }
  1766. }
  1767. response.sendRedirect(address);
  1768. //svi objekti su sacuvani u sesiji
  1769. //pa je bolja varijanta sa sendRedirect
  1770. }
  1771. @Override
  1772. protected void doGet(HttpServletRequest request,
  1773. HttpServletResponse response)
  1774. throws ServletException, IOException {
  1775. processRequest(request, response);
  1776. }
  1777. @Override
  1778. protected void doPost(HttpServletRequest request,
  1779. HttpServletResponse response)
  1780. throws ServletException, IOException {
  1781. processRequest(request, response);
  1782. }
  1783. }
  1784. //source file: beans/ProblemBean.java
  1785. package beans;
  1786. public class ProblemBean {
  1787. private int[] sequence;
  1788. private int solution;
  1789. /**
  1790. * Kreiranje nove instance ProblemBean
  1791. */
  1792. public ProblemBean() {
  1793. }
  1794. public ProblemBean(int[] sequence, int solution) {
  1795. this.sequence = new int[sequence.length];
  1796. for (int i = 0; i < sequence.length; i++) {
  1797. this.sequence[i] = sequence[i];
  1798. }
  1799. this.solution = solution;
  1800. }
  1801. // PROPERTY: sequence
  1802. public int[] getSequence() {
  1803. return sequence;
  1804. }
  1805. public void setSequence(int[] sequence) {
  1806. this.sequence = sequence;
  1807. }
  1808. // PROPERTY: solution
  1809. public int getSolution() {
  1810. return solution;
  1811. }
  1812. public void setSolution(int solution) {
  1813. this.solution = solution;
  1814. }
  1815. public String toString() {
  1816. String result = "";
  1817. for (int i = 0; i < sequence.length; i++) {
  1818. result += sequence[i] + " ";
  1819. }
  1820. return result;
  1821. }
  1822. }
  1823. //source file: beans/QuizBean.java
  1824. package beans;
  1825. import java.util.ArrayList;
  1826. public class QuizBean {
  1827. private ArrayList<ProblemBean> problems = new ArrayList<ProblemBean>();
  1828. private int currentIndex;
  1829. private int score;
  1830. /** pravljenje nove instance QuizBean */
  1831. public QuizBean() {
  1832. problems.add(new ProblemBean(new int[]{1, 4, 9, 16, 25}, 36));
  1833. // kvadrati
  1834. problems.add(new ProblemBean(new int[]{1, 1, 2, 3, 5}, 8));
  1835. // fibonaci
  1836. problems.add(new ProblemBean(new int[]{3, 1, 4, 1, 5}, 9));
  1837. // pi
  1838. problems.add(new ProblemBean(new int[]{2, 3, 5, 7, 11}, 13));
  1839. // prosti
  1840. problems.add(new ProblemBean(new int[]{1, 2, 4, 8, 16}, 32));
  1841. // stepeni dvojke
  1842. problems.add(new ProblemBean(new int[]{0, 7, 26, 63, 124}, 215));
  1843. // kubovi -1
  1844. currentIndex = 0;
  1845. score = 0;
  1846. }
  1847. // PROPERTY: problems
  1848. public void setProblems(ArrayList problems) {
  1849. this.problems = problems;
  1850. currentIndex = 0;
  1851. score = 0;
  1852. }
  1853. // PROPERTY: score
  1854. public int getScore() {
  1855. return score;
  1856. }
  1857. public void incrementScore() {
  1858. score++;
  1859. }
  1860. // PROPERTY: currentIndex
  1861. public int getCurrentIndex() {
  1862. return currentIndex;
  1863. }
  1864. public void setCurrentIndex(int currentIndex) {
  1865. this.currentIndex = currentIndex;
  1866. }
  1867. // PROPERTY: currentProblem
  1868. public ProblemBean getCurrentProblem() {
  1869. return problems.get(currentIndex);
  1870. }
  1871. public boolean checkAnswer(int answer) {
  1872. return getCurrentProblem().getSolution() == answer;
  1873. }
  1874. public boolean isFinished() {
  1875. return currentIndex == problems.size();
  1876. }
  1877. }
  1878. //web page: quiz.jsp
  1879. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  1880. <!DOCTYPE HTML>
  1881. <html>
  1882. <head>
  1883. <title> * * * Number Quiz * * *</title>
  1884. </head>
  1885. <body>
  1886. <jsp:useBean id="quizBean" type="beans.QuizBean" scope="session"/>
  1887. <form name="quiz" action="QuizHandler" method="post">
  1888. <h3>Uzivajte u nasem quiz-u</h3>
  1889. <p> Vas trenutni rezultat je:
  1890. <jsp:getProperty name="quizBean" property="score"/>
  1891. </p>
  1892. <p> Pogodite sledeci broj u nizu! </p>
  1893. <p><jsp:getProperty name="quizBean" property="currentProblem"/>
  1894. </p>
  1895. <p> Vas odgovor: <input type="text" name="answer"></p>
  1896. <p> <input type="submit" value=" sledeci "></p>
  1897. </form>
  1898. </body>
  1899. </html>
  1900. //web page: score.jsp
  1901. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  1902. <!DOCTYPE HTML>
  1903. <html>
  1904. <head>
  1905. <title> * * * Number Quiz * * *</title>
  1906. </head>
  1907. <body>
  1908. <jsp:useBean id="quizBean" type="beans.QuizBean" scope="session"/>
  1909. <h3> Hvala sto ste igrali nas kviz. </h3>
  1910. <p> Vas rezultat je:
  1911. <jsp:getProperty name="quizBean" property="score"/>
  1912. </p>
  1913. <br/>
  1914. Kliknite <a href="QuizHandler"> ovde </a>
  1915. ako zelite ponovo da ucestvujete u kvizu.
  1916. </body>
  1917. </html>
  1918. //XML file: WEB-INF/web.xml
  1919. <?xml version="1.0" encoding="UTF-8"?>
  1920. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  1921. <servlet>
  1922. <servlet-name>QuizHandlerServlet</servlet-name>
  1923. <servlet-class>servlets.QuizHandlerServlet</servlet-class>
  1924. </servlet>
  1925. <servlet-mapping>
  1926. <servlet-name>QuizHandlerServlet</servlet-name>
  1927. <url-pattern>/QuizHandler</url-pattern>
  1928. </servlet-mapping>
  1929. <session-config>
  1930. <session-timeout>
  1931. 30
  1932. </session-timeout>
  1933. </session-config>
  1934. <welcome-file-list>
  1935. <welcome-file>index.jsp</welcome-file>
  1936. </welcome-file-list>
  1937. </web-app>
  1938. Primer 14 - Brojači
  1939. Korišćenjem Java Server Pages tehnologije napraviti tri JSP strane Brojac1.jsp, Brojac2.jsp i Brojac3.jsp, kojima korisnik naizmenično pristupa, ali tako da se u Java binu (bean) čuva podatak o prvoj pristupanoj strani i o ukupnom broju pristupanja svim stranama.
  1940. Rešenje:
  1941. //web page: Brojac1.jsp
  1942. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  1943. <!DOCTYPE HTML>
  1944. <html>
  1945. <head>
  1946. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  1947. <title>Deljeni brojač 1</title>
  1948. </head>
  1949. <body>
  1950. <!-- Obratiti paznju na startnu stranicu u web.xml-->
  1951. <H1>Deljeni brojač 1</H1><br/>
  1952. <jsp:useBean id="counter"
  1953. class="beans.AccessCountBean"
  1954. scope="application">
  1955. <!--Uslovno se izvrsava, samo onda kada se bean zaista kreira-->
  1956. <jsp:setProperty name="counter"
  1957. property="firstPage"
  1958. value="Brojac1.jsp" />
  1959. </jsp:useBean>
  1960. Postoje veb strane: Brojac1.jsp (ova strana),
  1961. <A HREF="Brojac2.jsp">Brojac2.jsp</A>, i
  1962. <A HREF="Brojac3.jsp">Brojac3.jsp</A>,
  1963. <BR/>
  1964. Veb strani <jsp:getProperty name="counter" property="firstPage" />
  1965. je prvi put pristupano.
  1966. <P>
  1967. Ukupno je svim stranicama pristupano:
  1968. <jsp:getProperty name="counter" property="accessCount" />
  1969. . puta.
  1970. <jsp:setProperty name="counter"
  1971. property="accessCount"
  1972. value="1" />
  1973. </BODY>
  1974. </HTML>
  1975. //web page: Brojac2.jsp
  1976. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  1977. <!DOCTYPE HTML>
  1978. <html>
  1979. <head>
  1980. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  1981. <title>Deljeni brojač 2</title>
  1982. </head>
  1983. <body>
  1984. <!-- Obratiti paznju na startnu stranicu u web.xml-->
  1985. <H1>Deljeni brojač 2</H1><br/>
  1986. <jsp:useBean id="counter"
  1987. class="beans.AccessCountBean"
  1988. scope="application">
  1989. <!--Uslovno se izvrsava, samo onda kada se bean zaista kreira-->
  1990. <jsp:setProperty name="counter"
  1991. property="firstPage"
  1992. value="Brojac2.jsp" />
  1993. </jsp:useBean>
  1994. Postoje veb strane: Brojac2.jsp (ova strana),
  1995. <A HREF="Brojac1.jsp">Brojac1.jsp</A>, i
  1996. <A HREF="Brojac3.jsp">Brojac3.jsp</A>,
  1997. <BR/>
  1998. Veb strani <jsp:getProperty name="counter" property="firstPage" />
  1999. je prvi put pristupano.
  2000. <P>
  2001. Ukupno je svim stranicama pristupano:
  2002. <jsp:getProperty name="counter" property="accessCount" />
  2003. . puta.
  2004. <jsp:setProperty name="counter"
  2005. property="accessCount"
  2006. value="1" />
  2007. </BODY>
  2008. </HTML>
  2009. //web page: Brojac3.jsp
  2010. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  2011. <!DOCTYPE HTML>
  2012. <html>
  2013. <head>
  2014. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  2015. <title>Deljeni brojač 3</title>
  2016. </head>
  2017. <body>
  2018. <!-- Obratiti paznju na startnu stranicu u web.xml-->
  2019. <H1>Deljeni brojač 3</H1><br/>
  2020. <jsp:useBean id="counter"
  2021. class="beans.AccessCountBean"
  2022. scope="application">
  2023. <!--Uslovno se izvrsava, samo onda kada se bean zaista kreira-->
  2024. <jsp:setProperty name="counter"
  2025. property="firstPage"
  2026. value="Brojac3.jsp" />
  2027. </jsp:useBean>
  2028. Postoje veb strane: Brojac3.jsp (ova strana),
  2029. <A HREF="Brojac1.jsp">Brojac1.jsp</A>, i
  2030. <A HREF="Brojac2.jsp">Brojac2.jsp</A>,
  2031. <BR/>
  2032. Veb strani <jsp:getProperty name="counter" property="firstPage" />
  2033. je prvi put pristupano.
  2034. <P>
  2035. Ukupno je svim veb stranama pristupano:
  2036. <jsp:getProperty name="counter" property="accessCount" />
  2037. . puta.
  2038. <jsp:setProperty name="counter"
  2039. property="accessCount"
  2040. value="1" />
  2041. </BODY>
  2042. </HTML>
  2043. //source file: beans/AccessCountBean.java
  2044. package beans;
  2045. public class AccessCountBean {
  2046. //objekat koji se cuva u okviru objekta application
  2047. // i traje do restartovanja web servera
  2048. private String firstPage;
  2049. private int accessCount = 1;
  2050. public String getFirstPage() {
  2051. return (firstPage);
  2052. }
  2053. public void setFirstPage(String firstPage) {
  2054. this.firstPage = firstPage;
  2055. }
  2056. public int getAccessCount() {
  2057. return (accessCount);
  2058. }
  2059. public void setAccessCount(int increment) {
  2060. accessCount = accessCount + increment;
  2061. }
  2062. }
  2063. //XML file: WEB-INF/web.xml
  2064. <?xml version="1.0" encoding="UTF-8"?>
  2065. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  2066. <session-config>
  2067. <session-timeout>
  2068. 30
  2069. </session-timeout>
  2070. </session-config>
  2071. <welcome-file-list>
  2072. <welcome-file>Brojac3.jsp</welcome-file>
  2073. </welcome-file-list>
  2074. </web-app>
  2075. Primer 15 - Korisnici (MVC)
  2076. Korišćenjem Java Servlet i Java Server Pages tehnologija napraviti JSP stranu koja prikazuje formu za logovanje korisnika, u koju korisnik treba da unese svoje korisničko ime i svoju lozinku (kredencijali), i ukoliko su korisnički kredencijali ispravni (postoje u bazi podataka u tabeli KorisnikInfo) korisniku prikazati stranicu sa svojim ličnim podacima (JSP strana prikaz.jsp), a ukoliko podaci nisu dobri korisniku prikazati stranicu sa greškom (JSP strana error.jsp). Takođe, potrebno je realizovati još dve JSP strane: za promenu ličnih podataka (JSP strana promena.jsp) i strana sa porukom „Doviđenja“ kada korisnik pritisne dugme za odjavljivanje iz sistema (JSP strana kraj.jsp). Rad sa podacima treba realizovati korišćenjem servleta.
  2077. Izgled tabela u bazi dbkorisnik:
  2078. KorisnikInfo
  2079. #
  2080. Naziv kolone
  2081. Tip
  2082. 1
  2083. username (PK)
  2084. varchar(32)
  2085. 2
  2086. password
  2087. varchar(32)
  2088. 3
  2089. first_name
  2090. varchar(32)
  2091. 4
  2092. last_name
  2093. varchar(32)
  2094. 5
  2095. email
  2096. varchar(32)
  2097. 6
  2098. phone
  2099. varchar(32)
  2100. Rešenje:
  2101. //source file: util/DB.java
  2102. package util;
  2103. import java.sql.Connection;
  2104. import java.sql.DriverManager;
  2105. public class DB {
  2106. private static DB instance;
  2107. private static final int MAX_CON = 5;
  2108. private static final Connection[] bafer = new Connection[MAX_CON];
  2109. private int first = 0, last = 0, free = MAX_CON;
  2110. private DB() { //za MySQL
  2111. try {
  2112. Class.forName("com.mysql.jdbc.Driver");
  2113. for (int i = 0; i < MAX_CON; i++) {
  2114. bafer[i] =
  2115. DriverManager.getConnection
  2116. ("jdbc:mysql://localhost:3306/dbkorisnik", "root", "");
  2117. }
  2118. } catch (Exception e) {
  2119. e.printStackTrace();
  2120. }
  2121. }
  2122. /* za Access
  2123. private DB(){
  2124. try{
  2125. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  2126. for(int i=0; i<MAX_CON; i++)
  2127. bafer[i] = DriverManager.getConnection("jdbc:odbc:dbkorisnik");
  2128. }catch(Exception e){}
  2129. }
  2130. */
  2131. public static DB getInstance() {
  2132. if (instance == null) {
  2133. instance = new DB();
  2134. }
  2135. return instance;
  2136. }
  2137. public synchronized Connection getConnection() {
  2138. if (free == 0) {
  2139. return null;
  2140. }
  2141. free--;
  2142. Connection con = bafer[first];
  2143. first = (first + 1) % MAX_CON;
  2144. return con;
  2145. }
  2146. public synchronized void putConnection(Connection con) {
  2147. if (con == null) {
  2148. return;
  2149. }
  2150. free++;
  2151. bafer[last] = con;
  2152. last = (last + 1) % MAX_CON;
  2153. }
  2154. }
  2155. //source file: beans/Korisnik.java
  2156. //Java bean
  2157. package beans;
  2158. public class Korisnik {
  2159. private String username = "";
  2160. private String password = "";
  2161. private String email = "";
  2162. private String telefon = "";
  2163. private String ime = "";
  2164. private String prezime = "";
  2165. public String getUsername() {
  2166. return username;
  2167. }
  2168. public void setUsername(String username) {
  2169. this.username = username;
  2170. }
  2171. public String getPassword() {
  2172. return password;
  2173. }
  2174. public void setPassword(String password) {
  2175. this.password = password;
  2176. }
  2177. public String getEmail() {
  2178. return email;
  2179. }
  2180. public void setEmail(String email) {
  2181. this.email = email;
  2182. }
  2183. public String getTelefon() {
  2184. return telefon;
  2185. }
  2186. public void setTelefon(String telefon) {
  2187. this.telefon = telefon;
  2188. }
  2189. public String getIme() {
  2190. return ime;
  2191. }
  2192. public void setIme(String ime) {
  2193. this.ime = ime;
  2194. }
  2195. public String getPrezime() {
  2196. return prezime;
  2197. }
  2198. public void setPrezime(String prezime) {
  2199. this.prezime = prezime;
  2200. }
  2201. }
  2202. //source file: servleti/Login.java
  2203. //servlet za logovanje korisnika u sistem
  2204. package servleti;
  2205. import beans.*;
  2206. import java.io.*;
  2207. import java.sql.*;
  2208. import javax.servlet.*;
  2209. import javax.servlet.http.*;
  2210. import util.DB;
  2211. public class Login extends HttpServlet {
  2212. protected void doPost(HttpServletRequest request,
  2213. HttpServletResponse response)
  2214. throws ServletException, IOException {
  2215. HttpSession sesija = request.getSession();
  2216. String poruka = "";
  2217. String username = (String) request.getParameter("username");
  2218. String password = (String) request.getParameter("password");
  2219. Korisnik korisnik = new Korisnik();
  2220. korisnik.setUsername(username);
  2221. korisnik.setPassword(password);
  2222. sesija.setAttribute("korisnik", korisnik);
  2223. if (username.isEmpty() || password.isEmpty()) {
  2224. poruka = "Niste popunili sva polja!";
  2225. request.setAttribute("poruka", poruka);
  2226. RequestDispatcher rd = request.getRequestDispatcher("/index.jsp");
  2227. rd.forward(request, response);
  2228. }
  2229. Connection con = null;
  2230. Statement stmt = null;
  2231. ResultSet rs = null;
  2232. String address = "prikaz.jsp";
  2233. try {
  2234. con = DB.getInstance().getConnection();
  2235. stmt = con.createStatement();
  2236. String upit = "select * from KorisnikInfo where username='" +
  2237. username + "' and password='" + password + "';";
  2238. rs = stmt.executeQuery(upit);
  2239. if (rs.next()) {
  2240. String email = rs.getString("email");
  2241. String ime = rs.getString("first_name");
  2242. String prezime = rs.getString("last_name");
  2243. String telefon = rs.getString("phone");
  2244. korisnik.setEmail(email);
  2245. korisnik.setIme(ime);
  2246. korisnik.setPrezime(prezime);
  2247. korisnik.setTelefon(telefon);
  2248. stmt.close();
  2249. request.setAttribute("poruka", "Vasi podaci");
  2250. } else {
  2251. poruka = "Neispravno korisnicko ime i lozinka!
  2252. Pokusajte ponovo.";
  2253. request.setAttribute("poruka", poruka);
  2254. korisnik.setPassword("");
  2255. address = "index.jsp";
  2256. stmt.close();
  2257. }
  2258. } catch (SQLException ex) {
  2259. sesija.invalidate();
  2260. String errormsg = ex.getMessage();
  2261. request.setAttribute("errormsg", errormsg);
  2262. address = "error.jsp";
  2263. } finally {
  2264. DB.getInstance().putConnection(con);
  2265. }
  2266. RequestDispatcher rd = request.getRequestDispatcher(address);
  2267. rd.forward(request, response);
  2268. }
  2269. }
  2270. //source file: servleti/Logout.java
  2271. //servlet za izlogovanje korisnika iz sistema
  2272. package servleti;
  2273. import java.io.*;
  2274. import javax.servlet.*;
  2275. import javax.servlet.http.*;
  2276. public class Logout extends HttpServlet {
  2277. protected void processRequest(HttpServletRequest request,
  2278. HttpServletResponse response)
  2279. throws ServletException, IOException {
  2280. request.getSession().invalidate();
  2281. request.getRequestDispatcher("kraj.jsp").forward(request, response);
  2282. }
  2283. @Override
  2284. protected void doGet(HttpServletRequest request,
  2285. HttpServletResponse response)
  2286. throws ServletException, IOException {
  2287. processRequest(request, response);
  2288. }
  2289. @Override
  2290. protected void doPost(HttpServletRequest request,
  2291. HttpServletResponse response)
  2292. throws ServletException, IOException {
  2293. processRequest(request, response);
  2294. }
  2295. }
  2296. //source file: servleti/Izmena.java
  2297. //servlet za promenu podataka o korisniku
  2298. package servleti;
  2299. import beans.Korisnik;
  2300. import java.io.*;
  2301. import java.sql.*;
  2302. import javax.servlet.*;
  2303. import javax.servlet.http.*;
  2304. import util.DB;
  2305. public class Izmena extends HttpServlet {
  2306. @Override
  2307. protected void doPost(HttpServletRequest request,
  2308. HttpServletResponse response)
  2309. throws ServletException, IOException {
  2310. HttpSession sesija = request.getSession();
  2311. Korisnik korisnik = (Korisnik) sesija.getAttribute("korisnik");
  2312. String ime = (String) request.getParameter("ime");
  2313. String prezime = (String) request.getParameter("prezime");
  2314. String telefon = (String) request.getParameter("telefon");
  2315. String email = (String) request.getParameter("email");
  2316. korisnik.setIme(ime);
  2317. korisnik.setPrezime(prezime);
  2318. korisnik.setTelefon(telefon);
  2319. korisnik.setEmail(email);
  2320. String upit = "update KorisnikInfo "
  2321. + "set first_name='" + ime + "',last_name='" + prezime
  2322. + "', phone='" + telefon + "', email='" + email + "'"
  2323. + "where username='" + korisnik.getUsername() + "';";
  2324. Connection con = null;
  2325. Statement stmt = null;
  2326. String address = "prikaz.jsp";
  2327. try {
  2328. con = DB.getInstance().getConnection();
  2329. stmt = con.createStatement();
  2330. stmt.executeUpdate(upit);
  2331. stmt.close();
  2332. con.close();
  2333. } catch (SQLException ex) {
  2334. sesija.invalidate();
  2335. String errormsg = ex.getMessage();
  2336. request.setAttribute("errormsg", errormsg);
  2337. address = "error";
  2338. } finally {
  2339. DB.getInstance().putConnection(con);
  2340. }
  2341. request.setAttribute("poruka", "Podaci su uspesno izmenjeni");
  2342. RequestDispatcher rd = request.getRequestDispatcher(address);
  2343. rd.forward(request, response);
  2344. }
  2345. }
  2346. //web page: index.jsp
  2347. //prva strana za logovanje korisnika
  2348. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  2349. <!DOCTYPE HTML>
  2350. <html>
  2351. <head>
  2352. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  2353. <title>Korisnička aplikacija</title>
  2354. </head>
  2355. <body>
  2356. <h3>${(poruka!=null) ? poruka : "Dobrodošli!"} </h3><br/><br/>
  2357. <form action="login" method="POST">
  2358. <table>
  2359. <tr>
  2360. <td>Korisničko ime:</td>
  2361. <td><input type="text" name="username"
  2362. value="${korisnik.username}" size="20"/></td>
  2363. </tr>
  2364. <tr>
  2365. <td>Lozinka:</td>
  2366. <td><input type="password" name="password"
  2367. value="${korisnik.password}" size="20"/></td>
  2368. </tr>
  2369. <tr>
  2370. <td><input type="submit" value="Ulogujte se"/></td>
  2371. <td><input type="reset" value="Poništite"/></td>
  2372. </tr>
  2373. </table>
  2374. </form>
  2375. </body>
  2376. </html>
  2377. //web page: kraj.jsp
  2378. //poslednja strana kada se korisnik izloguje
  2379. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  2380. <!DOCTYPE HTML>
  2381. <html>
  2382. <head>
  2383. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  2384. <title>Doviđenja</title>
  2385. </head>
  2386. <body>
  2387. <h1>Doviđenja</h1>
  2388. <a href="index.jsp">Na početak</a>
  2389. </body>
  2390. </html>
  2391. //web page: prikaz.jsp
  2392. //prva strana nakon logovanja, koja prikazuje podatke o korisniku
  2393. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  2394. <!DOCTYPE HTML>
  2395. <html>
  2396. <head>
  2397. <title>Korisnička aplikacija</title>
  2398. </head>
  2399. <body>
  2400. <h3>${poruka}</h3><br/><br/>
  2401. <table width="40%" border="3">
  2402. <tr><td width="50%"> Korisničko ime:</td>
  2403. <td>${korisnik.username} </td></tr>
  2404. <tr><td>Ime:</td>
  2405. <td>${korisnik.ime}</td></tr>
  2406. <tr><td>Prezime:</td>
  2407. <td>${korisnik.prezime}</td></tr>
  2408. <tr><td>Email:</td>
  2409. <td>${korisnik.email}</td></tr>
  2410. <tr><td>Telefon:</td>
  2411. <td>${korisnik.telefon}</td></tr>
  2412. </table><br/>
  2413. <a href="promena.jsp">Promenite podatke</a>
  2414. <a href="logout">Izlogujte se</a>
  2415. </body>
  2416. </html>
  2417. //web page: promena.jsp
  2418. //strana na kojoj korisnik moze promeniti svoje podatke
  2419. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  2420. <!DOCTYPE HTML>
  2421. <html>
  2422. <head>
  2423. <title>Korisnička aplikacija</title>
  2424. </head>
  2425. <body>
  2426. <h3>Vaši podaci koje možete menjati</h3><br/><br/>
  2427. <form action="izmena" method="post" >
  2428. <table width="40%" border="3">
  2429. <tr><td width="50%">Ime:</td>
  2430. <td><input type="text" name="ime" value="${korisnik.ime}"
  2431. size="30"/></td></tr>
  2432. <tr><td>Prezime:</td>
  2433. <td><input type="text" name="prezime"
  2434. value="${korisnik.prezime}" size="30"/></td></tr>
  2435. <tr><td>Email:</td>
  2436. <td><input type="text" name="email" value="${korisnik.email}"
  2437. size="30"/></td></tr>
  2438. <tr><td>Telefon:</td>
  2439. <td><input type="text" name="telefon"
  2440. value="${korisnik.telefon}" size="30" /></td></tr>
  2441. </table><br/>
  2442. <input type="submit" value="Prihvatite izmenu"/>
  2443. </form>
  2444. </body>
  2445. </html>
  2446. //web page: error.jsp
  2447. //strana na kojoj se prikazuje poruka o gresci
  2448. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  2449. <!DOCTYPE HTML>
  2450. <html>
  2451. <head>
  2452. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  2453. <title>Greška</title>
  2454. </head>
  2455. <body>
  2456. <h1>Greška u radu sa bazom podataka</h1>
  2457. <h3>${errormsg}</h3>
  2458. </body>
  2459. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement