Как стать автором
Обновить

Что такое сервлет и зачем нужен портлет?

Java *
И так, дорогие друзья, я планирую открыть блог, посвящённый портальным технологиям.
Для разогрева, предлагаю вам коротенький рассказик, прочитав которую, вы узнаете что такое сервлет и зачем изобрели портлет. Места мало, обо всем напишу кратенько. Переписывать книжки, коих выпущено не одна сотня, я не собираюсь. Я буду писать о общих вещах, а так же о приёмах, которые существенно упрощают жизнь разработчику. Если вы хотите узнать больше, то лучше http://java.sun.com/javaee/index.jsp
вряд ли что-то может быть.
Приготовьтесь, вы ощутите мощь Java EE.
Начать ощущать
Всего голосов 23: ↑18 и ↓5 +13
Просмотры 95K
Комментарии 29

Настройка среды разработки отладки портлетов, запуск HelloWorld портлета.

Java *

Цель:


Настроить среду для разработки и отладки портлетов из-под Windows XP.
Запустить первое портлетное приложение и понять, что установка прошла успешно.

Продолжение портлетоэпопеи
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 4K
Комментарии 42

Недокументированная возможность в WebSphere Portal 5.1 (общая сессия для портлета и сервлета)

Java *

Была следующая задача:

написать портлет, который отображает график отчета, хранящегося в Когносе. Отчет Когноса может строиться очень и очень долго, от нескольких секунд до 20.
Заставлять ждать пользователя столько времени — ужасное решение.
Что же делать?
Всего голосов 2: ↑2 и ↓0 +2
Просмотры 1.1K
Комментарии 5

Отладка Java-сервлетов

Java *
Несмотря на то, что я пишу на Java уже 2 месяца (о да, это срок :) ), я ни разу не запускал remote debugger. При разработке на GWT этого делать и не нужно — оно как-то само всё это делает. :) Но вот настала весна, моё GWT приложения распустилось, и хочет, чтобы я его выложил на сервер. Но вдруг выяснилось, что просто так оно работать не захотело. А почему, я понять не могу. И значит мне нужен дебагер.

Принцип работы наверное любого удалённого отладчика (remote debugger) прост — контейнер (это может быть и какой-либо сервлет-контейнер, и php-интерпритатор. Полагаю, что интерпритаторы Ruby, Perl, Python работают аналогичным образом), который выполняет приложение настраивается таким образом, что при запуске приложения он либо начинал слушать определенный порт, либо сам пытался коннектиться куда-либо.
Читать дальше →
Всего голосов 12: ↑8 и ↓4 +4
Просмотры 7.2K
Комментарии 5

Получение файла с сервера с обработкой возможных ошибок

Чулан
Для одной из наших интранет-систем мы делали простой поиск по содержимым файлов, присоединённых к официальным документам. Результатом поиска был список имён файлов и ссылок на сервлет, эти файлы выгружающий. Сервлет читает файл по его идентификатору из хранилища и выдаёт его с «Content-Type: application/octet-stream» или MIME-типу, соответствующему файлу. Но как поступить, если на сервере произошла ошибка, как сказать об этом оператору? Можно было бы устроить переадресацию на страницу с сообщением, но это неудобно — надо возвращаться назад, где введённые в формы данные потеряны.
С другой стороны, можно вызвать сервлет через AJAX XmlHttpRequest и вывести сообщение об ошибке, но как же тогда вернуть файл? Функции обратных вызовов объекта XHR не работают с пришедшими с сервера двоичными данными и не смогут показать стандартный браузерный диалог «Сохранить/загрузить файл».
Как быть?
Всего голосов 4: ↑2 и ↓2 0
Просмотры 3.6K
Комментарии 1

Java EE 6. Что нового в Servlet API 3.0

Java *


С выходом Java EE 6 на ряду со значительными изменениями в JPA 2.0 спецификации сервлетов 3.0 также притерпела ряд улучшений: упростилась разработка и процедура развертывания, конфигурирование стало более удобным, появилась поддержка асинхронных запросов и улучшилась модель безопасности. Далее я попытаюсь осветить основные изменения в API.

Программирование и развертывание сервлетов упростилось главным образом за счет введения аннотаций для декларирования сервлет (@WebServlet), фильтров (@WebFilter), листнеров (@WebListener) и ограничений безопасности (@ServletSecurity). Таким образом, и дескриптор развертывания web.xml стал опциональным элементом. Обращаю внимание, что сами компоненты Servlet API не стали POJO, привычную иерархию интерфейсов и классов никто не отменял. Также добавилась аннотация для поддержки загрузки файлов @MultipartConfig и для установки параметров инициализации @WebInitParam.

Пример Hello World сервлета
package net.ismailov.tests;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name="hw", urlPatterns = "/hello_world")
public class HelloWorld extends HttpServlet{

  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    PrintWriter writer = response.getWriter();
    writer.println("<h1>Hello, World!</h1>");
    
  }

}


