Чекор по чекор
Почетни чекори со Java
Објектно оријентирани концепти во Јава - Прв дел
Објектно оријентирани концепти во Јава - Втор дел
Објектно оријентирани концепти во Јава - Трет дел
Јава сервлети - Прв дел
Единствен Јава објект (singleton)
Најчести 10 грешки што ги прават Java програмерите
повеќе...
Што е тоа ...
... IDE
... Tomcat
... објект?
... класа?
... наследување?
... интерфејс?
... наследување? (прашања и одговори)
повеќе...
За загревање
Нов проект во Eclipse?
Примитивни податочни типови
Променливи
Оператори
Доделувачки, аритметички и Unary оператори
Оператори за еднаквост, релации и услови
Изрази, искази и блокови
повеќе...
Како да ...
... конвертирам java.sql.Timestamp во java.util.Date
... зададам формат на датум
... ковертирам „long“ во HEX и обратно
... прочитам датотека и променам стринг
... креирам ZIP датотека
... поврзам Apache и Tomcat користејќи mod_jk
... пратам недефиниран број на атрибути до некоја метода
повеќе...
Java преку примери
new Socket(String addr,int port)
new URL(String address)
new URL(String protocol, String host, int port, String file)
CommPort: getInputStream()
CommPortIdentifier: getPortIdentifiers()
Statement: executeQuery(String sql)
Statement: getMaxRows()
повеќе...
Грешка
Нов напис
Рубрика:
Наслов:
  
  

страна број:123
Јава сервлети - Втор дел
Обработка на форми

Во првиот дел видовме дека секогаш кога некој сервлет требда да обработи некое барање му се предава објект од типот HttpServletRequest кој го содржи комплетниот опис на барањето. Доколку барањето за страната потекнува од испраќање на форма, тогаш барањето (односно објектот од типот  HttpServletRequest) ги содржи вредностите кои се испратени во формата, а се содржат во полињата на формата. Во продолжение ќе видиме како тие вредности можат да бидат добиени од барањето, а ќе бидат искористени со цел генерирање на динамичен одговор за клиентот.

Добивањето на параметрите од формата во сервлет е лесно, едноставно се користи методата „getParameter“ кој е член на објектот од тип HttpServletRequest. На пример, за да ја добиеме вредноста на параметератот со име „naslov“ и истата да ја сместиме во променлива од тип String ќе употребиме:

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


Едноставно, нели? Еве еден комплетен пример за конкретна примена на праќање, примање и работа со праметрите:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Pozdrav extends HttpServlet {

 public void doGet(HttpServletRequest req, HttpServletResponse res)
               throws ServletException, IOException {
   res.setContentType("text/html");
   PrintWriter out = res.getWriter();

   // Zemi ja vredosta na parametarot "ime"
   String ime = req.getParameter("ime");

   // Dokolku postoi parametarot "ime" generiral poraka so pozdrav
   String pozdrav;
   if (ime == null)
     pozdrav = "Zdravo!";
   else
     pozdrav = "Zdravo, " + ime + "!";

   out.println("<html>");
   out.println("<head><title> Dobrodojde na mojot sajt! </title></head>");
   out.println("<body>");
   out.println("<p>" + pozdrav + "</p>");
   out.println("</body></html>");
 }

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

}


Кодот горе е конкретен, а верувам во поголема мера и јасен, но ајде да го разделиме на делови кои ќе ги објасниме:

// Zemi ja vredosta na parametarot "ime"
String ime = req.getParameter("ime");

Значи прво ја земаме вредност на параметарот „ime“. Доколку во барањето не постои параметар именуван како „ime“, методата „getParameter“ ќе ни рати null, еквивалентот за НИШТО во Јава. Поради тоа пред да креираме порака со поздрав со вклучено име мораме да се осигураме дека параметарот „ime“ има вредност. Доколку има вредност користиме по конкретен поздрав, за разлика од обичното „Здраво!“

// Dokolku postoi parametarot "ime" generiral poraka so pozdrav
String pozdrav;
if (ime == null)
  pozdrav = "Zdravo!";
else
  pozdrav = "Zdravo, " + ime + "!";


На крај го печатиме поздравот како дел од страната:

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

Компајлирај го сервлетот, испорачај го на Tomcat-от и после повик во интернет прелистувачот би требало да добиеш нешто налик на ова:


Очекувано, бидејќи не испративме параметар „ime“ во барањето методата getParameter("ime") како резултат враќа null, поради што се генерира порака без име. За да креираме порака со име (персонализирана) ќе креираме HTML датотека која ќе содржи и форма и би изгледала нешто како:

<form action="/servlet/Pozdrav" method="POST">
 Your name: <input type="text" name="ime" /><br />
 <input type="submit" value="Pozdravi me!" />
