1.1 JSP bilan tanishuv
Servlеt yozishning ikki mashhur usuli bor: imperativ va deklarativ. Birinchisini allaqachon bilamiz — bu, asosan, Servlet. Ikkinchi usul esa JSP (Java Server Pages) deb ataladi, endi u bilan tanishamiz.
JSP servlеtining misoli:
<html>
<body>
<% out.print(2*5); %>
</body>
</html>
Bizga tanish bo'lgan klassik Servletdan unchalik ham o'xshamaydigan narsa, to'g'rimi? Ha, xuddi shunday. JSP – bu HTML-sahifa bo'lib, unda Java-kodning qo'shimchalari (yashil rang bilan ajratilgan).
Qarasang, agar sening servlеtingda Java-kodi ko'p va HTML-kodi kam bo'lsa, unda klassik servlеtni qo'llash qulayroq. Agar kattaroq HTML-sahifangiz bo'lsa va u yerda server orqali faqatgina bir necha qator o'zgarishi kerak bo'lsa, nima qilish kerak?
Bu holda eng osoni shu HTML-sahifani yaratish va qandaydir usulda serverda Java-kodni bevosita bajarish.
1.2 JSP kompilyatsiyasi
Keling yana bir misolni ko'rib chiqamiz:
<html>
<body>
<%
double num = Math.random(); if (num > 0.95) {
%>
<h2>Baxtli odamsan, user!</h2><p>(<%= num %>)</p>
<%
}
%>
</body>
</html>
Biz tasodifiy son olamiz va agar u 0.95 dan katta bo'lsa, "Baxtli odamsan, user!" matnini chiqaramiz.
Moviy rangda Java-kod ajratilgan. Oddiy (ajratilmasdan) – HTML-kod, qizil rangda esa xizmati tеglar, ular Java-kodi qayerda va HTML qayerda ekanligini aniqlashga yordam beradi.
Bir oz g'alati narsa sezganmisiz? Yopuvchi qavs "}" boshqa "kod bloki"da joylashgan. Bunday kodni to'g'ri yozish qanday? Bu umuman qanday ishlaydi?
Javob juda oddiy :)
Veb-server JSP-faylni topgandan so'ng, uni klassik servlеtga kompilyatsiya qiladi. Yuqoridagi JSP-sahifadan kelib chiqib, bunday Servlet generatsiya qilinadi:
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
PrintWriter out = response.getWriter();
out.print("<html> ");
out.print("<body>");
double num = Math.random();
if (num > 0.95) {
out.print("<h2>Baxtli odamsan, user! </h2><p>(" + num + ")</p>");
}
out.print("</body>");
out.print("</html>");
}
}
Veb-konteyner shunchaki servlеt kodini generatsiya qildi, HTML matnga aylantirildi, va Java-kod qo'shimchalari esa oddiy Java-kodga aylandi!
GO TO FULL VERSION