Читать дальше →
Всего голосов 47: ↑37 и ↓10 +27
Просмотры 21K
Комментарии 34

Сервлеты и Reflection

Java *
Из песочницы
Совсем недавно, в статье Сервлеты — маленький трюк с Reflection, разбирался прием, с помощью которого можно получить url вида:
host/servletName/methodName.

Если пойти дальше, то с помощью Reflection можно реализовать конструкцию следующего вида:
Controllers


Где, у нас в проекте есть несколько классов контроллеров, и у каждого из них свои действия. А самое главное, в методы контроллеров мы можем передавать параметры из URI. Например:
host/servletName/projects/add?title=hello

Читать дальше →
Всего голосов 6: ↑5 и ↓1 +4
Просмотры 5.6K
Комментарии 7

@Autowired для сервлетов в OSGi-контейнере

Java *
Из песочницы
Вместо введения отправляю читателя к отличной статье Использование Spring в OSGi-контейнере которая и послужила отправной точкой для практического изучения.
Итак, к делу. Рассмотрим классический вариант — есть бизнес-логика приложения и она как-то
взаимодействует с внешним миром. Используем такую связку:
клиент <-> транспорт <-> приемник <-> сериализатор/десериализатор <-> метод бизнес логики.
Сериализатор напрашивается заменяемым модулем, например сериализация в JSON или сериализация в XML.
Про бизнес-логику далее можно забыть, и сосредоточиться на связке приемника и сериализатора.
В качестве приемника используем сервлет, а для сериализатора, для простоты, используем реализацию следующего интерфейса:
Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 3.1K
Комментарии 2

Вышел Grails 2.0

Чулан
После года разработки и трех релиз-кандидатов команда SpringSource презентовала новую версию веб фреймворка — Grails 2.0. Я часто использую Grails в своих проектах и внимательно слежу за процессом разработки и выпуска новых релизов.

Интересно заметить, что изначально релиз планировался под версией Grails 1.4, но фундаментальных изменений оказалось слишком много, и Grails присвоили версию 2.0.
Итак перечислю, что нового появилось в новой реинкарнации Grails:
Читать дальше →
Всего голосов 17: ↑8 и ↓9 -1
Просмотры 890
Комментарии 1

Использование фильтра сервлетов для «всплытия» страницы из фрейма

Google App Engine *Google API *
Из песочницы
Добрый день!

В одном проекте мне потребовалось сохранять контакты в Google Contacts. Это несложно — надо только авторизоваться через OAuth в Google и получить ключ доступа. Но дело в том, что при этом делается переход на сайт Google, где собственно происходит авторизация и подтверждение доступа приложения к контактным данным. Я же предполагал делать работу с контактом в iframe, а в целях предотвращения clickjacking'а Google не позволяет этого делать. Стало быть, требуется как-то сделать, чтобы страница OAuth открывалась в главном окне, а не во фрейме. Мой вариант решения — под катом.
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 5.4K
Комментарии 2

Как web-страницу легко превратить в PDF?

Разработка веб-сайтов *Java *PDF
Tutorial

Для меня было очень неожиданно то, что в хабе по Java практически нет информации по работе с PDF документами, поэтому я, из личного опыта, хочу на примере сервлета показать как легко можно любую web-страницу превратить в PDF документ.
Читать дальше →
Всего голосов 10: ↑8 и ↓2 +6
Просмотры 32K
Комментарии 25

Строим веб-приложение на Java без JEE и Spring

Java *
Tutorial


Данная статья будет интересна тем, кто вдруг осознал, что ему хочется
попробовать создать что-то без навязанного обществом JEE и Spring.

Вы, о дорогой Java Смельчак, не хотите быть винтиком в огромном механизме вашего Фреймворка?
Вам надоело чувствовать себя «машинисткой» по написанию конфигов и настроек?
Вы хотите решать задачи так, как хочется вам, а не так, как это видится автору унифицированной на нужды
миллионов библиотеки?

Тогда добро пожаловать под кат, где я поделюсь с вами полезными находками Мира без Фреймворка.

Читать дальше →
Всего голосов 49: ↑30 и ↓19 +11
Просмотры 37K
Комментарии 30

Разработка веб-приложения

Разработка веб-сайтов *Java *Библиотека ExtJS/Sencha *
Tutorial
Привет, Хабр!

При изучении технологий Ext JS и Java, написал web-приложение «Каталог автомобилей». Хочу поделиться с Вами этим опытом.

Вид и функциональность приложения


  • Добавление;
  • Удаление;
  • Редактирование;
  • Поиск;
  • Валидация данных;


Читать дальше →
Всего голосов 77: ↑34 и ↓43 -9
Просмотры 91K
Комментарии 19

JSF 2 + Maven + Jetty. Подготовка

Java *
Recovery mode
Tutorial
С момента последней публикации о JSF 2 вышла новая версия — JSF 2.3.0. Это знаковое событие мотивировало на написание статьи. В этой части мы подготовим и запустим базовое приложение на JavaServer Faces.
Читать дальше →
Всего голосов 14: ↑4 и ↓10 -6
Просмотры 4.8K
Комментарии 10

