Топ-100Уроки Java | CodOrbits
LogoCodOrbits

Уроки Java

Rocket

Раздел 1: Азы Java

Small Image 1Small Image 2Small Image 3

<Introduction/>

О языке Java

Что такое Java, где она используется и стоит ли её изучать? Java — это строго типизированный язык программирования общего назначения. Почему он строго...

Small Image 1Small Image 2Small Image 3

<Java Features/>

Чем Java так особенна? Java машина.

Девиз Java таков “Написано однажды работает везде” Начнем из далека. Раньше программы для выполнения компьютером писались в формате машинн...

Small Image 1Small Image 2Small Image 3

<Installation/>

Установка Java

Для начала немного о разных Java пакетах, их два: JRE – для запуска java программ. Состоит из Java машины и библиотеки java классов. Компил...

Small Image 1Small Image 2Small Image 3

<First Program/>

Первая Java программа

Создадим и запустим первую Java программу. В результате выполнения действий приведенных в прошлом уроке все библиотеки Java доступны на нашем компьюте...

Small Image 1Small Image 2Small Image 3

<Variables/>

Переменные в Java

Что такое переменная? Переменная это просто место (хранилище) в котором можно хранить какие либо данные и содержимое этого места можно менять. Простей...

Small Image 1Small Image 2Small Image 3

<Scanner/>

Ввод в консоль в Java

Выводить значения на консоль мы уже научились, теперь рассмотрим ввод значения в программу через консоль с клавиатуры. Введенное в программу значение ...

Small Image 1Small Image 2Small Image 3

<Comments/>

Комментарии в Java

Рассмотрим комментарии. Комментарии никак не влияют на ход выполнения программы, они лишь нужны чтобы, как можно догадаться, комментировать код. Однос...

Small Image 1Small Image 2Small Image 3

<Operators in Java/>

Арифметические операторы и операторы присвоения в Java

Рассмотрим операторы. Есть пять типов операторов: операторы присвоения, арифметические операторы, операторы сравнения, логические операторы и условные...

Small Image 1Small Image 2Small Image 3

<Comparison Operators/>

Операторы сравнения в Java

Рассмотрим операторы сравнения. Если кто-то гадал зачем нужен тип boolean, то сейчас узнает. Операторы сравнения нужны, как можно догадаться, чтобы ср...

Small Image 1Small Image 2Small Image 3

<Logical Operators/>

Логические операторы в Java

Рассмотрим логические операторы. Их три – “И”, “ИЛИ” и “НЕ”. В Java воспользоваться оператором “И̶...

Small Image 1Small Image 2Small Image 3

<Conditional operators/>

Условные операторы в Java

Итак, как же эти выражения с операторами, которые мы изучили можно использовать? Например, в операторе сравнения if…else. Им можно проверить воз...

Small Image 1Small Image 2Small Image 3

<Java Loops/>

Циклы в Java

Рассмотрим циклы. Цикл нужен чтобы повторять какое-о действие или набор действий какое-то количество раз. Есть три вида циклов for, while и do..while....

Small Image 1Small Image 2Small Image 3

<Break, Continue/>

Ключевые слова break, continue

Далее рассмотрим ключевые слова break и continue. Если нужно раньше времени остановить цикл по какому-то условию, то используется ключевое слово break...

Small Image 1Small Image 2Small Image 3

<Java Arrays/>

Массивы в Java

Рассмотрим массивы. В прошлых уроках у нас была переменная int a=31; хранящая одно число 31. А что если мы хотим иметь переменную в которой будет хран...

Small Image 1Small Image 2Small Image 3

<Java Strings/>

Строки в Java

