IT • archiv

rus / eng | Логин | Комментарий к колонке | Печать | Почта | Клуб




Колонки


Как я изучал servlets и JSP

 
Эта статья предназначена в основном для тех, что хочет изучить java servlet и JSP, но не знает с чего начать.

Мне бы совершенно не хотелось написать очередное введение в программирование java servlet, так как толку от таких учебных пособий обычно очень мало, поэтому я решил описать как я сам начал изучение этих технологий, какие использовал для этого ресурсы и как их найти.

Замечу только, что в основном я буду использовать англоязычные ресурсы, это обусловлено двумя причинами, во-первых, качественных русcкоязычных ресурсов по этой теме очень мало и, во-вторых, по-моему, гораздо эффективнее рассматривать оригиналы (а все спецификации обычно на английском). Поэтому если даже вы не совсем уверены в своем английском, я все же рекомендую вам знакомиться с этими ресурсами, вы не только изучите новые технологии, но и поднимите уровень своего английского.

Начнем с Java Tutorial и в частности с раздела посвященному java servlet, из него вы сможете почерпнуть все необходимые начальные сведения. Хороший обзор технологии servlet находится здесь. Ну а домашняя страница java servlet здесь.

После прочтения всего этого, вам наверняка захочется попробовать написать свой сервлет, для этого вам понадобится servlet engine. Для начала могу порекомендовать два бесплатных - Tomcat или Resin. На сайтах обоих достаточно информации о том, как установить их (впрочем устанавливать то их особо не надо, достаточно просто раскрыть архив) и как запустить. Оба эти servet engine имееют демо и небольшое описание этой демонстрации.

Будем считать, что после знакомства с этими программными продуктами и первых написанных вами сервлетах вы готовы к большему. А большее, на мой взгляд, состоит в изучении спецификации java servlet и javadoc описании классов. Конечно, всем известно, что "настоящие программисты не читают документацию" :) да и язык, которым написана эта спецификация не сильно располагает к чтению. Но ведь вам и нет необходимости учить эту спецификацию, вам лишь надо ознакомиться с ней и знать, что в случае если вам понадобится какая-либо информация о servlet, вы сможете найти ее. А javadoc описание классов servlet - это вообще один из самых полезных инструментов разработчика (как впрочем и javadoc описание классов в JDK). Очень часто трудно найти готовое решение, поэтому необходимо хотя бы представлять себе все возможности. А ведь достаточно просмотреть описание всех методов необходимого объекта и выбрать нужное. Ну а сделать это удобно именно с javadoc описанием нужных классов (в нашем случае классов servet). Хотя если вы привыкли разбираться по исходникам, это тоже не будет лишним, так как там, в комментариях есть все необходимое, ведь javadoc генерирует свою документацию именно из исходников.

Некоторые могут заметить, что разговор идет только о java servlet, а где-же обещанные JSP? А дело в том, что JSP это расширение java servet и изучать его без знания servlet - по меньшей мере глупо.

Но пора познакомиться и с ними. Почему же появилось JSP, чем нас не устраивают просто сервлеты, ведь с их помощью можно сделать все что угодно? А дело в том, что их очень неудобно поддерживать. Представьте себе HTML страницу которая закодирована внутри сервлета, среди различных java операторов, например такую: out.println("<HTML><HEAD><TITLE>");
out.println(session.getDocConfig().getTitleName());
out.println("<\TITLE>");
out.println("<SCRIPT LANGUAGE=JavaScript>");
out.println("function getStatus() {");
out.println("zhtml = '"+req.getServletPath()+"?getpage=status&folder='");
out.println("zhtml += document.inform.postpage.value+'&docid='");
out.println("zhtml += document.inform.doc_id.value+'&folder_dat='");
out.println("zhtml += document.inform.folder_dat.value");
out.println("myWin= open( zhtml,'popWin','resizable=yes,width=450,height=400');");
out.println("}");
out.println("</SCRIPT>");
out.println("</HEAD>");

out.println("<form name=inform METHOD=POST ACTION="+req.getServletPath()+" target=frame2>");
if (doc.getAction() != null) tmp = "   ( "+doc.getAction()+" )";
if (FoldType == 1) out.println("<b>От: </b>"+doc.getFrom()+tmp+"<br>");
 else out.println("<b>Кому: </b>"+doc.getTo()+tmp+"<br>");

DateFormat df = session.getDocConfig().getDateFormat();
DateFormat tf = session.getDocConfig().getTimeFormat();
out.println("<b>Владелец: </b>"+doc.getOwner()+"<br>");
if ( FoldType != 3) out.println("<b>Отправлено: </b>"+df.format(doc.getDate())+" "+tf.format(doc.getTime())+"<br>");
 else out.println("<b>Подготовлено: </b>"+df.format(doc.getDate())+" "+tf.format(doc.getTime())+"<br>");

Это реальный код из одной моей старой программы, когда JSP еще редко использовалось. Написать то можно все, а вот если через пару месяцев вы захотите подправить что-либо в таком коде? Это будет очень непросто.

В сущности, JSP это заготовка для сервлета, т.е. в обычный HTML код вставляется необходимый вам java код, и все размещается на web сервере. Когда кто-либо обращается у этому ресурсу, servlet engine автоматически создает код java servet из этого смешанного кода JSP, компилирует этот servet и исполняет, при этом пользователь получает то, что хочет, а разработчик освобождается от поиска необходимого HTML кода среди out.println. Конечно, при последующих обращениях исполняется уже готовый servet, поэтому JSP не медленнее.

Вот пример простой JSP:

<%@ page session=false %>
<%
String title = "Hello, world!";
%>
<html>
<head>
<title><%= title %></title>
</head>
<body bgcolor=white>
<h1><%= title %></h1>
</body>
<html>
Домашняя страница JSP находится по адресу http://java.sun.com/products/jsp/. Начать свое знакомство с JSP можно с этого tutorial. Здесь доступен краткий обзор.

Очень хорошее описание и servet и JSP можно найти на сайте Марти Холла - Servlets and JavaServer Pages (JSP). A Tutorial..

Ну и конечно стоит почитать спецификацию Java Server Pages.

С помощью этих ресурсов вы сможете получить все необходимые знания для начала работы с JSP и servlet, но, конечно только практика может создать настоящего специалиста.

Плюс к этому очень полезно читать специализированные статьи из которых можно узнать и как правильно построить web приложение и как справиться с его русификацией. Эти статьи можно найти на JavaWorld или благодаря тем, кто их переводит на нашем сайте.

Советую вам обязательно прочитать статью "Understanding JavaServer Pages Model 2 architecture" или ее перевод, сделанный Антоном Никитиным.

А также ознакомиться с замечательной статьей Сергея Астахова Java: Русские буквы и не только... (копия на Javable), особенно раздел о русификации servlet.

Вячеслав Педак




Справка | Условия Copyright © 1999 — 2010, IT • archiv.
В начало | Логин | Комментарий к колонке | Поиск | Почта