Hibernate+jsp при поддержке сервлетов

Java *
Recovery mode
Tutorial
Всем привет! В этой статье я расскажу о том, как связать JSP с Hibernate при помощи сервлета. Я надеюсь, что вы умеете работать с Hibernate, если же нет, то настоятельно рекомендую прочитать эту статью. Также я надеюсь, что вы знакомы с сервлетами и хоть раз их успешно запускали.

Для того, чтобы у вас была такая же база данных в MySQL, вставьте туда следующий код:

CREATE SCHEMA `hero` ;

CREATE TABLE `hero`.`heroes`
(
`idhero` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
PRIMARY KEY (`idhero`));

Создаём maven проект и вставляем следующие зависимости и не только:
Читать дальше →
Всего голосов 15: ↑5 и ↓10 -5
Просмотры 8.4K
Комментарии 8

JSF 2 + Maven + Jetty. CDI, форма и AJAX

Java *
Recovery mode
Tutorial
В этот раз у нас появится Java-код. Будем писать форму и логику обработки введенных данных. Пост НЕ для тех, кто знает что такое JSF 2 и/или JSF 1.2, а faces-config.xml — не просто файл в проекте. Смотрите, я предупреждал…
Читать дальше →
Всего голосов 12: ↑3 и ↓9 -6
Просмотры 3.6K
Комментарии 6

Создание сервлетов для чайников. Пошаговое руководство

Java *
Recovery mode
Из песочницы
image

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

Итак.

Предположим, что Вы уже где-то скачали пример с применением maven и Вам удалось задеплоить Ваш код на Tomcat (с этого обычно начинается познание сервлетов) любым способом (WAR-архивом или прямо из среды разработки). Вы имеете структуру приложения, в которой присутствует файл web.xml. C него и надо начинать создание страниц.
Читать дальше →
Всего голосов 19: ↑13 и ↓6 +7
Просмотры 123K
Комментарии 28

Конкуренция в сервлетах

Блог компании OTUS Программирование *Java *
Перевод
Всем привет!

Мы запускаем седьмой поток курса «Разработчик Java». Больше, чем за год существования этого курса он дорабатывался, оттачивался, добавлялось новое, что выходило за это время. Этот же поток отличается от остальных тем, что мы ввели новую систему ступеней разбив курс на три части и чуть увеличив его общую длительность. Так что теперь не надо будет выбиваться из сил пять месяцев подряд для получения сертификата, а спокойно выбрать периоды по два месяца и пройти обучения. Но это лирика, вернёмся к нашей традиции о разных полезностях предшествующих запуску курса.

Поехали.

1. Обзор


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

Как мы уже говорили ранее, создается один и только один экземпляр сервлета, и для каждого нового запроса Servlet Container создает новый поток для выполнения doGet() или doPost() методов сервлета.

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

2. Обзор потоков


Читать дальше →
Всего голосов 11: ↑7 и ↓4 +3
Просмотры 5.1K
Комментарии 9

Создаем простой maven проект с использованием Java EE + WildFly10 + JPA (Hibernate) + Postgresql + EJB + IntelliJ IDEA

Java *
Из песочницы
В данной статья я расскажу, как сконфигурировать проект на JBoss с использование JPA. В подробности JPA, Hibernate, EJB лезть не буду, это отдельная тема. Просто покажу структуру проекта, как настроить datasource на WildFly и все это запустить в IntelliJ IDEA. Данный каркас, я думаю, будет полезен новичкам, работающим с JavaEE и JPA.
Читать дальше →
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 21K
Комментарии 11

Вы часто используете null? А он у нас в спецификации

Программирование *Java *

В нынешнее время для большинства разработчиков стали очевидными минусы использования null как возвращаемых типов или передачи их как аргумента.

Младшие разработчики даже если не понимают, то обычно следуют "чистому коду" (прочитав книжку Роберта Мартина). Поэтому код с возможностью возникновения NPE стал встречаться реже, хотя, конечно, они есть.

Не хочу сказать, что любое использование null - это плохо, скорее тут можно сказать "семь раз отмерь, один раз отрежь".

Тем не менее, я долгое время не жаловался насчет NPE, даже когда разработчики с языков у которых строгий контроль на эту тему хвастались своим null-safety. Но из-за одного бага я понял, что просто использование null - это не так страшно, даже если вы возвращаете или передаете его. Разумеется, это очень плохо, но есть вещи хуже - null в спецификациях.

Было бы не особо интересно, если рассказ был об одной компании, которая сделала плохую спецификацию. Давайте вместо этого поговорим о более известной спецификации из Java EE - Java Servlet Specification, а конкретно возьмем класс HttpServletRequest и заглянем в метод getCookies()

Читать далее
Всего голосов 19: ↑15 и ↓4 +11
Просмотры 5.9K
Комментарии 12
1