Java Servlets – vytvorenie jednoduchého servletu
V druhom článku o Java Servlets sme prešli životným cyklom klasického HTTP servletu. V tomto článku si vytvoríme jednoduchý servlet, vysvetlíme si jeho štruktúru a ukážeme si, ako tento servlet nasadiť.
Servlet generujúci statický obsah
Generujúci statický obsah – myslí sa tým, že kedykoľvek zavoláte takýto servlet, vráti vám ten istý výsledok. Teda niečo statické, servlet nezískava dáta z databázy, zo súboru alebo iným dynamickým spôsobom.
V príklade najprv uvediem kompletný výpis kódu a potom ho postupne vysvetlím. Zdrojové texty servletov sú klasické *.java súbory. Použitý príklad si môžete stiahnuť aj rovno vyskúšať.
// HelloWorldServlet.java package interval;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorldServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType(„text/html“);
PrintWriter out = res.getWriter();
out.println(„<HTML><HEAD><TITLE>Hello World!</TITLE>“+
„</HEAD><BODY><H2>Hello World!</H2></BODY></HTML>“);
out.println(„<HR><EM>“+getServletInfo()+“</EM>“);
out.close();
}
public String getServletInfo() {
return „HelloWorldServlet 1.0“;
}
}
Ak by ste požiadali server (napríklad Jakarta-Tomcat) o náš servlet HelloWorldServlet, vrátil by nám takýto výsledok:
Prejdime si teraz postupne kód servletu a vysvetlime si jednotlivé časti. V prvom riadku definujem názov balíčka, ktorého súčasťou náš servlet bude. A o niečo nižšie vykonám import troch balíkov, ktoré je treba vždy v každom servlete naimportovať:
package interval;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
Ďalej nasleduje deklarácia samotnej triedy nášho http servletu HelloWorldServlet
, ktorá musí byť odvodená z triedy HttpServlet
. Po deklarácii triedy nasleduje predefinovanie metódy doGet(HttpServletRequest req, HttpServletResponse res)
, ktorá ako vstupné parametre očakáva objekty zastupujúce požiadavku a odpoveď. Metóda doGet()
potenciálne môže vyhodiť výnimku ServletException
a IOException
.
public class HelloWorldServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
// … telo metódy doGet() …
}
}
V tele metódy doGet()
ako prvé čo musím urobiť, je nastaviť MIME (Multipurpose Internet Mail Extension) typ dokumentu, ktorý pošle servlet ako odozvu na požiadavku. V našom prípade je to text/html. Prostredníctvom metódy setContentType()
určujem aký typ dokumentu náš servlet vytvorí. Môže ísť o text, html, xml, tabuľky MS Excel, obrázky GIF, JPEG, PNG a množstvo ďalších. Nastavenie vykonám prostredníctvom objektu triedy HttpServletResponse
. Toto nastavenie musím vykonať skôr ako čokoľvek odošlem na výstup. Ďalšie informácie o MIME nájdete na RFC-Editor.
res.setContentType(„text/html“);
Pokračujeme ďalej. Ak máme nastavený typ dokumentu, môžeme požiadať objekt triedy HttpServletResponse
prostredníctvom metódy getWriter()
o vytvorenie výstupného prúdu triedy PrintWriter
. Prostredníctvom tohto objektu budeme zapisovať textové údaje na výstup. Po ukončení zapisovania výstupný prúd uzavrieme.
PrintWriter out = res.getWriter();
out.println(„<HTML><HEAD><TITLE>Hello World!</TITLE>“+
„</HEAD><BODY><H2>Hello World!</H2></BODY></HTML>“);
out.println(„<HR><EM>“+getServletInfo()+“</EM>“);
out.close();
Do servletu som len pre zaujímavosť doplnil aj metódu getServletInfo()
, ktorá vráti jednoduchý reťazec a ktorú volám v metóde println()
.
Kompilácia a nasadenie servletu
Po tom, čo máme servlet hotový, musíme ho skompilovať (javac HelloWorldServlet.java
) a umiestniť na vhodné miesto na server. V prípade, že použijete server Tomcat, nemal by byť s kompiláciou problém. V adresári tomcat_install_dir/common/lib
by sa mal nachádzať súbor servlet.jar
, ktorý obsahuje balíky javax.servlet.http a javax.servlet.jsp. Ak sa vám podarí servlet bez chýb skompilovať, dostanete súbor HelloWorldServlet.class. Tento súbor je treba nakopírovať do tomcat_install_dir/webapps/vasa_aplikacia/WEB-INF/classes/interval/
. Ak server beží, treba ho následne reštartovať.
V prehliadači potom zadáte toto URL (ak sa pozriete na vyššie uvedený obrázok, je to tam vidieť):
http://localhost:8080/
vasa_aplikacia/servlet/interval.HelloWorldServlet
Ďalej si môžete vytvoriť v adresári WEB-INF
súbor web.xml
. To je konfiguračný súbor vašej aplikácie. Pridajte doň tieto riadky:
<?xml version=“1.0″ encoding=“ISO-8859-1″?>
<!DOCTYPE web-app
PUBLIC „-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN“
„http://java.sun.com/dtd/web-app_2_3.dtd“>
<web-app>
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>interval.HelloWorldServlet</servlet-class>
</servlet>
</web-app>
Ak si tento konfiguračný súbor vytvoríte a vložíte doň uvedené riadky, môžete sa v prehliadači odkazovať na meno servletu uvedené vo web.xml
v elemente <servlet-name>. (Teda zadáte http://localhost:8080/vasa_aplikacia/servlet/Hello
. Za localhost dosaďte názov alebo IP vášho servera.) V ďalšej časti sa pozrieme bližšie na spôsob možnej inicializácie servletu prostredníctvom súboru web.xml.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Co je to DNSSEC, jak funguje a jak si ho nastavit?
14. srpna 2024 -
Nejlevnější VPS: To je nový Cloud Server Mini od ZonerCloud
4. června 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024
RadekBB
Čvn 23, 2009 v 22:24Aby fungoval je nutné mít v adresáři WEB-INF soubor
web.xml v následujícím tvaru:
Hello
interval.HelloWorldServlet
Hello
/servlet/ahoj
Do prohlížeče se pak zadá: http://localhost:8080/mhello/servlet/ahoj