Чекор по чекор
Почетни чекори со 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
Јава сервлети - Прв дел
Едноставен сервлет

Во основа Јава сервлетот е „обична“ Јава класа, а веќе би требало да знаеш како се пишува Јава класа:

public class MojaKlasa {
    // .... osobini i metodi
}

Но не секоја класа може да биде сервлет. Сервлетите кои ќе ги користиме на веб мора да бидат подкласа на класата javax.servlet.http.HttpServlet, која е вградена во секој веб сервер кој поддржува сервлети. Иако различни сервери можат да ја имплементираат оваа класа различно особините и методите поддржани се диктирани од Јава сервлет спецификацијата.

За да креираш сервлет слободно креирал подкласа на класата HttpServlet:

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

public class MojServlet extends HttpServlet {
    // ... osobini i metodi
}

Приметуваш дека сега се импортираат три пакети, java.io, javax.servlet и javax.servlet.htttp во претходниот пример.
javax.servlet.http ја содржи класата HttpServlet која ја наследуваме, додека javax.servlet содржи повеќе класи кои се потребни за работа со сервлети, и java.io ги содржи стандардните класи за извршување на влез и излез (input/output).

Сервлетот мора да обезбеди барем една метода која е искористена од веб серверот за да ги обработи барањата. Името на методата зависи од типот на барањето што треба да се обработи. На пример, HTTP GET барањето е наједоноставната форма, односно тоа барање за html страна, а доаѓа како резултат на тоа да корисникот во својот интернет прелистувач (Firefox на пример) искуцал http адреса или кликнал на некој линк. За да може твојот сервлет да обработи барања од типот HTTP GET мора да се обезбеди методата нарачена „doGet“ како во следниов пример:

public void doGet(HttpServletRequest req, HttpServletResponse rsp) throws ServletException, IOException {
    // ... obrabotka na GET baranjeto
}

Како што можеш да видиш „doGet“ мора да биде „public“ метода и да невраќа ништо (void), а исто така мора да прима два параметри:

    * Еден објект од типот HttpServletRequest (оваа класа е дел од javax.servlet.http пакетот) кој во горниот примере доделен на променливата наречена „req“
    * Еден објект од типот HttpServletResponse (исто така дел од javax.servlet.http пакетот) кој е доделен на „rsp


Кога овој метод ќе биде повикан, објектот од тип HttpServletRequest (req) кој е пратен како параметар на методата ќе овозможи пристап до сите информации поврзани со барањето од интернет прелистувачот кој го активирал овој сервлет. Користејќи ги различните методи на објектот од тип HttpServletRequest можеш да пронајдеш информации како на пример IP адресата од каде е направен повикот или вредностите пратени во URL-то на барањето (пример: index.html?ime=vrednost). Додека објкетот од тип HttpServletResponse (rsp) го претставува одговорот кој ќе биде испратен до интернет прелистувачот. Ова е објкетот кој ни овозможува да пратиме HTML код назад кон интернет прелистувачот на пример. Понатака ќе има повеќе за „req“ и „rsp“.

Доколку веќе се загрижи за делот со „throws ServletException, IOException“, опушти се, ништо страшно ;). Тоа не е опишано нигде во претходните написи но не се секирај, лесно е. Таму всушност се дефинираат типовите на исклучоците (Exception, errors) кои можат да се јават како резултат на повик на овој метод. Во овој случај кога веб серверот ќе ја повика методата „doGet“ за да го процесира GET барањето, истиот мора да биде спремен дека може да се појават тие исклучоци, односно исклучок од типот ServletException или IOException, за да може елегантно да ги обработи истите. Иско ова можеби звучи малку страшно всушност исклучоците се тука да ни ја олеснат работата. На пример IOException може да се јави кога интернет прелистувачот е затворен пред да го добие целосниот одговор од сервлетот. Но бидејќи методата „doGet“ е декларирана да може да фрли (предизвика) IOException ние нема потреба да се грижиме за тоа бидејќи самиот веб сервер ќе ја обработи грешката на најелегантен можен начин.

Во следниов пример ќе го направиме нашиот сервлет да врати едноставна HTML страна на интернет прелистувачот како одговор на неговото барање:

public void doGet(HttpServletRequest req, HttpServletResponse rsp)
             throws ServletException, IOException {
    rsp.setContentType("text/html");
    PrintWriter out = rsp.getWriter();
    out.println("<html>");
    out.println("<head><title> Ednostaven servlet </title></head>");
    out.println("<body>");
    out.println("<p>Ova e ednostaven servlet!</p>");
    out.println("</body></html>");
}

Иако можеби и ова на прв поглед изгледа компликувано воопшто не е. Ајде линија по линија да го поминеме телото на оваа метода:


rsp.setContentType("text/html");

Во оваа линија се повукува методата „setContentType“ на променливата „rsp“.  Оваа метода го сетира типот на содржината на HTTP заглавјето (Content-Type header) со вредност „text/html“ од MIME типот, кој му кажува на интернет прелистувачот да очекува HTML веб страна. Секој сервлет кој генерира веб страна  мора да започе со сетирање на типот на содржината (content type). Така да сервлет кој генерира текстуална датотека ќе го сетира типот на содржината на „text/plain“, а сервлет кој генерира GIF датотека типот на содржина би бил „image/gif“ итн.


PrintWriter out = rsp.getWriter();

Поради тоа што ќе генерираме HTML страна ќе сакаме и да го испратиме HTML кодот кон интернет прелистувачот. HTML кодот е обичен текст, а стандардна Јава I/O (input/output) класа за обичен текст е java.io.PrintWriter. Во оваа линија декларираме променлива наречена „out“ за да го зачуваме PrintWriter-от (паметиш дека го импортиравме java.io пакетот затоа можеме до оваа класа да пристапиме директно без да го впишуваме целосното име „java.io.PrintWriter“). За да го добиеме објектот од тип PrintWriter кој е подесен да го врати текстот како одговор кон итнернет прелистувачот едноставно ја повикуваме методата „getWriter()“ која припаѓа на „rsp“ објектот, а ни го враќа објектот кој е „задолжен“ за одговор кон интернет преистувачот (клиентот) и ја доделува повратната вредност на нашата променлива „out“.


out.println("<html>");

Во остатокот од doGet методата едноставно се користи PrintWriter-от (out) за да кон клинентот се врати HTML кодот. Исто како и кај претходните примери каде што печатевме текст на екранот користејќи System.out.println (System.out исто така е од типот PrintWriter), ги испраќаме текстуалните линии кон интернет прелистувачот. Доколку несакаш да започнеш нова линија во твојот HTML код тогаш наместо println можеш да ја искористиш print методата.
страна број: 1 2 3 4 5 6 << претходна страна : : следна страна >> 
 
Коментирај
автор: Анонимус
Анонимните коментари ќе бидат објавувани веднаш после нивната проверка.
За да вашиот коментар биде веднаш валиден претходно пријавете се или креирајте свој профил


пребарување
најди
 
Форум
 
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.
Сите други трговски марки се сопственост на нивните сопственици.