Чекор по чекор
Почетни чекори со 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
Јава сервлети - Втор дел
прегледано:  3167
 вкупно гласови:  1
 средна оценка:  4.0
 коментари:  0
Како што беше споменато во првиот дел од овој напис, Јава сервлет е мал Јава програм дизајниран да обработува барања на интернет прелистувачи и динамички да генерира веб страници кои ги испраќа како одоговор. Веќе беше покажано како се пишуваат, компајлираат и подесуваат едноставни сервлети. Доколку не си запознаен со тие точки имаш срдечна препорака да го прочиташ првиот дел пред да продолжиш.

Во овој дел ќе се задлабочиме повеќе во тоа како работат сервлетите. За почеток ќе го проучиме  HttpServletRequest објектот и како тој да се искористи за да се соберат информации за барањето од интеренет прелистувачот кој го повикал сервлетот, на пример содржината на HTML форма (html form object) кој бил пратен како дел од барањето. Бидејќи формите можат да бидат испратени со помош на GET и POST барањата, ќе разгледаме начин како да се направи сервлет кој ќе ги обработи двете барања со еден ист код. Исто така ќе протрчаме и низ web.xml датотеката која ја сретнавме во претходниот текст кога се запознавме со тоа како да се конфигурираат сервлети.

Обработка на GET и POST  барањата

Како што објаснив во првиот дел, сервлетот го обработува стандардното барање ид интернет прелистувачот (користејќи го HTTP GET методот) со имплементирање на метод наречен doGet и го користи истиот за да креира и испрати динамички одговор. Најголемиот број на барања на интернет се всушност GET барања, другиот HTTP метод (барање) е POST, и тој е застапен во голем број исто така.

GET барањето може да ги испрати формите така да сите информации внесени во формате ќе ги испрати како дел од URL-то. На пример, доколку формата содржи две полиња, име и email, јас сум внел „Игор Савиќ“ во полето за името и „igor@java.com.mk“ во полето за e-mail, и формата ја испратам користејќи HTTP GET методата, интернет прелистувачот ќе проба да пронајде и вчита страна со следнава адреса:

http://www.mojsajt.com.mk/servlet/Isprakac?ime=Ime+Prezime"ms6x" />


Сервлетот (во примерот „Isprakac“) ќе може да пристапи до вредностите за ime и email користејќи го објектот HttpServletRequest (повеќе за ова понатака).

HTTP POST методата дозволува формите да бидат испратени на дискретен начин. Наместо да ги испраќа вредностите како дел од URL-то, вредностите се праќаат „невидливо“ како дел од телото на HTTP барањето. Механизмот позади сето ова сега засега не е важен, важно е дека ова ни помага да можеме да испратиме лозинки (кои треба целовремено да останат скриени) на начин со кој истите нема да бидат покажани во URL-то на барањето.

Исто така, доколку корисникот креира bookmark од страна која е резултат на испратена форма со помош на HTTP GET методата, самото URL од bookmark-от ќе ги содржи податоците од формата и истите ќе бидат испраќани секогаш кога корисникот ќе ја отвори страницата преку bookmark-от, додека bookmark-от од испраќањата со помош на HTTP POST методот го содржат само URL-то, не и податоците од формата. Секако дека за различна намена се користи еден од овие два метода. на пример пребарувачите го користат GET методот за да може корисникот да ги снима (bookmar-кира) своите пребарувања, но ти ќе треба да научиш како да ги користиш и двете.

За да го одработи GET барањето сервлетот мора да го имплементира doGet методот во својата класа, логично е да се имплментира и doPost за да се обрабтува методот POST. Еве еден пример сервлет кој ги обработува и двата типа на барања (TipNaBaranje.java):

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

public class TipNaBaranje extends HttpServlet {