</form>

Секако параметерот може да го пратиме и преку GET методата во самото URL на барањето: http://localhost:8080/servlet/Pozdrav?ime=Ajnstajn.

Сега, наместо да користиме посебна датотека со „<form>“ тагот во неа, може да имаме сервлет кој ќе ја креира формата за корисникот. Следниов сервлет именуван како „Pozdrav2“ е проширена верзија на претходниот „Pozdrav“ сервлет. Но овојпат параметарот „ime“ не е подесен туку се бара од корисникот да го внесе неговото име:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Pozdrav2 extends HttpServlet {

 public void doGet(HttpServletRequest req, HttpServletResponse res)
               throws ServletException, IOException {
   res.setContentType("text/html");
   PrintWriter out = res.getWriter();

   // Zemi ja vredosta na parametarot "ime"
   String ime = req.getParameter("ime");

   // Dokolku postoi parametarot "ime" generiral poraka so pozdrav
   String pozdrav;
   if (ime == null)
         // Soberi go URL-to na ovoj servlet
     StringBuffer akcija = HttpUtils.getRequestURL(req);

     pozdrav =  "<form akcija=\"" + akcija + "\" method=\"POST\">\n";
     pozdrav += "  Tvoeto ime: ";
     pozdrav += "  <input type=\"text\" name=\"ime\" /><br />\n";
     pozdrav += "  <input type=\"submit\" value=\"Pozdravi me!\" />\n";
     pozdrav += "</form>\n";
   } else pozdrav = "Zdravo, " + ime + "!";

   out.println("<html>");
   out.println("<head><title> Dobrodojde na mojot sajt! </title></head>");
   out.println("<body>");
   out.println("<p>" + pozdrav + "</p>");
   out.println("</body></html>");
 }

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

}

Битна промена тука е тоа дека доколку прелистувачот не испрати барање кое ќе го содржи параметарот „ime“ тогаш променливата „ime“ ќе биде со null вредност како претходно. Но сега, наместо да испечати општа порака „Zdravo!“ сервлетот ќе исцрта форма. Бидејќи сакаме истата форма да биде пратена назад кон сервлетот ни треба и URL-то на сервлетот кој после го задаваме како акција на формата (атрибутот „action“ на таг-от „form“).

Нормално се очекува URL-то да биде достапно преку метода од објектот HttpServletRequest, но овој објект содржи само методи кои враќаат делчиња од URL-то, како протоколот или патеката на барањето. Сепак, Servlet API-јата вклучуваат класа HttpUtils, која содржи статични методи со кои може да се изведат различни операции кои се поврзани со сервлети. Методата HttpUtils.getRequestURL прима објект од типот HttpServletRequest како параметар, а го враќа URL-от на барањето:

   if (ime == null)
         // Soberi go URL-to na ovoj servlet
     StringBuffer akcija = HttpUtils.getRequestURL(req);

Интересно овде е што методата го враќа URL-то во StringBuffer наместо во веќе добро познатиот String. Објектите од типот StringBuffer се во основа String-ови кои можат да бидат менувани без да се креира нов објект. Се додека употребата е слична како и во споменатиот пример променливите од тој тип можеш слободно да ги рачунаш како да се String-ови.

pozdrav =  "<form akcija=\"" + akcija + "\" method=\"POST\">\n";

Забележуваш дека пред некои од наводниците (скоро сите) стои каракетерот „\“, кој всушност е „терминатор“, одсно го маркира наводникот дека е дел од String-гот, а не дека обележува почеток или крај на String. Терминаторот „\“ се користи и за терминирање на други карактери и во различни ситуации, но за тоа потоа.

Компајлирај, испорачај и изврши го сервлетот Pozdrav2, би требало да добиеш форма во која можеш да го впишеш твоето име за после тоа да бидеш поздравен ;).
страна број: 1 2 3 << претходна страна : : следна страна >> 
 
Коментирај
автор: Анонимус
Анонимните коментари ќе бидат објавувани веднаш после нивната проверка.
За да вашиот коментар биде веднаш валиден претходно пријавете се или креирајте свој профил


пребарување
најди
 
Форум
 
JugMK
GetJava Download Button
http://www.eclipse.org
 
 
 
 
Copyrights © 2006 - 2017 by Java.com.mk
Права и правила за користење на java.com.mk
Контакт адреса:
contact AT java.com.mk
Powered by Supernova v.0.70 beta
JavaTM и Java-базираните ознаки се трговски марки или регистрирани трговски марки на Sun Microsystems, Inc. во САД и други држави. Java.com.mk никако не соработува со Sun Microsystems, Inc.
Сите други трговски марки се сопственост на нивните сопственици.