Мы уже видели строку когда передавали что-либо внутри кавычек “” в функцию вывода на консоль – System.out.println(“строка̶...

Small Image 1Small Image 2Small Image 3

<Java Functions/>

Функции в Java

Рассмотрим функции (также называют методами). До этого мы уже употребляли некоторые функции например println() для вывода строки в консоль, replace дл...

Small Image 1Small Image 2Small Image 3

<Java Scopes/>

Область видимости в Java

Немного об области видимости. class Test { static int averageOf3Nums(int a, int b, int c) { int sum = a + b + c; int resultAverage = sum / 3; return r...

Раздел 2: ООП

Small Image 1Small Image 2Small Image 3

<OOP in Java/>

Что такое ООП? Класс, объект.

Что такое ООП (Объектно-ориентированное программирование)? Это способ построения программных продуктов. Такие программные продукты состоят из объектов...

Small Image 1Small Image 2Small Image 3

<Constructor/>

Конструктор класса

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

Small Image 1Small Image 2Small Image 3

<Encapsulation in OOP/>

Инкапсуляция

ООП стоит на трех столпах – Инкапсуляция, Полиморфизм, Наследование. Начнем с первого. Инкапсуляция – это сокрытие деталей реализации клас...

Small Image 1Small Image 2Small Image 3

<Access Modifiers/>

Модификаторы доступа

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

Small Image 1Small Image 2Small Image 3

<Getters, Setters/>

Свойства в ООП (getters, setters)

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

Small Image 1Small Image 2Small Image 3

<Inheritance/>

Наследование в Java

Благодаря наследованию один класс может иметь доступ к полям другого класса. Но эти классы должны быть логически связаны и связанность между ними долж...

Small Image 1Small Image 2Small Image 3

<Polymor phism/>

Полиморфизм

Что же такое полиморфизм? Это способность использовать одно и тоже имя для разных задач. Поясним на примере: class Animal { private String eats; priva...

Small Image 1Small Image 2Small Image 3

<Abstract Class/>

Абстрактный класс

Абстрактный класс – общий концепт чего-либо. Это класс, который содержит в себе нереализованные методы (называются абстрактными методами), котор...

Small Image 1Small Image 2Small Image 3

<Interfaces/>

Интерфейсы в Java

Интерфейс – определяет поведение классов. В нем могут быть только поля и абстрактные методы (методы без реализаций, как мы помним). Интерфейс со...

Small Image 1Small Image 2Small Image 3

<Static Fields/>

Статические поля

Допустим у нас есть класс и мы хотим чтобы какие-то поля или методы этого класса принадлежали одновременно всем объектам этого класса. Такие поля и ме...

Small Image 1Small Image 2Small Image 3

<Inner Class/>

Внутренний класс

Внутренний класс – класс внутри другого класса. Некоторая доп. функциональность, которая относиться только к внешнему классу. Класс внутри друго...

Small Image 1Small Image 2Small Image 3

<Static Сlass/>

Статический класс

Статический класс это всегда внутренний класс. Статического не внутреннего класса не бывает. Обычный внутренний класс и статический внутренний класс ч...

Small Image 1Small Image 2Small Image 3

<Ref Types & Val Types/>

Ссылочные типы и типы значений

В Java есть два типа данных – ссылочные типы и типы значений. int, char ,float и т.д это типы значений. Это простые типы. Это просто число либо ...

Small Image 1Small Image 2Small Image 3

<Vals & Refs passing/>

Передача в метод ссылочных типов и типов значений

Рассмотрим передачу ссылочного типа в метод и передачу типа значения в метод. Для начала передадим в метод тип значения. public class LinkValInMethodE...

Раздел 3: Java Core

Small Image 1Small Image 2Small Image 3

<Annotations/>

Аннотации в Java

Что такое аннотация в Java? Представьте себе склад с коробками. На каждой из коробок есть надпись, которая говорит тому кто будет отгружать эти коробк...

Small Image 1Small Image 2Small Image 3

<Exception Handling/>

Обработка исключений

Если при работе Java приложения возникает ошибка(исключение) и обработка данной ошибки не предусмотрена в программе этого приложения, то приложение ОС...

Small Image 1Small Image 2Small Image 3

<Generics/>

Generics в Java

Если мы хотим сделать класс более гибким в плане типов, которые в нем используются, то можно воспользоваться обобщениями (generics). Класс в примере н...

Small Image 1Small Image 2Small Image 3

<Type casting/>

Приведение типов

Часто бывает нужно изменить тип переменной. То есть, например, была создана переменная типа int, и нам в какой-то момент стало необходимо изменить ее ...

Small Image 1Small Image 2Small Image 3

<String Types/>

Типы строк в Java

Для хранения строки мы знаем тип String. Но он не всегда бывает эффективен. Поэтому есть еще другие классы для хранения строк и взаимодействия с ними,...

Small Image 1Small Image 2Small Image 3

<Wrapper Classes/>

Классы обертки

Есть специальные классы обертки – Integer, Char, Float. Они также как и простые типы значений хранят в себе одно простое значение: Integer ̵...

Small Image 1Small Image 2Small Image 3

<Assert/>

Ключевое слово Assert

Ключевое слово assert используется для проверки какого-либо условия в ходе разработки. Программа выдает исключение, то есть происходит ошибка если выр...

Small Image 1Small Image 2Small Image 3

<Default Methods/>

Default методы в интерфейсах

В java 8 всё же появилась возможность добавлять реализации методов в интерфейс. Нужно в основном для того чтобы у классов реализующих интерфейс не был...

Small Image 1Small Image 2Small Image 3

<Anonymous Class/>

Анонимный класс

Анонимный класс – одноразовая реализация интерфейса без создания полноценного класса. То есть нам не нужно создавать много объектов, будет тольк...

Small Image 1Small Image 2Small Image 3

<Functional Interface/>

Функциональный интерфейс

В прошлом уроке мы видели интерфейс с одним единственным абстрактным методом. Такой интерфейс называется функциональным. Функциональный интерфейс R...

Small Image 1Small Image 2Small Image 3

<Lambda Expressions/>

Лямбда выражения

Что же такое лямбда выражения? Всё просто. Это просто сокращенная форма реализации функц. интерфейса с помощью анонимного класса. Реализовывать абстра...

Small Image 1Small Image 2Small Image 3

<Stream API/>

Java Stream API

Stream – для работы с коллекциями. Избавляет от необходимости вручную реализовывать операции над коллекциями. Проще говоря пишем запрос к коллек...

Small Image 1Small Image 2Small Image 3

<File/>

Работа с элементами файловой системы с помощью класса File

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

Small Image 1Small Image 2Small Image 3

<Object, toString/>

Object. Метод toString и его переопределение

Все классы в Java наследуют от некого класса Object. В этом классе определены некоторые важные методы, которые необходимо знать и самое главное уметь ...

Small Image 1Small Image 2Small Image 3

<Clone/>

Метод Clone и его переопределение

Второй метод Object это метод clone, который клонирует объект. Происходит копирование всех полей клонируемого объекта в новый объект-клон. Но по умолч...

Small Image 1Small Image 2Small Image 3

<Equals/>

Метод Equals и его переопределение

Следующий метод Object – это equals. Возвращает boolean значение. equals по умолчанию проверяет только то, ссылаются ли две ссылки на один и тот...

Small Image 1Small Image 2Small Image 3

<HashCode/>

Метод hashCode и его переопределение

Внимание! Перед прохождением данного урока сначала необходимо пройти следующий раздел, а потом обязательно возвращайтесь сюда, данный урок довольно ва...

Раздел 4: Коллекции

Small Image 1Small Image 2Small Image 3

<Collections. List Interface/>

Коллекции. Интерфейс List

Что же такое коллекция? Это можно сказать такой особый тип массива. Мы знаем, что у обычного Java массива есть строгая граница количества элементов, к...

Small Image 1Small Image 2Small Image 3

<Iterator/>

Iterator в коллекциях Java

Благодаря Iterator можно перебирать любую коллекцию не вникая в особенности какой-либо из них. Пример программы: import java.util.*; @SuppressWarnings...

Small Image 1Small Image 2Small Image 3

<Queue Interface/>

Интерфейс Queue в Java

Благодаря классам реализующим Queue можно создавать массивы реализующие очередь. Что такое очередь, FIFO? Очередь работает по принципу FIFO – fi...

Small Image 1Small Image 2Small Image 3

<Map Interface/>

Интерфейс Map в Java

Благодаря классам реализующим Map можно создать массив из пар ключ-значение. То есть один элемент этого массива это пара. Пример программы: import jav...

Small Image 1Small Image 2Small Image 3

<Set Interface/>

Интерфейс Set в Java

Благодаря классам реализующим Set можно создать массив в котором элементы не повторяются. HashSet это как hashmap, только без значений, только ключи. ...

Раздел 5: Потоки ввода/вывода

Small Image 1Small Image 2Small Image 3

<Input/Output Streams/>

Потоки ввода/вывода. PrintWriter и PrintStream

Часто так бывает, что нам нужно ввести куда-то информацию и откуда-то ее вывести. Например, извлечь что-нибудь из файла или записать туда что-либо. Пр...

Small Image 1Small Image 2Small Image 3

<FileStream/>

FileStream в Java: чтение и запись файлов

FileOutputStream, FileInputStream – для чтения файла и записи в файл. В конструкторе должен быть указываем путь к файлу с которым будем совершат...

Small Image 1Small Image 2Small Image 3

<DataStream/>

DataStream в Java

DataInputStream DataOutputStream – чтение байтового потока и запись в байтовый поток в формате примитивных типов данных. Пример программы: impor...

Small Image 1Small Image 2Small Image 3

<Buffered Stream/>

BufferedStream в Java

BufferedInputStream, BufferedOutputStream – чтение байтового потока и запись в байтовый поток с добавлением буфера для улучшения производительно...

Small Image 1Small Image 2Small Image 3

<StringReader, StringWriter/>

StringReader и StringWriter в Java

StringReader, StringWriter – потоки, которые хранят строку в себе с которой мы работаем через эти потоки как с любыми другими источниками дынных...

Small Image 1Small Image 2Small Image 3

<Sequence InputStream/>

SequenceInputStream в Java

SequenceInputStream – сливает потоки в один поток. Он считывает от первого byte до последнего byte первого InputStream, затем делает то же самое...

Small Image 1Small Image 2Small Image 3

<Piped Stream/>

PipedStream в Java: передача данных между потоками

PipedInputStream, PipedOutputStream – применяется в многопоточной среде. Потоки в слове многопоточной, это не те потоки, которые мы сейчас изуча...

Small Image 1Small Image 2Small Image 3

<PushbackInputStream/>

PushbackInputStream в Java

PushbackInputStream – прочитав несколько байтов входного потока с помощью inpsrream.read() бывает необходимо вернуться и прочитать эти же уже пр...

Small Image 1Small Image 2Small Image 3

<OutputStreamWriter/>

OutputStreamWriter в Java

OutputStreamWriter – мост между символьными и байтовыми потоками. Пример программы: import java.io.*; import java.util.*; class OutputStreamWrit...

Small Image 1Small Image 2Small Image 3

<Object Stream/>

ObjectStream в Java

ObjectInputStream, ObjectOutputStream – для сериалиации/десериализации. Для сохранения копии объекта в поток (в файл, например) для восстановлен...

Small Image 1Small Image 2Small Image 3

<FilterStream/>

FilterStream в Java

FilterInputStream, FilterOutputStream – абстрактные классы для создания собственных потоков или добавления функционала к существующим. В примере...

Раздел 6: Многопоточность

Small Image 1Small Image 2Small Image 3

<Multi threading/>

Многопоточность в Java. создание и запуск потоков с помощью Thread

Создать нить(поток) можно тремя способами: Код класса расширяющего или реализующего что-нибудь выше перечисленное будет выполняться в отдельном потоке...

Small Image 1Small Image 2Small Image 3

<Runnable/>

Интерфейс Runnable в Java

Реализуя Runnable тоже реализуется метод run в котором пишется код, который будет выполняться в отдельном потоке. Пример программы: //Создадим простен...

Small Image 1Small Image 2Small Image 3

<Volatile/>

Volatile переменная в Java

Для создания общей глобальной переменной, которую будут использовать несколько потоков используется слово volatile. Создадим два потока. Первый будет ...

Small Image 1Small Image 2Small Image 3

<Join/>

Метод join в Java

Метод join останавливает поток в котором этот метод был вызван пока не закончит выполнение поток к которому этот метод был вызван. Более понятно на пр...

Small Image 1Small Image 2Small Image 3

<Synchro nized/>

Синхронизация в Java с помощью Synchronized

Если несколько параллельных потоков одновременно хотят выполнить один и тот же кусок кода одного и того же объекта, то можно сделать так чтобы они вып...

Small Image 1Small Image 2Small Image 3

<Synchronized Static/>

Synchronized static в Java

synchronized static (блокировка на уровне класса), а просто synchronized (блокировка на уровне объекта). В коде ниже у нас уже будут 2 объекта ресурса...

Small Image 1Small Image 2Small Image 3

<Wait/Notify/>

Синхронизация с помощью Wait/Notify

wait/notify – используется если нам нужно приостановить один поток и чтобы он ждал пока другой поток даст разрешение на продолжение выполнения о...

Small Image 1Small Image 2Small Image 3

<Yield/>

Метод yield в Java

Когда поток вызывает метод yield он говорит: мне сейчас не обязательно заканчивать свою работу и занимать время процессора и больше времени передастся...

Small Image 1Small Image 2Small Image 3

<Semaphore/>

Semaphore в Java

Обычно нужен если много потоков одновременно пытаются получить доступ к каким-то ресурсам, а нам нужно, чтобы к ним одновременно получала доступ тольк...

Small Image 1Small Image 2Small Image 3

<Reentrant Lock/>

ReentrantLock – гибкая альтернатива synchronized

ReentrantLock ведет себя как synchronized, но есть некоторые отличия. Мы помним, что synchronized блочит цельный кусок кода, то есть synchronized, это...

Small Image 1Small Image 2Small Image 3

<CountDown Latch/>

Ожидание завершения потоков с помощью CountDownLatch

CountDownLatch – нужен когда требуется чтобы какой-то поток ждал пока не выполняться какое-то количество потоков. В примере ниже мейн останавлив...

Small Image 1Small Image 2Small Image 3

<CyclicBarrier/>

CyclicBarrier в Java

Принцып работы CyclicBarrier такой: потоки зависают друг за другом в месте вызова в них await. Когда зависло необходимое количество потоков, зависнувш...

Small Image 1Small Image 2Small Image 3

<Interrupt/>

Корректная остановка потоков с помощью Interrupt

Чтобы резко остановить поток можно использовать метод Stop(), но резко останавливать не рекомендуется, это может быть опасно. Поэтому метод Stop преда...

Small Image 1Small Image 2Small Image 3

<Callable/>

Callable в Java

До этого мы рассматривали создание потоков с помощью Thread и Runnable. Последний вариант того как можно создать класс потока это реализовать Callable...

Small Image 1Small Image 2Small Image 3

<Executor Service/>

ExecutorService: управление пулом потоков

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

Small Image 1Small Image 2Small Image 3

<ReadWrite Lock/>

ReadWriteLock в Java

ReadWriteLock – класс содержащий 2 лока: один для чтения, другой для записи. Часто бывает так, что один поток пишет в ресурс, а много других пот...

Small Image 1Small Image 2Small Image 3

<ThreadLocal/>

ThreadLocal в Java: переменные потока

ThreadLocal – переменная ПОТОКА. Это не переменная объекта потока, а именно переменная ПОТОКА. То есть она принадлежит только одному потоку и су...

Small Image 1Small Image 2Small Image 3

<Fork/Join/>

Fork/Join framework в Java

fork/join framework – для разбиения задачи на подзадачи и чтобы эти подзадачи выполнялись в отдельных потоках. Также эти подзадачи могут тоже де...

Раздел 7: Сериализация

Small Image 1Small Image 2Small Image 3

<Serialization/>

Что такое сериализация в Java

Что такое сериализация мы уже проходили в разделе потоки ввода/вывода, но повторим, так как это основы сериализации. ObjectOutputStream – сериал...

Small Image 1Small Image 2Small Image 3

<Transient/>

Transient в Java

Как уже было сказано, при сериализации все поля сериализуемого объекта должны быть тоже Serializable. Если какое-то поле сериализуемого объекта не Ser...

Small Image 1Small Image 2Small Image 3

<SerialVersionUID/>

Контроль совместимости классов с помощью SerialVersionUID

У каждого сериализуемого класса (именно класса, не объекта класса) есть поле SerialVersionUID. Это числовой идентификатор, который меняется при каждом...

Small Image 1Small Image 2Small Image 3

<Singleton Serialization/>

Сериализация Singleton без утраты его сути

Cинглтон это класс, который может иметь только один экземпляр. То есть другой экземпляр этого класса невозможно создать. Если мы сериализуем этот экзе...

Small Image 1Small Image 2Small Image 3

<Externali zable/>

Управляемая сериализация в Java: Externalizable

Externalizable – управляемая сериализация. Представим, что нужно сериализовать объект созданного нами класса расширяющий вообще сторонний класс,...

Раздел 9: SQL

Small Image 1Small Image 2Small Image 3

<SQL, MySQL/>

Основы SQL. Что такое СУБД и MySQL

Теперь разберемся как же работать с Базой Данных. То есть как создать таблицу, добавить в нее данные, извлечь из нее данные, удалить ее и т.д. Для это...

Small Image 1Small Image 2Small Image 3

<DDL in SQL/>

DDL в SQL: создание и удаление таблиц

Командой create database создадим базу данных с именем ecommerce, то есть интернет магазин. Перед прохождением раздела по SQL очень желательно пройти ...

Small Image 1Small Image 2Small Image 3

<DML in SQL/>

DML команды в SQL

В следующую группу команд под названием DML входят команды для манипулирования данными, а именно: Воспользуемся такими insert запросами для добавления...

Small Image 1Small Image 2Small Image 3

<Aggregate Functions/>

Агрегатные функции в SQL

Дальше разберем что такое агрегатные функции. Агрегатная функция может выполнить какие-либо операции над всеми значениями столбца или над группой знач...

Small Image 1Small Image 2Small Image 3

<Group By. Having/>

Group By и Having в SQL

Далее разберем ключевое слово Group by и having. С помощью Group by можно разбить значения какого-либо выбираемого из таблицы аттрибута на группы. Гру...

Small Image 1Small Image 2Small Image 3

<Subqueries/>

Подзапросы в SQL

Теперь перейдем к подзапросам. Вот мы например вывели максимальное число в столбце. Оно ясное дело тоже было в какой-то строке таблицы (строка с id 7 ...

Small Image 1Small Image 2Small Image 3

<Join/>

Объединение таблиц в SQL с помощью JOIN

Далее разберем слово JOIN.  У нас есть две связанные таблицы. Как видим каждый продукт связан с категорией по внешнему ключу category_id. В categ...

Раздел 10: JDBC

Small Image 1Small Image 2Small Image 3

<JDBC Basics/>

Основы JDBC в Java

JDBC – программный интерфейс для взаимодействия Java приложения и базы данных. То есть, грубо говоря, мы можем работать с базой данных из Java п...

Small Image 1Small Image 2Small Image 3

<Transactions/>

Транзакции в SQL и JDBC

Представим, есть некоторая последовательность SQL запросов, которые должны последовательно выполняться. Если на определенном запросе возникнет ошибка,...

Small Image 1Small Image 2Small Image 3

<Savepoint/>

Savepoint в JDBC транзакциях

Класс SavePoint необходим для того, чтобы rollback был применен с определенной строки кода по определенную строку кода. Пример программы: import java....

Small Image 1Small Image 2Small Image 3

<Transaction Isolation/>

Изоляция транзакций. Грязное чтение

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

Small Image 1Small Image 2Small Image 3

<Non-repeatable read/>

Изоляция транзакций. Неповторяющееся чтение

Допустим есть транзакция А и транзакция В в разных потоках. Допустим в транзакции А есть несколько select запросов подряд. Если транзакция В во время ...

Small Image 1Small Image 2Small Image 3

<Phantom Read/>

Изоляция транзакций. Фантомное чтение

Фантомное чтение – по сути то же самое, что и неповторяющееся, только вместо update базы, будет insert в базу. Для того чтобы изолировать транза...

Small Image 1Small Image 2Small Image 3

<PreparedStatement/>

Безопасные запросы с PreparedStatement

Напрямую в запрос данные пользователя передавать нельзя! Это опасно. Пользователь может туда вставить любое sql выражение какое ему вздумается. Это на...

Small Image 1Small Image 2Small Image 3

<Stored Procedures/>

Использование хранимых процедур в Java

Хранимые процедуры это по сути функции, только вместо java кода sql код и эти функции хранятся в БД. Для создания этой процедуры в БД, нужно выполнить...

Раздел 11: HTML

Small Image 1Small Image 2Small Image 3

<HTML/>

Что такое HTML и зачем он нужен

HTML – это язык разметки веб-страницы. С помощью html мы задаем странице определенный каркас. То есть этот язык определяет в каком порядке будут...

Small Image 1Small Image 2Small Image 3

<Crucial HTML Tags/>

Ключевые теги HTML

В этом уроке приведем несколько наиболее распространенных тегов, которые встречаются почти везде. Для начала рассмотрим теги title и h. Также сверху h...

Small Image 1Small Image 2Small Image 3

<Attributes/>

Атрибуты в HTML

Мы уже рассмотрели некоторые аттрибуты типа src, href и border. Как уже можно было понять, они нужны, чтобы каким-либо образом настраивать элементы на...

Small Image 1Small Image 2Small Image 3

<CSS Basics/>

Базовые концепции CSS

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

Small Image 1Small Image 2Small Image 3

<CSS Classes/>

Что такое классы в CSS

А что, если мы хотим применить определённый набор CSS-свойств вообще к любому элементу на странице, не указывая конкретный тег, например h1 { … ...

Small Image 1Small Image 2Small Image 3

<Div Block/>

Что такое div блок и зачем он нужен

Рассмотрим тег <div></div>. Это наверное один из самых часто встречающихся тегов в любом html документе. div сам по себе ничего не делает, но с ...

Small Image 1Small Image 2Small Image 3

<Structure Tags/>

Теги структуры страницы. Семантические теги

Все видели классическую структуру страницы: Верхняя часть страницы на которой панель навигации по сайту, логотип и другое, часть страницы с основным к...

Small Image 1Small Image 2Small Image 3

<CSS Selectors/>

Cелекторы в CSS

До этого мы использовали только селектор конкретного тега ( например h1 {…} ) и селектор класса ( например some-class-name {…} ). Селектор...

Раздел 14: Servlets

Small Image 1Small Image 2Small Image 3

<Java EE/>

Java Enterprise Edition (EE)

Java EE – стандарт разработки веб-приложений используя язык Java. Предоставляет множество средств для реализации клиент-серверных приложений. В ...

Small Image 1Small Image 2Small Image 3

<First Servlet/>

Создание первого сервлета

Ниже приведен пример сервлета. Класс сервлета наследуется от класса HttpServlet и в нем реализуются методы doGet, doPost. В этих методах происходит пр...

Small Image 1Small Image 2Small Image 3

<Servlet Methods/>

Методы сервлета

Помимо doGet у сервлета есть и другие методы. Рассмотрим вкратце зачем нужны методы init, doPost, service и destroy. import java.io.IOException; impor...

Small Image 1Small Image 2Small Image 3

<@WebServlet/>

Использование аннотации @WebServlet

Чтобы не конфигурировать путь, по которому будет происходить обращение к сервлету в web.xml можно использовать аннотацию WebServlet в коде сервлета. i...

Small Image 1Small Image 2Small Image 3

<Parameters in GET request/>

Работа с HTTP-запросами: GET и POST

Для начала рассмотрим GET-запрос. GET-запросы позволяют клиенту передавать параметры через адресную строку браузера. Эти параметры затем можно легко и...

Small Image 1Small Image 2Small Image 3

<Redirect Methods/>

Redirect, forward, include в сервлетах

Рассмотрим переход на другую страницу с помощью sendRedirect() sendRedirect() – перенаправляет на любой указанный аргументом адрес. Адрес в адре...

Small Image 1Small Image 2Small Image 3

<Cookies/>

Работа с Cookies в Java

Cookies это данные, которые генерируются сервером и хранятся в браузере клиента. Браузер клиента возвращает эти данные обратно на сервер когда клиент ...

Small Image 1Small Image 2Small Image 3

<Session/>

Работа с сессиями (Session) в Java

Если выбрать все cookies нашего веб-ресурса, то там всегда будет кук с именем SESSIONID и значением идентификатором. Этот идентификатор уникален для к...

Small Image 1Small Image 2Small Image 3

<Servlet Context/>

Интерфейс ServletContext

ServletContext – контекст является объектом общим для всего приложения. В объекте ServletContext можно хранить какие-либо данные общие для всех ...

Small Image 1Small Image 2Small Image 3

<Servlet Config/>

Интерфейс ServletConfig

ServletConfig – можно сказать, что то же самое, что и ServletContext, но в отличии от него хранит данные касающиеся только конкретного сервлета....

Small Image 1Small Image 2Small Image 3

<EncodeURL/>

encodeURL и encodeRedirectURL в Java сервлетах

Часто так бывает, что клиент отключил cookies в браузере, а id сессии храниться в cookies, а как-то поддерживать сессию надо. Выход есть. Для этого ну...

Small Image 1Small Image 2Small Image 3

<Servlet Sync/>

Синхронизация в Java сервлете

По умолчанию все клиенты обращаются к одному созданному объекту сервлета. Каждое обращение клиента к этому объекту создает отдельный поток, в котором ...

Small Image 1Small Image 2Small Image 3

<Filter/>

Что такое Filter в Java сервлетах

Часто бывает, что нужно чтобы перед вызовом какого-либо сервлета или после вызова выполнялся какой-либо код. Для этого нужно реализовать интерфейс Fil...

Small Image 1Small Image 2Small Image 3

<Listeners/>

Слушатели (Listeners) в Java сервлетах

Часто бывает нужно проследить выполнение каких-то действий в сессии или контексте и т.д. Для этого используются слушатели. Например, для прослушивания...

Small Image 1Small Image 2Small Image 3

<Async Context/>

Оптимизация сервлетов с AsyncContext

Представим ситуацию, что сервлет ожидает завершения какого-то процесса выполняющегося в другом потоке, чтобы в последствии использовать результат его ...

Раздел 15: JSP

Small Image 1Small Image 2Small Image 3

<Java Server Pages (JSP)/>

Азы работы с Java Server Pages (JSP)

Для начала создадим папку jsp в папке приложения helloservlet. В ней будут храниться jsp файлы. Также создадим здесь файлик с расширением .jsp. JSP &#...

Small Image 1Small Image 2Small Image 3

<Comments/>

Комментарии в JSP

На JSP странице можно пользоваться двумя видами комментариев. <%—-%> и <!—->. Первый это jsp комментарий, второй это html комм...

Small Image 1Small Image 2Small Image 3

<Implicit Objects/>

Неявные объекты в JSP: session, request и др.

Допустим, мы хотим как в сервлете использовать на нашей JSP странице req и resp метода doGet. Где их взять? Для этого придумали специальные неявные об...

Small Image 1Small Image 2Small Image 3

<ActionBeans/>

Что такое actionBeans в JSP?

Мы рассмотрели action теги invoke и forward. Среди часто употребляемых еще есть useBean, setProprety, getProprety. Бин – это объект обычного кла...

Small Image 1Small Image 2Small Image 3

<MVC Pattern/>

Паттерн MVC в веб-разработке на Java

MVC – MODEL, VIEW, CONTROLLER. Популярная архитектура построения приложений. Нужно знать. Клиент может передавать какие либо данные в CONTROLLER...

Small Image 1Small Image 2Small Image 3

<Expression Language/>

Expression Language (EL) in JSP

В прошлом уроке мы извлекали созданный в контроллере бин с помощью actioBean. Чтобы для создания и получения бина не писать вот так: <jsp:useBean i...

Small Image 1Small Image 2Small Image 3

<JSTL/>

Работа с JSP Standard Tag Library (JSTL)

JSTL — это теговая альтернатива стандартному Java-коду на JSP. То есть все стандартные конструкции типа создания переменных, циклов, условий, исключен...

Раздел 16: Шаблоны проектирования

Small Image 1Small Image 2Small Image 3

<Design Patterns/>

Что такое шаблоны проектирования? Шаблон Factory

При проектировании того или иного программного продукта разработчик сталкивается с большим количеством проблем. И многие из этих проблем бывают ТИПИЧН...

Small Image 1Small Image 2Small Image 3

<Singleton/>

Шаблон Singleton: обеспечение единственного экземпляра

Singleton – класс, который гарантировано имеет только один экземпляр. Используется, как какой-то глобальный ресурс доступ к которому есть в любо...

Small Image 1Small Image 2Small Image 3

<Data Access Object/>

Шаблон DAO: работа с БД через объект

Data Access Object. Нужен чтобы отделить низкоуровневый доступ к данным от высокоуровневых сервисов. Низкоуровневый доступ – это, например, взаи...

Small Image 1Small Image 2Small Image 3

<Front Controller/>

Шаблон Front Controller: централизованная обработка запросов

Вся суть паттерна Front Controller в том, что все запросы обрабатываются централизовано через одно место. То есть любой запрос сначала идет в Front Co...

Small Image 1Small Image 2Small Image 3

<Template/>

Шаблон Template: поведение по умолчанию

Template – это просто абстрактный класс, который задает скелет для расширяющих его классов. Приведем пример из жизни. Например, наша жизнь: Рожд...

Раздел 17: Spring Framework

Small Image 1Small Image 2Small Image 3

<Spring Framework/>

Что такое Spring Framework и зачем он нужен

В разделе по сервлетам мы уже встречались с так называемыми бинами — это обычные объекты классов с приватными полями, геттерами и сеттерами. Так вот, ...

Small Image 1Small Image 2Small Image 3

<DI Using Setter/>

Внедрение зависимостей с помощью сеттера.

Помним, что в прошлом уроке внедрение админа в ПК происходило с помощью конструктора в классе ПК. Но внедрять также можно с помощью сеттера Класс Serv...

Small Image 1Small Image 2Small Image 3

<Injecting File Fields/>

Внедрение значений из внешнего файла в поля бина.

Внедрять значения в поля бина можно не напрямую, а из внешнего файла. Давайте же создадим такой файл, в котором будут харнится данные в формате имя-зн...

Small Image 1Small Image 2Small Image 3

<Spring Scopes/>

Области видимости бинов (Spring Scopes)

Бин может иметь область, в которой он действует. Их 5: singleton, prototype, request, session и global-session. По дефолту scope у бина singleton. Это...

Small Image 1Small Image 2Small Image 3

<Spring Bean Lifecycle/>

Жизненный цикл Spring-бина

Жизненный цикл спринг бина таков: Что же это за init-method и destroy-method? Это что-то типа init и destroy методов в сервлете. Как мы помним, init м...

Small Image 1Small Image 2Small Image 3

<Annotation-driven Config/>

Конфигурация Spring бинов с помощью аннотаций

Как уже было упомянуто в конце прошлого урока, бины можно создавать не в applicationContext.xml, а аннотациями прямо в классах бинов. Благодаря этому ...

Small Image 1Small Image 2Small Image 3

<@Autowired/>

Аннотация @Autowired в Spring Framework

В прошлом уроке мы внедряли бин админа в бин ПК с помощью конструктора или сеттера помеченных аннотацией @Autowired. Но аннотация @Autowired намного м...

Small Image 1Small Image 2Small Image 3

<Class-driven Config/>

Конфигурация Spring бинов с помощью java класса.

Иногда удобнее бывает конфигурировать бины не с помощью XML, а с помощью Java кода. То есть теперь вместо applicationContext.xml у нас будет Java клас...

Раздел 18: Spring MVC

Small Image 1Small Image 2Small Image 3

<Eclipse IDE Web App/>

Создание веб-приложения в Eclipse IDE

До данного урока мы компилировали и запускали приложения вручную через консоль. Давайте же с началом изучения темы spring MVC переместимся в удобную с...

Small Image 1Small Image 2Small Image 3

<Spring MVC/>

Основы Spring MVC. Как работает DispatcherServlet

Что же такое Spring MVC? Это набор средств для построения веб-приложений. Подобных тем приложениям, которые мы уже разрабатывали, но в отличии от разр...

Small Image 1Small Image 2Small Image 3

<Request Mapping/>

Аннотация RequestMapping

Классов контроллеров в MVC-приложении может быть много. Давайте создадим еще один контроллер – Controller2. В адресе можно указать не только обр...

Small Image 1Small Image 2Small Image 3

<Form Data Handling/>

Обработка дынных формы в Spring MVC, передача данных в Model

Давайте создадим приложение в котором: Для начала, нужно создать страницу формы через которую пользователь будет отправлять данные в обработчик и стра...

Small Image 1Small Image 2Small Image 3

<Spring Form Tag/>

Специальный тег Form в Spring

В спринг есть специальные теги, которые упрощают нам разработку. В этом уроке рассмотрим специальный тег form:form. Тег form:form обеспечивает прямую ...

Small Image 1Small Image 2Small Image 3

<Spring Form Tags/>

Теги Spring Form: Select, Radio, Checkbox

Помимо тега form:input, рассмотренного в прошлом уроке, есть также и другие теги с которыми мы можем связывать поля объекта в аттрибуте. В этом уроке ...

Small Image 1Small Image 2Small Image 3

<Form Validation/>

Валидация форм в Spring MVC

Валидация – это проверка данных формы на то подходят ли они под какие-то условия. Для начала необходимо скачать hibernate validator. Можно скача...

Раздел 19: Hibernate

Small Image 1Small Image 2Small Image 3

<Hibernate/>

Введение в ORM с использованием Hibernate

Hibernate реализует ORM-модель построения приложений. Благодаря ORM можно сохранить объект в базу данных. При сохранении какого-либо объекта в базу да...

Small Image 1Small Image 2Small Image 3

<HQL Lang/>

Обзор языка запросов HQL в Hibernate

В hibernate используется HQL, а не SQL. HQL работает с таблицей через класс, который связан с ней. То есть в запросе к БД мы указываем не название таб...

Small Image 1Small Image 2Small Image 3

<HQL Update/>

HQL: обновление данных (Update)

Если мы извлекли из таблицы строку в объект, а потом изменили его с помощью например сеттера, то после коммита транзакции он измениться и в базе. pack...

Small Image 1Small Image 2Small Image 3

<HQL Delete/>

HQL: удаление данных (Delete)

Если извлечь строку таблицы в объект, а потом применить метод delete на этот объект, то строка, которую мы извлекали удалиться в базе данных. Таким об...

Small Image 1Small Image 2Small Image 3

<Hibernate Relationships/>

Настройка связей в Hibernate приложении

В базе данных обычно существуют связанные таблицы. Все стандартные виды связей (1-к-1, 1-ко-Многим, Многие-Ко-Многим) можно реализовать и между java к...

Small Image 1Small Image 2Small Image 3

<Bidirectional Relation/>

Двусторонняя связь между сущностями в Hibernate

Связь между объектами таблиц была односторонняя, то есть через объект Author удалялся из БД или сохранялся в БД связанный объект AuthorInfo. Теперь сд...

Small Image 1Small Image 2Small Image 3

<One-to-Many/>

Настройка связи Один-ко-Многим в Hibernate

Теперь настроим в нашем приложении связь 1-ко-Многим. Создадим еще одну таблицу “Книги авторов”, которая будет связана с таблицей author. ...

Small Image 1Small Image 2Small Image 3

<Fetch Types/>

Типы извлечения данных в Hibernate (fetch types)

LAZY, EAGER – это типы извлечения данных. Подробнее ниже. package HibernateApps; import java.util.List; import javax.persistence.CascadeType; im...

Small Image 1Small Image 2Small Image 3

<Many-to-Many/>

Настройка связи Многие-ко-Многим в Hibernate приложении

Теперь настроим в нашем приложении связь Многие-ко-Многим. Пусть теперь в нашем приложении будет еще одна новая таблица – “Издательство...