    public void doGet(HttpServletRequest req, HttpServletResponse res)
               throws ServletException, IOException {
            res.setContentType("text/html");
            PrintWriter out = res.getWriter();
          
            out.println("");
            out.println("");
            out.println("");
            out.println("Ovaa strana e rezultat na GET baranje.");
            out.println("");
 }

    public void doPost(HttpServletRequest req, HttpServletResponse res)
               throws ServletException, IOException {
        res.setContentType("text/html");
        PrintWriter out = res.getWriter();
      
        out.println("");
        out.println("");
        out.println("");
        out.println("Ovaa strana e rezultat na POST baranje.");
        out.println("");
    }
}

Компајлирај го овој сервлет, испорачај го на твојот Tomcat сервер и потоа вчитај ја локацијата: http://localhost:8080/servlet/TipNaBaranje. Би требало да видиш страна налик на оваа:



За да го тестираме начинот на кој сервлетот го изработува POST барањето ќе креираме една HTML датотека која ќе содржи форма. Истата ќе го испрати POST барањето до сервлетот. HTML датотеката треба да ја има следнава содржина:

<html>
<head>
<title> Test za POST baranje </title>
</head>
<body>

 <form method="POST" action="servlet/TipNaBaranje">
   <input type="submit" value="Isprati POST baranje" />
 </form>

</body>
</html>

Како што можеш да видиш оваа страна има едноставна HTML форма која е подесена да испрати барање со POST методот (method="POST") до нашиот сервлет TipNaBaranje (action="servlet/TipNaBaranje"). Оваа датотека сними ја во root директориумот (webapps\ROOT\) на Tomcat-от со име „TestZaPost.html" (пример за целосната локација под MS Windows: „C:\Program Files\Apache Group\jakarta-tomcat\webapps\ROOT“, ова е местото каде што Tomcat очекува да ги најде ресурсите кои не се од Јава како што се HTML страни, слики, итн.) После тоа во интернет прелистувачот до формата би требало да можеш да пристапиш преку „http://localhost:8080/TestZaPost.html“. Откако ќе се отвори страната кликни на копчето со текст „Isprati POST baranje“, тоа ќе го иницира doPost методот во сервлетот и како резултат би требало да добиеш:



Често ќе сакаш твојот сервлет да ги обработи барањата на ист начин. Во повеќето случаи нема да се грижиш дали формата е испратена со помош на GET или POST. Зависно од дизајнот на апликацијата, во едем случај може да имаш посебен код и за двете, но тука се јавува „проблемот“ на одржување на ист код (или сличен) на две места. Затоа можеш сите барања да ги процесираш во doGet на пример, а во doPost само да ја повикаш doGet. Еве модифицирана верзија на сервлетот TipNaBaranje наречен TipNaBaranje2 во кој тоа се обработува на овој начин:

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

public class TipNaBaranje2 extends HttpServlet {

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

            out.println("");
            out.println("");
            out.println("");
            out.println("Ovaa strana e rezultat na" + tipNaBaranje + " baranje.");
            out.println("");
 }

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

            doGet(req, res);
        
    }
}

Прва работа која се приметува е дека doPost методот е смален на една линија код, која едноставно го повикува doGet методот со истите HttpServletRequest (req) и HttpServletResponse (res) параметри:

doGet(req, res);


Сепак, треба да знаме на кој начин е повикан сервлетот (во случајов целта на сервлетот е да го прикаже типот на повикот). За таа цел го користиме методот getMethod() од објектот од типот HttpServletRequest кој ни враќа стринг кој ни индицира дали се работи за GET или за POST, а истиот е сместен во самото барање.

String tipNaBaranje = req.getMethod()

Променливата „tipNaBaranje“ за да го прикажеме типот на барањето онаму каде што ни е потребно. Искомпајлирај ја класата TipNaBaranje2.java, испорачај ја на Tomcat-от (додади го сервлетот во web.xml) и пробај ја сам.
страна број: 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.
Сите други трговски марки се сопственост на нивните сопственици.