Applets and Servlets
Александр Кораблин
1
-
java.applet.Applet (AWT)
-
для графических приложений
-
javax.swing.Japplet (Swing)
2
The Applet Class
void destroy( ) - Called by the browser just before an applet is terminated.
AppletContext getAppletContext( ) - Returns the context associated with the applet.
String getAppletInfo( ) - Returns a string that describes the applet.
AudioClip getAudioClip(URL url) - Returns an object that encapsulates the URL
getCodeBase( ) - Returns the URL associated with the invoking applet.
URL getDocumentBase( ) - Returns the URL of the HTML doc that invokes the applet.
Image getImage(URL url) - Returns an Image object that encapsulates the image
found at the location specified by url.
String getParameter(String paramName) - Returns the parameter associated with paramName. null is returned if the specified parameter is not found.
void init( ) - Called when an applet begins execution.
boolean isActive( ) - Returns true if the applet has been started. It returns
false if the applet has been stopped.
void resize(int width, int height) - Resizes the applet according to the dimensions
void start( ) - Called by the browser when an applet should start
(or resume) execution.
void stop( ) Called by the browser to suspend execution of the applet.
Demo1
3
<html>
<head>
<title>Demo Applet</title>
</head>
<body>
<p>My applet</p>
<applet code=“Demo1.class" width=“200" height="100">
If your browser could show Java, you would see an applet here.
</applet>
</body>
</html>
Другие атрибуты:
align, vspace, hspace, alt, name (имя для скриптов)
code=“com.myApplets.Demo.class” - имя класса аплета
codebase=“URL for locating the class files”
archive="MyClasses.jar,corejava/CoreJavaClasses.jar"
4
Передача параметров
<applet code="FontParamApplet.class" width="200" height="200">
<param name="font" value="Helvetica"/>
</applet>
public class FontParamApplet extends JApplet
{
public void init() // только в init() !!!
{
String fontName = getParameter("font");
. . .
5
Видео и звук
-
Форматы:
-
GIF,PNG, or JPEG
-
AU, AIFF, WAV, or MIDI
-
Image cat = getImage(getCodeBase(),"images/cat.gif");
-
AudioClip meow = getAudioClip(getCodeBase(), "audio/meow.au");
-
play(getCodeBase(), "audio/meow.au");
6
The Applet Context
-
public AppletContext getAppletContext()
-
Applet ap = getAppletContext().getApplet(“name");
-
Enumeration<Applet> e = getAppletContext().getApplets();
-
URL u = new URL("http://java.sun.com/index.html");
-
getAppletContext().showDocument(u);
-
// void showDocument(URL url, String where)
-
“_self” (show in current frame), “_parent” (show in parent frame), “_top” (show in topmost frame), and “_blank” (show in new window).
7
JAVA НА СТОРОНЕ
СЕРВЕРА: СЕРВЛЕТЫ
8
-
1. Чтение данных, переданных пользователем.
-
2. Получение прочей информации, переданной в HTTP-запросе.
-
3. Генерация результатов.
-
4. Форматирование результатов обработки.
-
5. Установка параметров HTTP-ответа.
-
6. Передача документа клиенту.
9
-
Эффективность
-
Простота использования
-
Богатые возможности
-
Переносимость
-
Защита
-
Низкая стоимость
10
Обзор сервлетов
GenericServlet
-
javax.servlet & javax.servlet.http
-
Apache Tomcat 6.0.20\lib\servlet-api.jar
Servlet
ServletConfig
ServletRequest
ServletResponcse
HttpServlet
& Cookie
11
-
import j a v a x . s e r v l e t . *;
-
import j a v a x . s e r v l e t . h t t p . *;
-
p u b l i c c l a s s ServletTemplate extends H t t p S e r v l e t {
-
p u b l i c void d o G e t ( H t t p S e r v l e t R e q u e s t r e q u e s t,
-
H t t p S e r v l e t R e s p o n s e response)
-
throws S e r v l e t E x c e p t i o n , lOException {
-
/ / Параметр r e q u e s t используется для чтения полей
-
/ / заголовка, содержащихся в HTTP-запросе, и данных,
-
/ / введенных пользователем посредством HTML-формы.
-
/ / Параметр r e s p o n s e " используется для установки кода
-
/ / состояния HTTP-ответа и полей заголовка.
-
P r i n t W r i t e r out = r e s p o n s e . g e t W r i t e r ( );
-
/ / Объект out используется для передачи данных броузеру.
-
}
-
}
12
13
Настройка контейнера-сервлетов
-
Установка, например, Apache Tomcat
-
Задаём путь к Tomcat в О.С.
-
CATALINA_HOME=C:\Program Files\Apache Software Foundation\Apache Tomcat 6.0.20
-
Путь к JDK
-
JAVA_HOME=G:\Program Files\Java\jdk1.6.0
-
Путь к библиотеке
-
CLASSPATH=C:\Program Files\Apache Software Foundation\Apache Tomcat 6.0.20\lib\servlet-api.jar
-
Запуск и остановка Tomcat
-
Apache Tomcat 6.0.20\bin\startup.bat
-
Apache Tomcat 6.0.20\bin\shutdown.bat
-
Запуск сервлета
-
http://localhost:8080/examples/servlets/servlet/HelloWorldExample
14
Установка сервлета в контейнер
-
Копируем файлы сервлета в каталог:
-
С:\Program Files\Apache Software Foundation\Apache Tomcat 6.0.20\webapps\examples\WEB-INF\classes
-
Регистрируем сервлет в файле
-
\webapps\examples\WEB-INF\ web.xml
-
<servlet>
-
<servlet-name>Example1</servlet-name>
-
<servlet-class>SDemo1</servlet-class>
-
</servlet>
-
<servlet-mapping>
-
<servlet-name>Example1</servlet-name>
-
<url-pattern>/servlets/SDemo1</url-pattern>
-
</servlet-mapping>
15
Web Applications
16
Структура Web приложения
If the servlets or other .class files are bundled inside JAR files, then the JAR files
should be placed in
WEB-INF/lib.
Copy myWebApp to tomcat_dir/webapps
17
18
Состав JSP
-
Текст шаблона: Статический HTML
-
Элементы скриптов JSP
-
Выражения, имеющие форму <%= выражение %>, которые обрабатываются и направляются на вывод,
-
Скриплеты, имеющие форму <% код %>, которые вставляются в метод service сервлета
-
Объявления, имеющие форму <%! код %>, которые вставляются в тело класса сервлета, вне существующих методов.
19
Пример
Current time: <%= new j a v a . u t i l . D a t e () %>
В результате в тело метода j s p S e r v i c e (вызываемого из метода s e r v i c e ) будут
помещены следующие строки кода:
out.print("Current time: " );
out.println(new java.util.Date ());
20
Объекты JSP
-
request – позволяет обращаться к параметрам запроса, типу запроса (GET, POST, HEAD, и т.д..), и входящим HTTP заголовкам
-
response - объект связанный с ответом на запрос клиента
-
out - объект типа PrintWriter, используемый для отправки вывода клиенту