
- •1. Условный оператор if
- •If (условие)
- •2. Составной оператор
- •4. Оператор цикла for
- •5. Оператор цикла while (цикл с предусловием)
- •6. Операторы цикла do … while (цикл с постусловием)
- •7. Операторы прерывания continue, break, return, System.Exit
- •8. Оператор выбора switch
- •9. Условное выражение … ? … : …
- •If (условие) {
- •10. Ошибки при использовании вещественного счетчика цикла
- •11. Эффективная организация циклов
- •Void getFood(int food, int drink); // Кормление
- •Сборка мусора
- •Import org.Eclipse.Swt.*;
- •Import org.Eclipse.Swt.Widgets.*;
- •If (!display.ReadAndDispatch ()) display.Sleep ();
- •Import org.Eclipse.Jface.Window.ApplicationWindow;
- •Import org.Eclipse.Swt.Swt;
- •Import org.Eclipse.Swt.Widgets.*;
- •Основные элементы («теги»)
- •Гиперссылки
- •Текстовые блоки
- •Форматирование текста
- •Options
- •Клиенты
- •2.2.Простой Web проект
- •Компоненты j2ee
- •Комментарии
- •Скриптовые элементы
- •Объявления jsp
- •Выражения jsp
- •Скриплеты jsp
- •Директивы jsp
Скриплеты jsp
Если вы хотите сделать что-то большее чем просто вставку выражений, то скриплеты JSP дадут вам возможность вставить любой код в метод сервлета, который будет создан при обработке данной страницы. В данном случае Вы можете использовать большинство конструкций Java. Скриплеты также имеют доступ к тем же заранее определённым переменным, что и выражения. Поэтому, например, если вы хотите вывести что-нибудь на страницу, вы должны использовать заранее определённую переменную out.
<%
String queryData = request.getQueryString();
out.println("Дополнительные данные запроса: " + queryData);
%>
Обратите внимание на то, что код внутри скриплета вставляется в том виде, как он был записан, и весь статический HTML (текст шаблона) до или после скриплета конвертируется при помощи оператора print. Например, следующий фрагмент JSP содержит смешанный текст шаблона и скриплета:
<% if (Math.random() < 0.5) { %>
<B>Удачного</B> вам дня!
<% } else { %>
<B>Неудачного</B> вам дня!
<% } %>
После преобразования скриплета код будет выглядеть следующим образом:
if (Math.random() < 0.5) {
out.println("<B>Удачного</B> вам дня!");
} else {
out.println("<B>Неудачного</B> вам дня!");
}
Это означает, что скриплеты не обязательно должны содержать завершённые фрагменты Java, и что оставленные открытыми блоки могут оказать влияние на статический HTML вне скриплета.
Директивы jsp
JSP страница может послать сообщение соответствующему контейнеру с указаниями какие действия необходимо провести. Эти сообщения называются директивами. Все директивы начинаются с <%@, затем следует название директивы и один или несколько атрибутов со значениями, и заканчиваются %>. Директивы в JSP странице приводят к тому, что контейнер пошлёт заявку на исполнение определённой службы, которая в генерированном документе не объявляется. Форму записи директив можно изобразить следующим образом:
<%@ директива атрибут="значение" %>
Вы также можете объединить установку нескольких атрибутов для одной директивы:
<%@ директива атрибут1="значение1"
атрибут2="значение2"
...
атрибутN="значениеN" %>
Существует три основных типа директив: page, которая позволяет вам совершать такие операции, как импорт классов, изменение суперкласса сервлета, и т. п.; include, которая даёт вам возможность вставить файл в класс сервлета при трансляции JSP файла в сервлет; и taglib, позволяющий расширить множество тегов своими собственными, которые JSP контейнер способен истолковать.
24. JDBC.
JDBC (англ. Java DataBase Connectivity — соединение с базами данных на Java) — платформенно-независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД, реализованный в виде пакета java.sql, входящего в состав Java SE.
JDBC основан на концепции так называемых драйверов, позволяющих получать соединение с базой данных по специально описанному URL. Драйверы могут загружаться динамически (во время работы программы). Загрузившись, драйвер сам регистрирует себя и вызывается автоматически, когда программа требует URL, содержащий протокол, за который драйвер отвечает.
JDBC API содержит два основных типа интерфейсов: первый — для разработчиков приложений и второй (более низкого уровня) — для разработчиков драйверов.
Соединение с базой данных описывается классом, реализующим интерфейс java.sql.Connection.
Имея соединение с базой данных, можно создавать объекты типа Statement, служащие для исполнения запросов к базе данных на языке SQL.
Существуют следующие виды типов Statement, различающихся по назначению:
java.sql.Statement — Statement общего назначения;
java.sql.PreparedStatement — Statement, служащий для выполнения запросов, содержащих подставляемые параметры (обозначаются символом '?' в теле запроса);
java.sql.CallableStatement — Statement, предназначенный для вызова хранимых процедур.
Интерфейс java.sql.ResultSet позволяет легко обрабатывать результаты запроса.
Преимуществами JDBC считают:
Лёгкость разработки: разработчик может не знать специфики базы данных, с которой работает;
Код не меняется, если компания переходит на другую базу данных;
Не нужно устанавливать громоздкую клиентскую программу;
К любой базе можно подсоединиться через легко описываемый URL.
Примеры кода
Данный пример использует свободный драйвер JDBC для MySQL, который легко устанавливается в большинстве дистрибутивов Linux через стандартные репозитории.
JDBC для MySQL |
|
package javaapplication1; import java.sql.*;
public class Main {
public static void main(String[] args) throws SQLException { /** * эта строка загружает драйвер DB. * раскомментируйте если прописываете драйвер вручную */ //Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/db_name", "user", "password");
if (conn == null) { System.out.println("Нет соединения с БД!"); System.exit(0); }
Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users");
while (rs.next()) { System.out.println(rs.getRow() + ". " + rs.getString("firstname") + "\t" + rs.getString("lastname")); }
/** * stmt.close(); * При закрытии Statement автоматически закрываются * все связанные с ним открытые объекты ResultSet */ stmt.close(); } } |