// API callback
related_results_labels_thumbs({"version":"1.0","encoding":"UTF-8","feed":{"xmlns":"http://www.w3.org/2005/Atom","xmlns$openSearch":"http://a9.com/-/spec/opensearchrss/1.0/","xmlns$blogger":"http://schemas.google.com/blogger/2008","xmlns$georss":"http://www.georss.org/georss","xmlns$gd":"http://schemas.google.com/g/2005","xmlns$thr":"http://purl.org/syndication/thread/1.0","id":{"$t":"tag:blogger.com,1999:blog-8798235924082241388"},"updated":{"$t":"2024-12-19T05:31:42.519+02:00"},"category":[{"term":"Interview"},{"term":"Java Developer"},{"term":"Front-End Developer Other"},{"term":"Java Developer (advanced)"},{"term":"JSP Servlets JSTL"},{"term":"Java core"},{"term":"Java Collections Framework"},{"term":"Spring Framework"},{"term":"Apache Ant"},{"term":"Bootstrap"},{"term":"Java 8"},{"term":"Java Persistence API"},{"term":"Java Questions List"},{"term":"Java Server Faces"},{"term":"JavaScript"},{"term":"Maven"},{"term":"Multithreading"},{"term":"ORM Hibernate"},{"term":"SQL"},{"term":"jQuery"},{"term":"Потоки ввода\/вывода в java"},{"term":"AngularJS"},{"term":"CSS"},{"term":"Front-End. Questions List"},{"term":"HTML"},{"term":"JDBC"},{"term":"JMS"},{"term":"JSON"},{"term":"Java Advanced. Questions List"},{"term":"Log4j"},{"term":"MongoDB"},{"term":"OOP"},{"term":"UML"},{"term":"Web services"},{"term":"XML"},{"term":"design patterns"},{"term":"Базы данных"},{"term":"Основы WEB"},{"term":"Сериализация"},{"term":"Тестирование JUNIT"}],"title":{"type":"text","$t":"Вопросы на собеседование Junior Java Developer."},"subtitle":{"type":"html","$t":"Вопросы и ответы на собеседование Java Junior Developer."},"link":[{"rel":"http://schemas.google.com/g/2005#feed","type":"application/atom+xml","href":"https:\/\/jsehelper.blogspot.com\/feeds\/posts\/default"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/-\/Interview?alt=json-in-script\u0026max-results=8"},{"rel":"alternate","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/search\/label\/Interview"},{"rel":"hub","href":"http://pubsubhubbub.appspot.com/"},{"rel":"next","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/-\/Interview\/-\/Interview?alt=json-in-script\u0026start-index=9\u0026max-results=8"}],"author":[{"name":{"$t":"vasyl1889"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/06654290728126534362"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"generator":{"version":"7.00","uri":"http://www.blogger.com","$t":"Blogger"},"openSearch$totalResults":{"$t":"60"},"openSearch$startIndex":{"$t":"1"},"openSearch$itemsPerPage":{"$t":"8"},"entry":[{"id":{"$t":"tag:blogger.com,1999:blog-8798235924082241388.post-7783622977873258717"},"published":{"$t":"2016-12-20T08:02:00.001+02:00"},"updated":{"$t":"2016-12-20T08:02:44.394+02:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Interview"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Java core"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Java Developer"}],"title":{"type":"text","$t":"Ответы на вопросы на собеседование Java core (часть 4)."},"content":{"type":"html","$t":"\u003Cdiv dir=\"ltr\" style=\"text-align: left;\" trbidi=\"on\"\u003E\n\u003Cdiv\u003E\n\u003Ch3\u003E\n\u003Cul style=\"text-align: left;\"\u003E\n\u003Cli style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif; text-align: justify;\"\u003EЧто такое рефлексия?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EРефлексия используется для получения или модификации информации о типах во время выполнения программы. Этот механизм позволяет получить сведения о классах, интерфейсах, полях, методах, конструкторах во время исполнения программы. При этом не нужно знать имена классов, методов или интерфейсов. Также этот механизм позволяет создавать новые объекты, выполнять методы и получать и устанавливать значения полей.\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Ch3\u003E\n\u003Cul style=\"text-align: left;\"\u003E\n\u003Cli style=\"text-align: left;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif; text-align: justify;\"\u003EЧто произойдет со сборщиком мусора (GC), если во время выполнения метода finalize() некоторого объекта произойдет исключение?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВо время старта JVM запускается поток finalizer, который работает в фоне. Этот поток имеет метод runFinalizer, который игнорирует все исключения методов finalize объектов перед сборкой мусора.\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EТо есть если во время выполнения метода finalize возникнет исключительная ситуация, его выполнение будет остановлено и это никак не скажется на работоспособности самого сборщика мусора (garbage collector).\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто такое интернационализация, локализация?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EИнтернационализация (internationalization, а для краткости - i18n) - такой способ создания приложений, при котором их можно легко адаптировать для разных аудиторий, говорящих на разных языках.\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЛокализацияlocalization а для краткости - l10n) - \u0026nbsp;адаптация интерфейса приложения под несколько языков. Добавление нового языка может внести определенные сложности в локализацию интерфейса.\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003EЧто такое Аннотации в Java?\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\n\u003C\/span\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EАннотации - это своего рода метатеги, которые добавляются к коду и применяются к объявлению пакетов, классов, конструкторов, методов, полей, параметров и локальных переменных. Аннотации всегда обладают некоторой информацией и связывают эти \"дополнительные данные\" и все перечисленные конструкции языка.\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EФактически аннотации представляют собой их дополнительные модификаторы, применение которых не влечет за собой изменений ранее созданного кода.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие функции выполняет Аннотации?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: left;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif; text-align: justify;\"\u003EАннотация выполняет следующие функции:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003C\/div\u003E\n\u003Col\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eдает необходимую информацию для компилятора;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eдает информацию различным инструментам для генерации другого кода, конфигураций и т. д.;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eможет использоваться во время работы кода;\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Cdiv style=\"text-align: left;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif; text-align: justify;\"\u003EСамая часто встречаемая аннотация, которую встречал любой программист, даже начинающий это @Override.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие встроенные аннотации в Java вы знаете?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВ языке Java SE определено несколько встроенных аннотаций, большинство из их являются специализированными. Четыре типа @Retention, @Documented, @Target и @Inherited - из пакета java.lang.annotation.\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EИз оставшиеся выделяются - @Override, @Deprecated, @SafeVarargs и @SuppressWarnings - из пакета java.lang. Широкое использование аннотаций в различных технологиях и фреймворках обуславливается возможностью сокращения кода и снижения его связанности.\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто делают аннотации @Retention, @Documented, @Target и @Inherited?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: left;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif; text-align: justify;\"\u003EЭти аннотации, имеют следующее значение:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@Retention - эта аннотация предназначена для применения только в качестве аннотации к другим аннотациям, позволяет указать жизненный цикл аннотации: будет она присутствовать только в исходном коде, в скомпилированном файле, или она будет также видна и в процессе выполнения. Выбор нужного типа зависит от того, как вы хотите использовать аннотацию.\u0026nbsp;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@Documented - это маркер-интерфейс, который сообщает инструменту, что аннотация должна быть документирована.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@Target - эта аннотация задает тип объявления, к которым может быть применима аннотация. Принимает один аргумент, который должен быть константой из перечисления ElementType, это может быть поле, метод, тип и т.д. Например, чтобы указать, что аннотация применима только к полям и локальным переменным: @Targer({ ElementType.FIELD, ElementTyle.LOCAL_VARIABLE } )\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@Inherited - это аннотация-маркер, которая может применяться в другом объявление аннотации, она касается только тех аннотаций, что будут использованы в объявлениях классов. Эта аннотация позволяет аннотации супер класса быть унаследованной в подклассе.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто делают аннотации @Override, @Deprecated, @SafeVarargs и @SuppressWarnings?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: left;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif; text-align: justify;\"\u003EЭти аннотации предназначены для:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@Override - аннотация-маркер, которая может применяться только к методам. Метод, аннотированный как @Override, должен переопределять метод супер класса.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@Deprecated - указывает, что объявление устарело и должно быть заменено более новой формой.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@SafeVarargs - аннотация-маркер, применяется к методам и конструкторам. Она указывает, что никакие небезопасные действия, связанные с параметром переменного количества аргументов, недопустимы. Применяется только к методам и конструкторам с переменным количеством аргументов, которые объявлены как static или final.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@SuppressWarnings - эта аннотация указывает, что одно или более предупреждений, которые могут быть выданы компилятором следует подавить.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакой жизненный цикл аннотации можно указать с помощью @Retention?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: left;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif; text-align: justify;\"\u003EСуществует 3 возможные варианты чтобы указать где аннотация будет жить. Они инкапсулированы в перечисление java.lang.annotation.RetentionPolicy. Это SOURSE, CLASS, RUNTIME.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ESOURCE - содержаться только в исходном файле и отбрасываются при компиляции.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ECLASS - сохраняются в файле, однако они недоступны JVM во время выполнения.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ERUNTIME - сохраняются в файле во время компиляции и остаются доступными JVM во время выполнения.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EК каким элементам можно применять аннотацию, как это указать?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: left;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif; text-align: justify;\"\u003EДля того чтобы ограничить использование аннотации её нужно проаннотировать. Для этого существует аннотация @Target.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@Target(ElementType.PACKAGE) - только для пакетов;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@Target(ElementType.TYPE) - только для классов;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@Target(ElementType.CONSTRUCTOR) - только для конструкторов;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@Target(ElementType.METHOD) - только для методов;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@Target(ElementType.FIELD) - только для атрибутов(переменных) класса;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@Target(ElementType.PARAMATER) - только для параметров метода;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@Target(ElementType.LOCAL_VARIABLE) - только для локальных переменных.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv style=\"text-align: left;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif; text-align: justify;\"\u003EВ случае если вы хотите, что бы ваша аннотация использовалась больше чем для одного типа параметров, то можно указать @Target следующим образом:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: justify;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi9pCn_HX_e-A3fE-xkiRugUibBJobFi0u9OTcRgkupxzVTQim9vgJjzXlYvf1R7udR5jKXUPzImNYnvqoDiPSBWwk1IT2RDuBPbcwgokciXOqoU8DXNiOre0zwdstW-CzAqAhTTs9WKnY\/s1600\/q075_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cimg border=\"0\" height=\"26\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi9pCn_HX_e-A3fE-xkiRugUibBJobFi0u9OTcRgkupxzVTQim9vgJjzXlYvf1R7udR5jKXUPzImNYnvqoDiPSBWwk1IT2RDuBPbcwgokciXOqoU8DXNiOre0zwdstW-CzAqAhTTs9WKnY\/s640\/q075_p01.jpg\" width=\"640\" \/\u003E\u003C\/span\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eтут мы говорим, аннотацию можно использовать только для параметров метода и для локальных переменных.\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак создать свою Аннотацию?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: left;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif; text-align: justify;\"\u003EНаписать свою аннотацию не так сложно, как могло бы казаться. В следующем коде приведено объявление аннотации.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: justify;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi5NbFr9hBOjK-xu2XxGDggpJeOiLpzmkcGwzbwCV39DRlhaP-xkG8JEHJ9ksJZM1t724zFuXtRZ6tSOoU7tP5maUcCf1E3Egy2sDaDhnS44X6hhXsq48qON0o1-IIaGOaGKvvnDMIIl8s\/s1600\/q076_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cimg border=\"0\" height=\"64\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi5NbFr9hBOjK-xu2XxGDggpJeOiLpzmkcGwzbwCV39DRlhaP-xkG8JEHJ9ksJZM1t724zFuXtRZ6tSOoU7tP5maUcCf1E3Egy2sDaDhnS44X6hhXsq48qON0o1-IIaGOaGKvvnDMIIl8s\/s640\/q076_p01.jpg\" width=\"640\" \/\u003E\u003C\/span\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eкак вы видите на месте где обычно пишут class или interface у нас написано @interface.\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСтруктура практически та же, что и у интерфейсов, только пишется @interface.\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E@interface - указывает на то, что это аннотация\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Edefault - говорит про то, что метод по умолчанию будет возвращать определённое значение.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EАннотация готова теперь ею можно пользоваться, также аннотацию можно сконфигурировать.\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EАтрибуты каких типов допустимы в аннотациях?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: left;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif; text-align: justify;\"\u003EАтрибуты могут иметь только следующие типы:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eпримитивы\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EString\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EClass или «any parameterized invocation of Class»\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eenum\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eannotation\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eмассив элементов любого из вышеперечисленных типов\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПоследний пункт надо понимать как то, что допустимы только одномерные массивы.\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто такое \u0026nbsp;JMX?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EУправленческие расширения Java (Java Management Extensions, JMX) - \u0026nbsp;API при помощи которого можно контролировать работу приложений и управлять различными параметрами удаленно в реальном времени. Причем управлять можно фактически чем угодно - лишь бы это было написано на Java. Это может быть микро-устройство типа считывателя отпечатка или система, включающая тысячи машин, каждая из которых предоставляет определенные сервисы. Данные ресурсы представляются MBean-объектами (управляемый Java Bean). JMX вошла в поставку Java начиная с версии 5.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие выгоды предлагает JMX?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВот как эти выгоды описывает Sun\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПростота реализации. Архитектура JMX основана на понятии \"сервера управляемых объектов\" который выступает как управляющий агент и может быть запущен на многих устройствах\/компьютерах, которые поддерживают JAVA.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМасштабируемость. Службы агентов JXM являются независимыми и могут быть встроены наподобие plug-in’ов в агента JMX. Компонентно-основанаая система позволяет создавать масштабируемые решения от крохотных устройств до очень крупных систем.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВозможность расширять концепцию в будущем. JMX позволяет создавать гибкие решения. Например, JMX позволяет создавать удобные решения, которые могут находить различные сервисы.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКонцентрация на управлении. JMX предоставляет сервися, разработанные для работы в распределенных средах и его API спроектировано для решений, которые управляют приложениями, сетями, сервисами и т.д.\u0026nbsp;\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто еще умеет JMX кроме дистанционного управления?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJMX делает гораздо больше, чем просто предоставляет рабочую оболочку для дистанционного управления. Она обеспечивает дополнительные услуги (services), способные занять ключевое место в процессе разработки. Приведу лишь краткое описание:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EEvent notification: Интерфейсы оповещают исполнителей и слушателей о событиях типа изменения атрибута, что позволяет MBean-компонентам общаться с другими MBean-компонентами или удалённым \"командным пунктом\" и докладывать об изменениях своего состояния\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EMonitor service: Monitor MBeans может посылать уведомления о событиях зарегистрированным слушателям. Слушателем может выступать другой MBean или управляющее приложение. В качестве основных атрибутов, для которых используется данное свойство, являются counter, gauge или string.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ETimer service: Timer MBean будет посылать уведомления зарегистрированным слушателям, с учётом определённого числа или временного промежутка.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EM-let service: М-let service может создавать и регистрировать экземпляры MBean-серверов. Список MBean-компонентов и имён из классов определяются в m-let-файле с помощью MLET -меток. URL указывает на месторасположения m-let-файла.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто такое MBean?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EMBeans - это Java-объекты, которые реализуют определенный интерфейс. Интерфейс включает:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003C\/div\u003E\n\u003Col\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eнекие величины, которые могут быть доступны;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eоперации, которые могут быть вызваны;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eизвещения, которые могут быть посланы;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eконструкторы.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие типы MBeans существуют?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСуществует 4 типа MBeans:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EStandard MBeans. Самые простые бины. Их управляющий интерфейс определяется набором методов\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EDynamic MBeans. Они реализуют специализированный интерфейс, который делают доступным во время исполнения.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EOpen MBeans. Это Dynamic MBeans, которые используют только основные типы данных для универсального управления.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EModel MBeans. Это Dynamic MBeans, которые полностью конфигурируемы и могут показать свое описание во время исполнения (нечто вроде Reflection)\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто такое MBean Server?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EMBean Server - это реестр объектов, которые используются для управления. Любой объект зарегистрированный на сервере становится доступным для приложений. Надо отметить, что сервер публикует только интерфейсы и не дает прямых ссылок на объекты. Любые ресурсы, которыми вы хотите управлять должны быть зарегистрированы на сервере как MBean. Сервер предоставляет стандартный интерфейс для доступа к MBean. Интересно, что регистрировать MBean может любой другой MBean, сам агент или удаленное приложение через распределенные сервисы. Когда вы регистрируете MBean вы должны дать ему уникальное имя, которое будет использовано для обращения к даному объекту.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие механизмы обеспечивают безопасность в технологии Java?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВ технологии Java безопасность обеспечивают следующие три механизма:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eструктурные функциональные возможности языка (например, проверка границ массивов, запрет на преобразования непроверенных типов, отсутствие указателей и т.д.).\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eсредства контроля доступа, определяющие действия, которые разрешается или запрещается выполнять в коде (например, может ли код получать доступ к файлам, передавать данные по сети и т.д.).\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eмеханизм цифровой подписи, предоставляющий авторам возможность применять стандартные алгоритмы для аутентификации своих программ, а пользователям - точно определять, кто создал код и изменился ли он с момента его подписания.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНазовите несколько видов проверок которые выполняет верификатор байт-кода Java?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНиже приведены некоторые виды проверок, выполняемых верификатором.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eинициализация переменных перед их использованием.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eсогласование типов ссылок при вызове метода.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eсоблюдение правил доступа к закрытым данным и методам.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eдоступ к локальным переменным в стеке во время выполнения.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eотсутствие переполнения стека.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПри невыполнении какой-нибудь из этих проверок класс считается поврежденным и загружаться не будет.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто вы знаете о \"диспетчере защиты\" в Java?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВ качестве диспетчера защиты служит класс, определяющий, разрешено ли коду выполнять ту или иную операцию. Ниже перечислены операции, подпадающие под контроль диспетчера защиты. Существует немало других проверок, выполняемых диспетчером защиты в библиотеке Java.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eсоздание нового загрузчика классов.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eвыход из виртуальной машины.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eполучение доступа к члену другого класса с помощью рефлексии.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eполучение доступа к файлу.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eустановление соединения через сокет.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eзапуск задания на печать.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eполучение доступа к системному буферу обмена.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eполучение доступа к очереди событий в AWT.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eобращение к окну верхнего уровня.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто такое JAAS?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJAAS (Java Authentication and Authorization Service - служба аутентификации и авторизации Java ) - служба JAAS, по существу, представляет собой встраиваемый прикладной интерфейс API, отделяющий прикладные программы на Java от конкретной технологии, применяемой для реализации средств аутентификации. Помимо прочего, эта служба поддерживает механизмы регистрации в UNIX и NT, механизм аутентификации Kerberos и механизмы аутентификации по сертификатам.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПосле аутентификации за пользователем может быть закреплен определенный набор полномочий. Входит в состав платформы Java начиная с версии Java SE 1.4.\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli style=\"text-align: justify;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто такое Рефакторинг?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EРефакторинг - процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы. В основе рефакторинга лежит последовательность небольших эквивалентных (то есть сохраняющих поведение) преобразований..\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Clink href=\"https:\/\/plus.google.com\/105527202953364202368\" rel=\"author\"\u003E\u003C\/link\u003E\n\u003C\/div\u003E\n"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/jsehelper.blogspot.com\/feeds\/7783622977873258717\/comments\/default","title":"Комментарии к сообщению"},{"rel":"replies","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/12\/java-core-4.html#comment-form","title":"Комментарии: 6"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/7783622977873258717"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/7783622977873258717"},{"rel":"alternate","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/12\/java-core-4.html","title":"Ответы на вопросы на собеседование Java core (часть 4)."}],"author":[{"name":{"$t":"vasyl1889"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/06654290728126534362"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi9pCn_HX_e-A3fE-xkiRugUibBJobFi0u9OTcRgkupxzVTQim9vgJjzXlYvf1R7udR5jKXUPzImNYnvqoDiPSBWwk1IT2RDuBPbcwgokciXOqoU8DXNiOre0zwdstW-CzAqAhTTs9WKnY\/s72-c\/q075_p01.jpg","height":"72","width":"72"},"thr$total":{"$t":"6"}},{"id":{"$t":"tag:blogger.com,1999:blog-8798235924082241388.post-3282162411793418680"},"published":{"$t":"2016-12-18T11:28:00.000+02:00"},"updated":{"$t":"2016-12-18T11:28:01.005+02:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Interview"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Java Developer (advanced)"},{"scheme":"http://www.blogger.com/atom/ns#","term":"JMS"}],"title":{"type":"text","$t":"Ответы на вопросы на собеседование JMS."},"content":{"type":"html","$t":"\u003Cdiv dir=\"ltr\" style=\"text-align: left;\" trbidi=\"on\"\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cb style=\"font-family: arial, helvetica, sans-serif;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто такое JNDI?\u003C\/span\u003E\u003C\/b\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJNDI - это API-интерфейс для доступа к службам каталогов, позволяющий клиентам осуществлять привязку и поиск объектов по имени. JNDI определяется в Java SE и не зависит от базовой реализации, то есть вы можете выполнять поиск объектов в каталоге Lightweight Directory Access Protocol (LDAP) или системе доменных имен (DNS), используя стандартный API-интерфейс.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто такое JMS?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJMS, Java Message Service - это Java API (то есть набор интерфейсов и классов) для работы с Message-Oriented Middleware, изначально разработанная компанией Sun, чтобы предоставить разработчикам создавать гибкие и слабосвязанные приложения с использованием асинхронного обмена данными между приложениями (клиентами\/серверами) через посредника. Асинхронность - это главная причина создания и использования JMS.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EДанный набор определен в пакете javax.jms в дереве пакетов J2EE. JMS поддерживает две модели обмена сообщениями: point-to-point(точка - точка) и publish-subscribe(издатель-подписчик).\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто такое MOM?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EMOM, Message-Oriented Middleware (промежуточное программное обеспечение) - подпрограммное обеспечение промежуточного слоя, ориентированное на обмен сообщениями в распределённом окружении. Прежде всего предназначено для реализации отложенного обмена сообщениями, на основе которого и строится Messaging System.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВ отличие от традиционных систем, \u0026nbsp;в Messaging System приложения общаются не напрямую, а посредством MOM. Если один компонент системы хочет послать сообщение другому компоненту, он посылает данное сообщение MOM, а MOM затем пересылает его адресату.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EИз каких компонентов состоит архитектура обмена сообщениями?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНа высоком уровне архитектура обмена сообщениями состоит из следующих компонентов.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПоставщик. JMS - это только API, поэтому он нуждается в реализации способа обмена сообщениями, то есть в поставщике (также известном как брокер сообщений). Поставщик обрабатывает буферизацию и доставку сообщений.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКлиенты. Клиентом является любое приложение Java или компонент, который производит или потребляет сообщение с помощью поставщика. \"Клиент\" - это общий термин для производителя, отправителя, издателя, потребителя, приемника и подписчика.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСообщения. Это объект, которые клиенты отправляют или получают от поставщика.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EАдминистрируемые объекты. Брокер сообщений должен предоставить клиенту администрируемые объекты (фабрики подключений и места назначения) с помощью поиска JNDI или внедрения (как вы увидите далее).\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие модели обмена сообщениями в JMS вы знаете? Опишите их.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСуществует две \"основных\" модели обмена сообщениями:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМодель Точка-Точка (Point-to-Point, P2P) - в этой модели место назначения, используемое для хранения сообщений, называется очередью. Объект Queue. В этой модели один клиент помещает сообщение в очередь, а другой получает сообщение. Как только получение сообщения подтверждено, поставщик сообщений удаляет его из очереди.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМодель Подписчик-Издатель (Publisher-Subscriber) - место назначения называется темой. Объект Topic. При использовании данной модели клиент публикует сообщение в теме и все абоненты этой темы получают сообщение.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНазовите основные интерфейсы JMX, для чего они предназначены.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EРассмотрим главные интерфейсы:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EConnectionFactory - это обьект, ответственный за создание JMS Connection. Администратор МОМ создает данный обьект и связывает его с деревом JNDI, так что клиент JMS может получить доступ к ConnectionFactory используя стандартный JNDI lookup-механизм. В параметре инициализации нужно передавать данные вашего JMS сервера. В случае point-to-point модели используется javax.jms.QueueConnectionFactory, в случае pub-sub модели - javax.jms.TopicConnectionFactor\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EConnection - абстрактное представление реального соединения между клиентом JMS и MOM. Создает объект Session. В случае point-to-point модели используется javax.jms.QueueConnection, в случае pub-sub модели - javax.jms.TopicConnection.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ESession - обьект, создаваемый JMS Connection и используемый клиентами для посылки и принятия сообщений. В случае point-to-point используется javax.jms.QueueSession, в случае pub-sub - javax.jms.TopicSession. Фактически, это главная \"рабочая лошадка\" JMS.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EDestination - это либо queue, либо topic - в зависимости от используемой модели: javax.jms.Queue или javax.jms.Topic. Как и ConnectionFactory, destination связывается с деревом JNDI.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EMessageProducer - обьект, который, собственно, и посылает сообщения. В случае point-to-point модели это javax.jms.QueueSender, в случае pub-sub - javax.jms.TopicPublisher.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EMessageConsumer - обьект, принимающий сообщения. В случае point-to-point модели это javax.jms.QueueReceiver, в случае pub-sub - javax.jms.TopicSubscriber.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EMessage - сообщение. О типах сообщений будет сказано ниже.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003Cul\u003E\n\u003Cli\u003EКак выглядит алгоритм создания программ, работающих с JMS?\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/span\u003E\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВесь алгоритм, можно просчитать по таблице интерфейсов. Выглядит он так:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПодключаемся к серверу, используя ConnectionFactory.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПолучаем соединение Connection из ConnectionFactory.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСоздаем однопоточный контекст Session из соединения.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПолучаем буфер Destination привязанный к определенному адресу для создания интерфейсов отправки и получения сообщений.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСоздание объектов MessageProducer для отправки или MessageConsumer для получения сообщений.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EОтдельно идет этап создания сообщения для отправки.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие стандартные типы сообщений определены JMX?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВ JMX определены следующие стандартные типы сообщений:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EStreamMessage - это поток примитивных типов Java. Считывать можно со стандартных интерфейсов ввода\/вывода.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EMapMessage - содержит информацию на подобии коллекций в виде ключ-значение (String, Object).\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ETextMessage - обычное текстовое сообщение содержащее строку\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EObjectMessage - для передачи Serializable-объектов.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EByteMessage - список не интерпретированных байт. С его помощью можно передавать файлы.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКроме того, некоторые имплементации (например, OpenFusion и WebLogic) предоставляют еще один \"почти стандартный\" тип:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EXMLMessage - расширение TextMessage, используется для доставки XMLсообщений\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВсе типы сообщений являются подклассами javax.jms.Message.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EИз каких частей JMS сообщение?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЛюбое JMS сообщение имеет в себе 3 составные части:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЗаголовок (header). Набор свойств, поставляемый по умолчанию для любого сообщения, содержит стандартную информацию для идентификации и маршрутизации сообщений.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСвойства (properties). Пары «имя\/значение», которые приложение может установить или считать; свойства также позволяют месту назначения фильтровать сообщения на основе их значений.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EТело (body). фактически содержит сообщение и может иметь один из нескольких форматов (текст, байты, объект и т. д.)\u003C\/span\u003E.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие параметры может содержать заголовок сообщения?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЗаголовок сообщения содержит дополнительную информацию, которую разработчик может использовать в своем приложении. JMS предоставляет get и set методы для каждого поля заголовка. Некоторые из них устанавливаются автоматически, другие могут быть использованы разработчиком приложения.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJMSDestination(тип String) - содержит имя destination, в который посылается сообщение.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJMSDeliveryMode (тип int) - определяет, является ли сообщение сохраняемым или нет. Может иметь только два значения: DeliveryMode.PERSISTENT и DeliveryMode.NON_PERSISTENT. Персистентное сообщение доставляется \"один раз и только один раз\"; не персистентное сообщение доставляется \"не более одного раза\". \"Не более одного раза\" подразумевает возможность отсутствия доставки.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJMSExpiration (тип long) - определяет, когда сообщение устареет и будет удалено из системы. 0 - означает что сообщение будет жить пока оно не будет доставлено.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJMSPriority (тип int) - как и следует из названия, определяет приоритет сообщения (от 0 до 9). По умолчанию равно 4.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJMSMessageID (тип String) - уникальный идентификатор сообщения\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJMSTimestamp (тип long)- содержит информацию, когда именно MOM приняла сообщение от producer.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJMSCorrelationID (тип String) - может быть использовано разработчиком для согласования сообщений: например, если вы хотите переслать ряд сообщений, обьединенных в одну логическую группу (такую как набор товаров в заказе, при этом в каждое сообщение о товаре вы можете добавить в данное поле заголовка номер заказа).\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJMSReplyTo (тип Destination) - может быть использовано разработчиком для того, чтобы consumer знал, кому (то есть в какой destination) при желании отсылать ответ.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJMSType (тип String) - поле может быть использовано разработчиком для того, чтобы дать приложению информацию, как обращаться с данным сообщением. Тип здесь понимается как application-specific type, а не тот, что использован выше в разделе \"типы сообщений\".\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJMSRedelivered (тип Boolean) - означает, что сообщение было доставлено получателю, но он не подтвердил прием сообщения.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003Cul\u003E\n\u003Cli\u003EКакие модели подтверждения получения сообщения вы знаете?\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/span\u003E\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJMS поддерживает три \"основных\" модели подтверждения получения сообщения.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EAUTO_ACKNOWLEDGE - в случае синхронного получения сообщений, подтверждение получения будет произведено автоматически, когда метод receive() возвратит значение не вызвав никакой исключительной ситуации. В случае асинхронного получения сообщений, подтверждение получения будет произведено, когда метод onMessage() вернет значение.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EDUPS_OK_ACKNOWLEDGE - работа по подтверждению получения сообщения перекладывается на Session. Сообщения будут вновь доставлены в случае возникновения ошибки или \"гибели\" системы.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ECLIENT_ACKNOWLEDGE - клиент должен вызвать метод acknowledge() интерфейса javax.jms.Message для того, чтобы явно подтвердить получение сообщения. При вызове данного метода будет подтверждено получение текущего и всех предадущих полученных сообщений.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Clink href=\"https:\/\/plus.google.com\/105527202953364202368\" rel=\"author\"\u003E\u003C\/link\u003E\n\u003C\/div\u003E\n"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/jsehelper.blogspot.com\/feeds\/3282162411793418680\/comments\/default","title":"Комментарии к сообщению"},{"rel":"replies","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/12\/jms.html#comment-form","title":"Комментарии: 0"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/3282162411793418680"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/3282162411793418680"},{"rel":"alternate","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/12\/jms.html","title":"Ответы на вопросы на собеседование JMS."}],"author":[{"name":{"$t":"vasyl1889"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/06654290728126534362"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-8798235924082241388.post-582191088842789609"},"published":{"$t":"2016-08-15T18:35:00.001+03:00"},"updated":{"$t":"2016-11-02T19:59:46.365+02:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Apache Ant"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Front-End Developer Other"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Interview"}],"title":{"type":"text","$t":"Ответы на вопросы на собеседование Apache Ant (часть 2)."},"content":{"type":"html","$t":"\u003Cdiv dir=\"ltr\" style=\"text-align: left;\" trbidi=\"on\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКраткое описание основных задач категории Archive Tasks.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EНаиболее часто встречающиеся задачи представлены ниже:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Ejar - упаковывает в Jar набор файлов.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eunzip - распаковывает zip архивы.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Ezip - создает zip архивы.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКраткое описание основных задач категории Compile Tasks.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EНаиболее часто встречающиеся задачи представлены ниже:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Ejavac - компилирует определенные исходные файлы внутри запущенной Ant’ом VM или с помощью новой VM, если fork атрибут определенилятор.\u003Ca name='more'\u003E\u003C\/a\u003E\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EjspC - запускает JSP-компилятор. Используется для предварительной компиляции JSP-страниц для более быстрого запуска их с сервера, или при отсутствии JDK на нем, или просто для проверки синтаксиса, без установки их на сервер.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Ewljspc - компилирует JSP-страницы, используя Weblogic JSP компилятор.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКраткое описание основных задач категории Execution Tasks.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EНаиболее часто встречающиеся задачи представлены ниже:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eant - запускает Ant для выбранного build файла, возможна передача параметров (или их новых значений). Эта задача может быть использована для запуска подпроектов.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EantCall - запускает другую цель внутри того же build-файла, по желанию передавая параметры.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eexec - исполняет системную команду. Когда атрибут os определен, команда исполняется, только если Ant запущен под определенную систему.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Ejava - исполняет Java класс внутри запущенной (Ant) VM или с помощью другой, если fork атрибут определен.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКраткое описание основных задач категории File Tasks.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EНаиболее часто встречающиеся задачи представлены ниже:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Ecopy - копирует файл или Fileset в новый файл или директорию.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Edelete - удаляет как один файл, так и все файлы и поддиректории в определенном каталоге, или набор файлов, определенных одним или несколькими FileSet’ами.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Emkdir - создает директорию. Несуществующие внутренние директории создадутся, если будет необходимость.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Emove - переносит файл в новый файл или каталог, или набор(ы) файлов в новую директорию.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКраткое описание основных задач категории Miscellaneous Tasks.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EНаиболее часто встречающиеся задачи представлены ниже:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eecho - выводит текст в System.out или в файл.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Efail - выходит из текущей сборки, генерируя BuildException, по желанию печатая сообщение.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Einput - позволяет пользователю интерактивно вмешиваться в процесс сборки путем вывода сообщений и считывания строки с консоли.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Etaskdef - добавляет задачу в проект, после чего она может быть использована в текущем проекте.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКраткое описание основных задач категории Property Tasks.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EНаиболее часто встречающиеся задачи представлены ниже:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eavailable - устанавливает параметр, если определенный файл, каталог, class в classpath, или JVM системный ресурс доступен во время выполнения.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Econdition - устанавливает параметр, если определенное условие выполняется.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EloadFile - загружает файл в параметр.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eproperty - устанавливает параметр (по имени и значению), или набор параметров (из файла или ресурса) в проект.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто представляет собой тип DirSet?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EDirSet - представляет собой набор каталогов. Эти каталоги могут находиться в базовой директории, и поиск осуществляется по шаблону. DirSet может находиться внутри некоторых задач или выноситься в проект с целью дальнейшего к нему обращения по ссылке. PatternSet (набор шаблонов) может быть использован как внутренняя задача. В дополнение DirSet поддерживает атрибуты PatternSet и внутренние \u0026lt;include\u0026gt;, \u0026lt;includesfile\u0026gt;, \u0026lt;exclude\u0026gt; и \u0026lt;excludesfile\u0026gt; элементы \u0026lt;patternset\u0026gt;.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие атрибуты DirSet вы знаете?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EDirSet имеет следующие атрибуты:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Edir - корневая директория этого DirSet, это обязательный атрибут.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eincludes - список шаблонов (через запятую или пробел) для каталогов, которые должны быть включены, если атрибут пропущен, все каталоги включаются, этот атрибут не обязателен.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eincludesfile - имя файла; каждая строчка этого файла понимается как шаблон для включения в поиск, этот атрибут не обязателен.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eexcludes - список шаблонов (через запятую или пробел) для каталогов, которые должны быть исключены, если атрибут пропущен, все каталоги включаются, этот атрибут не обязателен.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eexcludesfile - имя файла; каждая строчка этого файла понимается как шаблон для исключения из поиска, этот атрибут не обязателен.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Ecasesensitive - определяет влияние регистров для шаблонов (true|yes|on или false|no|off), этот атрибут не обязателен, но по умолчанию true.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто представляет собой тип FileSet?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EFileSet есть набор файлов. Эти файлы могут быть найдены в дереве каталогов, начиная с базовой директории и удовлетворяющие шаблонам. FileSet может находиться внутри некоторых задач или выноситься дальнейшего к нему обращения по ссылке.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие атрибуты FileSet вы знаете?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EFileSet имеет следующие атрибуты:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Edir \u0026nbsp;- корень каталогов этого FileSet.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Efile \u0026nbsp;- сокращение для определения Fileset из одного файла.(обязательно должен быть атрибут dir \u0026nbsp; либо file)\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eincludes - список шаблонов (через запятую или пробел) для каталогов, которые должны быть включены; если атрибут пропущен, все каталоги включаются, этот атрибут не обязателен.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eincludesfile - имя файла; каждая строчка этого файла понимается как шаблон для включения в поиск, этот атрибут не обязателен.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eexcludes - список шаблонов (через запятую или пробел) для каталогов, которые должны быть исключены; если атрибут пропущен, все каталоги включаются, этот атрибут не обязателен.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eexcludesfile - имя файла: каждая строчка этого файла понимается как шаблон для исключения из поиска, этот атрибут не обязателен.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Ecasesensitive - определяет влияние регистров для шаблонов (true|yes|on или false|no|off), этот атрибут не обязателен, но по умолчанию true.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто представляет собой тип PatternSet?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EPatternSet (набор шаблонов) - шаблоны могут быть сгруппированы в наборы и позже использованы путем обращения по ссылке. PatternSet может находиться внутри некоторых задач или выноситься в проект с целью дальнейшего к нему обращения по ссылке. Шаблоны могут определяться с помощью внутренних \u0026lt;include\u0026gt; или \u0026lt;exclude\u0026gt; элементов или с помощью следующих атрибутов:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eincludes - список шаблонов (через запятую или пробел) для каталогов, которые должны быть включены; если атрибут пропущен, все каталоги включаются.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eincludesfile - имя файла; каждая строчка этого файла понимается как шаблон для включения в поиск. Можно задавать несколько.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eexcludes - список шаблонов (через запятую или пробел) для каталогов, которые должны быть исключены; если атрибут пропущен, все каталоги включаются.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Eexcludesfile - имя файла; каждая строчка этого файла есть шаблон для исключения из поиска. Можно задавать несколько.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u0026nbsp;Атрибут рatternset может содержать внутри другой patternset.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак я могу использовать ant, чтобы запустить Java приложение?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВот реальный пример:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhASP8pFOS1CwP4CuEVLK7x0wlJ5gC3S3oWR8UB2zB3SQcbQsbQw3iPq9Xp_3llpdRUMkh8Wb5shOhnKQnRD2m8gSsZSIPVGET4DKvstZEsoQJn3TyXr7S97jm8xwnUSRrFq-9vRjMx67M\/s1600\/q026_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"276\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhASP8pFOS1CwP4CuEVLK7x0wlJ5gC3S3oWR8UB2zB3SQcbQsbQw3iPq9Xp_3llpdRUMkh8Wb5shOhnKQnRD2m8gSsZSIPVGET4DKvstZEsoQJn3TyXr7S97jm8xwnUSRrFq-9vRjMx67M\/s640\/q026_p01.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак установить property-файл в ant скрипт?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСледующий код демонстрирует это:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi-4DEXY932xydeumwj7A8PNwgJg0jmYdrSTWPfhmOjACPkuxtwN65qUco2emYnkzOYJAEOsGDA32yKuSRK5po3Y3YuB6iPxLSqHVENiME1N81sIFYXyRSjJsabdIEDAgSCgMNBpICvwtA\/s1600\/q027_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"128\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi-4DEXY932xydeumwj7A8PNwgJg0jmYdrSTWPfhmOjACPkuxtwN65qUco2emYnkzOYJAEOsGDA32yKuSRK5po3Y3YuB6iPxLSqHVENiME1N81sIFYXyRSjJsabdIEDAgSCgMNBpICvwtA\/s640\/q027_p01.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак импортировать jar-файлы?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПример:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjObj4BGtFEDLntXVGKkLA9Lk9NTexIz3IvgNzmUP-nPyfFepFYGw9cLIWnZdE2BRw0EG3exL1RqTQLqMRfUO9USAfonGg9GZSpLZYf6acBv6tz3_NMqHBrZ_UxotGcB632ReX0UX884_Y\/s1600\/q028_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"137\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjObj4BGtFEDLntXVGKkLA9Lk9NTexIz3IvgNzmUP-nPyfFepFYGw9cLIWnZdE2BRw0EG3exL1RqTQLqMRfUO9USAfonGg9GZSpLZYf6acBv6tz3_NMqHBrZ_UxotGcB632ReX0UX884_Y\/s640\/q028_p01.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак использовать clean в ant скрипте?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПример:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjryi4U575mVtTo7sEnnVuYRoTIjUYCOm23BtiSulgB12HqqUBLGrSXwjMgt417H115XpHEroFpFBxWKZDr0ihgs7Q9cB_Qf537dLEtjU1RcsfZrT6jCEsCv-VCEoYGTcxJC7n6Y-GinCc\/s1600\/q029_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"184\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjryi4U575mVtTo7sEnnVuYRoTIjUYCOm23BtiSulgB12HqqUBLGrSXwjMgt417H115XpHEroFpFBxWKZDr0ihgs7Q9cB_Qf537dLEtjU1RcsfZrT6jCEsCv-VCEoYGTcxJC7n6Y-GinCc\/s640\/q029_p01.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак компилировать с помощью ant?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПример:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEg604weWqgfaXfaCgYwuH0TpMPz3IB9dEzZBs8vkZSb5GJvbfXSJPqQyysilgTueBnMl3NuHPy8lFRjW13BMG18aP4JmB-u6Xl1T_8hs8fu_39GsVOio_Ml2ErqDFcHmDq7w-OKaXuQgoU\/s1600\/q030_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"112\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEg604weWqgfaXfaCgYwuH0TpMPz3IB9dEzZBs8vkZSb5GJvbfXSJPqQyysilgTueBnMl3NuHPy8lFRjW13BMG18aP4JmB-u6Xl1T_8hs8fu_39GsVOio_Ml2ErqDFcHmDq7w-OKaXuQgoU\/s640\/q030_p01.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Clink href=\"https:\/\/plus.google.com\/105527202953364202368\" rel=\"author\"\u003E\u003C\/link\u003E\u003C\/div\u003E\n"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/jsehelper.blogspot.com\/feeds\/582191088842789609\/comments\/default","title":"Комментарии к сообщению"},{"rel":"replies","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/08\/apache-ant-2.html#comment-form","title":"Комментарии: 0"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/582191088842789609"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/582191088842789609"},{"rel":"alternate","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/08\/apache-ant-2.html","title":"Ответы на вопросы на собеседование Apache Ant (часть 2)."}],"author":[{"name":{"$t":"vasyl1889"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/06654290728126534362"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhASP8pFOS1CwP4CuEVLK7x0wlJ5gC3S3oWR8UB2zB3SQcbQsbQw3iPq9Xp_3llpdRUMkh8Wb5shOhnKQnRD2m8gSsZSIPVGET4DKvstZEsoQJn3TyXr7S97jm8xwnUSRrFq-9vRjMx67M\/s72-c\/q026_p01.jpg","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-8798235924082241388.post-9139427126589988182"},"published":{"$t":"2016-08-03T22:03:00.000+03:00"},"updated":{"$t":"2016-11-02T19:59:46.441+02:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Apache Ant"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Front-End Developer Other"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Interview"}],"title":{"type":"text","$t":"Ответы на вопросы на собеседование Apache Ant (часть 1)."},"content":{"type":"html","$t":"\u003Cdiv dir=\"ltr\" style=\"text-align: left;\" trbidi=\"on\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cb style=\"font-family: arial, helvetica, sans-serif;\"\u003E\u003Cspan style=\"font-size: small;\"\u003EЧто такое Apache Ant?\u003C\/span\u003E\u003C\/b\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EApache Ant - это основанный на Java набор инструментов для сборки приложений. Большое преимущество Ant в его платформонезависимости. Все инструкции командной строки, используемые для развертывания приложения, представляются простыми XML-элементами. Ant можно использовать на любой операционной системе, на которой работает Java. Ant, в отличие от другого сборщика проектов Apache Maven, обеспечивает императивную, а не декларативную сборку проекта.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак начать использовать ant?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЭто очень просто.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЗагрузите последнюю версию ant из Apache. Распакуйте в папку на Вашей машине.\u003Ca name='more'\u003E\u003C\/a\u003E\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EУстановите Java SDK (последнюю версию).\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПропишите переменные окружения, JAVA_HOME и ANT_HOME.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EДобавте в Path %JAVA_HOME%\/bin;%ANT_HOME%\/bin в Windows, или ${JAVA_HOME}\/bin:${ANT_HOME}\/bin в UNIX.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНапишите \"Hello world\" build.xml\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhH9pematB3mXaBdlIMupiCDn94l1gYBDjbcfrjqNhQTSo5q18Svsp0fTC7kWx3F_Gvgo8YoYonQI1OOlvUsEkpl5bZZCCgVAL4qSIEZpMu6Ec_DJhfYgb8M5gQvynWelKrOcGOxF1LBno\/s1600\/q002_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"126\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhH9pematB3mXaBdlIMupiCDn94l1gYBDjbcfrjqNhQTSo5q18Svsp0fTC7kWx3F_Gvgo8YoYonQI1OOlvUsEkpl5bZZCCgVAL4qSIEZpMu6Ec_DJhfYgb8M5gQvynWelKrOcGOxF1LBno\/s640\/q002_p01.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВ каталоге где расположен build.xml в командной строке введите ant.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cbr \/\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cb\u003EДля чего нужен build.xml, из чего он состоит?\u003C\/b\u003E\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Ebuild.xml - файл сборки, данный файл обычно называют сценарии сборки, он должен находиться в базовой директории проекта (однако не существует никаких ограничений на имя файла или его расположение).\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EФайл build.xml содержит внутри себя корневой элемент project, наполнением которого являются элементы, относящиеся к одному из следующих понятий:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЦели (Targets)\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЗадачи (Tasks)\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EРесурсы (Resources)\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСвойства (Properties)\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКаждый build-файл содержит один проект (project) и хотя бы одну цель (target). Цель содержит задачи (tasks), задачи могут использовать для своей работы отдельные ресурсы (resources) (например, файл) или коллекцию ресурсов (множество файлов). Кроме целей, задач и ресурсов есть свойства (properties). К свойствам можно относится как к переменным, а точнее константам. У свойства есть имя и значение в виде строки. Значение свойства устанавливается один раз и любая попытка изменить это значение игнорируется.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u0026nbsp;Каждая задача, встречающаяся в build-файле, может иметь id атрибут и может быть позже вызвана по нему. Идентификаторы должны быть уникальными. Здесь можно привести аналогию с языком программирования, где цель - это функция, а задача - это операция. Между целями можно проставлять зависимости, что позволяет определить порядок вызова.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EAnt позволяет задавать глобальные переменные, которые можно использовать в любом месте проекта. Необходимо запомнить одно правило, значения переменной можно задавать один раз.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНапишите команду чтобы запустить процесс сборки, из командной строки.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EОткройте командную строку и перейти в каталог где расположен файл build.xml. Введите в \"ant\" или \"ant -f build.xml\", чтобы начать процесс сборки.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u0026nbsp;Если ви назвали свой файл по-другому, к примеру, \"mybuild.xml\", то для запуска задач из этого файла всегда нужно будет указывать его название \"ant -f mybuild.xml\".\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто вы знаете о теге Project.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВсе XML-элементы файла должны быть размещены внутри тега \u0026lt;project\u0026gt;\u0026lt;\/project\u0026gt;.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EТег project имеет три атрибута:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Ename \u0026nbsp;- имя проекта, этот атрибут не обязателен.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Edefault - цель по умолчанию, которая будет использоваться, если явно не указанно, какую цель выполнять, это обязательный атрибут.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Ebasedir - основная директория, из которой будут выходить все пути, использующиеся при работе (если она не указана, то будет использоваться текущая директория, в которой находится build-файл), этот атрибут не обязателен.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКаждый проект содержит одну или несколько целей. Цель представляет собой набор задач, которые необходимо выполнить. При запуске Ant можно выбрать цель, которую(ые) следует выполнить. Если цель не указывать, будет выполнена установленная по умолчанию.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cb style=\"font-family: arial, helvetica, sans-serif;\"\u003E\u003Cspan style=\"font-size: small;\"\u003EЧто вы знаете о теге Target.\u003C\/span\u003E\u003C\/b\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВ файле build.xml должно быть хотя бы одно задание (цель). Задания могут зависеть от других заданий. Например, имеются два задания: для компиляции и для изъятия файлов с базы данных. Соответственно скомпилировать файлы можно только после того, как они будут извлечены. Ant учитывает такие зависимости.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ETarget имеет следующие атрибуты:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Ename - имя цели, это обязательный атрибут.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Edepends - разделённый запятыми список имён целей, от которых эта цель зависит, этот атрибут не обязателен.\u0026nbsp;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eif - имя параметра, который должен быть установлен, чтобы эта цель выполнялась, это не обязательный атрибут.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eunless - имя параметра, который не должен быть установлен, чтобы эта цель выполнялась, этот атрибут не обязателен.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Edescription - небольшое описание функции function цели, это не обязательный атрибут.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EextensionOf - добавляет текущую цель в список зависимостей extension-point, это не обязательный атрибут.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EonMissingExtensionPoint - что делать, если эта цель пытается расширить отсутствующею в extension-point списоке. Не допускается, если extensionOf не присутствует. это не обязательный атрибут.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЕсли не установлены if и unless атрибуты, цель будет выполняться всегда. Опциональный атрибут description может быть использован как описание цели и будет выводиться при команде - projecthelp.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВ каком порядке выполняются цели объявление в атрибуте depends?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСледует отметить, что depends-атрибут Ant только обозначает порядок, в котором цели должны быть выполнены. Ant пробует выполнить цели в порядке, соответствующем порядку их появления в атрибуте depends (слева направо). Пример:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjunDMkjy0nhfd_vLa2oOjzbkjaj8t1vQ2i6z0lD7SvKT3LwHeF46sTbuF3MNai6KQXX3GMUFpYwFJp71ADTuM51TKj3MtNZP-yqYYKUJqy-Teqp-SdFpus_gTobaaGTKepzqFwxBTgkGk\/s1600\/q007_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"82\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjunDMkjy0nhfd_vLa2oOjzbkjaj8t1vQ2i6z0lD7SvKT3LwHeF46sTbuF3MNai6KQXX3GMUFpYwFJp71ADTuM51TKj3MtNZP-yqYYKUJqy-Teqp-SdFpus_gTobaaGTKepzqFwxBTgkGk\/s640\/q007_p01.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПусть нужно выполнить цель D. Из её атрибута depends можно узнать, что первой выполнится цель C, затем B и, наконец, A. Неверно: C зависит от B, a B зависит от A, таким образом, первой выполнится цель A, затем B, потом C, а после D.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЦель будет исполнена только один раз, даже если более чем одна цель зависит от неё.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто вы знаете о теге Property.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСвойства в Ant задаются с помощью тега \u0026lt;property\u0026gt;. Свойства очень похожи на константы в языках программирования: задав один раз, вы больше не сможете поменять их во время исполнения сценария. Обращаться к свойствам следует через конструкцию ${property_name}. Свойства можно задавать не только внутри \u0026lt;project\u0026gt;, но и внутри \u0026lt;target\u0026gt;.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EУстановка значения может происходить в самом файле build.xml или во внешнем properties-файле, что очень удобно и позволяет менять процесс сборки не изменяя build.xml.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЯвляются ли имена свойств чувствительными к регистру?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EДа.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак использовать ant-contrib задачи?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПросто скопируйте ant-contrib.jar \u0026nbsp;в ваш ant*\/lib каталог, и добавьте эту строку в ваш \u0026nbsp;ant-скрипт, все ant-contrib задачи теперь будут доступны для вас.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhhlxmLaxYPDFf6RktMCcWX6TQeWrNMnJ9-753_6VOgeZQEF9OjCY84YUQU7jO1O6wQ-4kdAhj7JmfYsd-FSCByxJ9ZqHx-unKhE9L5Y1sZwrbE3NMt1C-0ntymokzjVwr_lLVgjEH391g\/s1600\/q010_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"24\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhhlxmLaxYPDFf6RktMCcWX6TQeWrNMnJ9-753_6VOgeZQEF9OjCY84YUQU7jO1O6wQ-4kdAhj7JmfYsd-FSCByxJ9ZqHx-unKhE9L5Y1sZwrbE3NMt1C-0ntymokzjVwr_lLVgjEH391g\/s640\/q010_p01.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие символы разделители используются в path-like структурах в ant?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМожно определить типы ссылок path и classpath, используя как «:» (unix-style), так и «;» (windows-style) как разделитель символов. Ant скорректирует их в требуемые текущей операционной системой.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак установить classpath в ant скрипт?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСледующий фрагмент кода демонстрирует как установить classpath в ant:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjjsmLIKaxI1HFYrbt1sd0zypAgIR7caNYiQW-VIUwoRQxht8WroHUxwryUsxy26AVCKHunsz41BE3mX7sZhuICacCRYUAVDCau55s5fKgKPa4iFHNbqyuSpWirJL4qmKHEDwMicM1O2cU\/s1600\/q012_p02.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"310\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjjsmLIKaxI1HFYrbt1sd0zypAgIR7caNYiQW-VIUwoRQxht8WroHUxwryUsxy26AVCKHunsz41BE3mX7sZhuICacCRYUAVDCau55s5fKgKPa4iFHNbqyuSpWirJL4qmKHEDwMicM1O2cU\/s640\/q012_p02.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EРасскажите о задачах в ant.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЗадачи представляют действия, которые могут осуществляться с какими-либо ресурсами или без их участия.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНиже приведу простейшие примеры использования задач.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСоздание каталога:\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhmgF6Ezbd230DA4__GXqKQDmG0Cj_rx0pb7sFBCnsXa_qnERpC1o7rXnsdSMvLhXVWPPKNa-CDXWczO25rQuS8iixQ21Vu3fLlWOBPpZcydtuBaRTMyb9BcSsfNMd-kjwYkYx8yRtdkKQ\/s1600\/q013_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"28\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhmgF6Ezbd230DA4__GXqKQDmG0Cj_rx0pb7sFBCnsXa_qnERpC1o7rXnsdSMvLhXVWPPKNa-CDXWczO25rQuS8iixQ21Vu3fLlWOBPpZcydtuBaRTMyb9BcSsfNMd-kjwYkYx8yRtdkKQ\/s640\/q013_p01.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКопирование файла:\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgpNXHDjwnpyYfR1uHoZARPTr9egiiz2LIx2pgIGCiJQCDVydLdQd3HXRXvW2owdI6dtwElOC87w0CtSiJjABWqxoiHj9ugWFUxGFAnUSOBpET6u6_2sdxcVaX88nfMS1EOwtsrQeGo8Hk\/s1600\/q013_p02.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"24\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgpNXHDjwnpyYfR1uHoZARPTr9egiiz2LIx2pgIGCiJQCDVydLdQd3HXRXvW2owdI6dtwElOC87w0CtSiJjABWqxoiHj9ugWFUxGFAnUSOBpET6u6_2sdxcVaX88nfMS1EOwtsrQeGo8Hk\/s640\/q013_p02.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКомпиляция файлов с кодом java:\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhcp5PX_S1CsgQWfPuc5UtooR1_BGPRML671wH2xIc8osaBBD1lvVly0tI9Z_0MoCr8Bkky2wcCtGB5UHUe_UjIFWvzJdbbGA4Q7BCTAIslD-rCPa9JcsXDxaqk3n43fgqCnRrSYMEEY3E\/s1600\/q013_p03.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"20\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhcp5PX_S1CsgQWfPuc5UtooR1_BGPRML671wH2xIc8osaBBD1lvVly0tI9Z_0MoCr8Bkky2wcCtGB5UHUe_UjIFWvzJdbbGA4Q7BCTAIslD-rCPa9JcsXDxaqk3n43fgqCnRrSYMEEY3E\/s640\/q013_p03.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv class=\"MsoNormal\" style=\"margin-bottom: 0.0001pt; text-indent: 14.2pt;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , sans-serif; font-size: 12.0pt;\"\u003EИногда для выполнения некоторых задач хватает лишь указания правильных атрибутов, но кроме этого внутри тега задачи могут находиться и вложенные элементы, которые, могут описывать ресурсы с которыми необходимо работать задаче. \u003Co:p\u003E\u003C\/o:p\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"MsoNormal\" style=\"margin-bottom: 0.0001pt; text-indent: 14.2pt;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , sans-serif; font-size: 12.0pt;\"\u003EAnt предоставляет слишком много задач, чтобы дать полное описание того, что каждая из них делает. Следующий список дает представление о категориях, на которые можно разделить все задачи:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EArchive Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EAudit\/Coverage Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ECompile Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EDeployment Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EDocumentation Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EEJB Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EExecution Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EFile Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJava2 Extensions Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ELogging Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EMail Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EMiscellaneous Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EPre-process Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EProperty Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ERemote Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ESCM Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ETesting Tasks\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Cul\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Ca href=\"https:\/\/jsehelper.blogspot.nl\/2016\/08\/apache-ant-2.html\"\u003EApache Ant (часть 2).\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Clink href=\"https:\/\/plus.google.com\/105527202953364202368\" rel=\"author\"\u003E\u003C\/link\u003E\u003C\/div\u003E\n"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/jsehelper.blogspot.com\/feeds\/9139427126589988182\/comments\/default","title":"Комментарии к сообщению"},{"rel":"replies","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/08\/apache-ant-1.html#comment-form","title":"Комментарии: 0"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/9139427126589988182"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/9139427126589988182"},{"rel":"alternate","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/08\/apache-ant-1.html","title":"Ответы на вопросы на собеседование Apache Ant (часть 1)."}],"author":[{"name":{"$t":"vasyl1889"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/06654290728126534362"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhH9pematB3mXaBdlIMupiCDn94l1gYBDjbcfrjqNhQTSo5q18Svsp0fTC7kWx3F_Gvgo8YoYonQI1OOlvUsEkpl5bZZCCgVAL4qSIEZpMu6Ec_DJhfYgb8M5gQvynWelKrOcGOxF1LBno\/s72-c\/q002_p01.jpg","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-8798235924082241388.post-8725341604236198226"},"published":{"$t":"2016-08-02T19:29:00.000+03:00"},"updated":{"$t":"2016-12-18T15:54:09.297+02:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Interview"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Java Developer"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Java Questions List"}],"title":{"type":"text","$t":"Список вопросов и ответов на собеседование Java Junior (продолжение). "},"content":{"type":"html","$t":"\u003Cdiv dir=\"ltr\" style=\"text-align: left;\" trbidi=\"on\"\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/blog-post_12.html\"\u003EСериализация.\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое сериализация?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак исключить поля из сериализации?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003Etransient что значит?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак изменить стандартное поведение сериализации\/десериализации?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВы создали класс, чей суперкласс сериализуемый, но при этом вы не хотите чтобы ваш класс был сериализуемым, как остановить сериализацию?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак создать собственный протокол сериализации?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакая роль поля serialVersionUID в сериализации?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВ чем проблема сериализации Singleton-ов?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/blog-post_12.html\"\u003EПерейти к ответам ►►\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ca name='more'\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/jdbc.html\"\u003EJDBC.\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое JDBC?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЭтапы работы с базой данных с использованием JDBC?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак создать Connection?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧем отличается Statement от PreparedStatement?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак вызвать хранимую процедуру?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак правильно закрыть Connection?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие есть уровни изоляции транзакций?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие есть типов чтения транзакций?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/jdbc.html\"\u003EПерейти к ответам ►►\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/jsp-servlets-jstl.html\"\u003EJSP, Servlets, JSTL.\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое сервлет?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакова структура веб-проекта?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое контейнер сервлетов? Жизненный цикл сервлета.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКаковы задачи, функциональность контейнера сервлетов?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧем отличается sendRedirect() от forward()?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто вы знаете о сервлет фильтрах?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЗачем нужны слушатели в сервлетах?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак обработать исключения, выброшенные другим сервлетом в приложении?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое дескриптор развертывания?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак реализовать запуск сервлета с запуском приложения?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто представляет собой объект ServletConfig?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто представляет собой объект ServletContext?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВ чем отличия ServletContext и ServletConfig?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EИнтерфейс ServletResponse.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EИнтерфейс ServletRequest.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое Request Dispatcher?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак можно создать блокировку (deadlock) в сервлете?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак получить адрес сервлета на сервере?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак получить информацию о сервере из сервлета?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак получить ip адрес клиента на сервере?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто вы знаете о классах обертках (wrapper) для сервлетов?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКаков жизненный цикл сервлета и когда какие методы вызываются?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие методы необходимо определить при создании сервлетов?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВ каком случае вы будете переопределять метод service()?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЕсть ли смысл определить конструктор для сервлета, как лучше инициализировать данные?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВ чем отличия GenericServlet и HttpServlet?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак вызвать из сервлета другой сервлет этого же и другого приложения?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EСтоит ли волноваться о “многопоточной безопасности” работая с сервлетами?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакой метод HTTP не является неизменяемым?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие есть методы отправки данных с клиента на сервер? Чем они отличаются?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EМетоды сервлета (обычно имеется ввиду HttpServlet).\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EПочему HttpServlet класс объявлен как абстрактный?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВ чем разница между методами GET и POST?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EНазовите преимущества Servlet над CGI?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКаковы наиболее распространенные задачи выполняются в Servlet контейнере?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВ чем разница между PrintWriter и ServletOutputStream?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EМожем ли мы получить PrintWriter и ServletOutputStream одновременно в сервлете?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EРасскажите об интерфейсе SingleThreadModel.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие существуют атрибуты у сервлетов и какая сфера их применения?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EПочему необходимо переопределить только init() метод без аргументов?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто означает URL encoding? Зачем нужны методы encode() и decode()?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЗачем нужны и чем отличаются методы encodeUrl() и encodeRedirectUrl()?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие различные методы управления сессией в сервлетах вы знаете?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто означает URL Rewriting?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое Cookie?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак применяются Cookies в сервлетах?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак уведомить объект в сессии, что сессия недействительна или закончилась?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакой существует эффективный способ удостоверится, что все сервлеты доступны только для пользователя с валидной сессией?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак мы можем обеспечить transport layer security для нашего веб приложения?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак организовать подключение к базе данных и обеспечить логирование log4j в сервлете?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие особенности Servlet 3?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКаковы различные способы аутентификации сервлета?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое Java Server Pages (JSP)?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EОпишите, как обрабатываются JSP страницы, начиная от запроса к серверу, заканчивая ответом пользователю.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EРасскажите об этапах (фазах) жизненного цикла jsp.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EРасскажите о методах жизненного цикла jsp.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие методы жизненного цикла JSP могут быть переопределены?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак можно предотвратить прямой доступ к JSP странице из браузера?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакая разница между динамическим и статическим содержимым JSP?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак закомментировать код в jsp?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие основные теги в JSP?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие типы EL операторов вы знаете?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВзаимодействие JSP - сервлет - JSP.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое сессия?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие скоупы переменных существуют в JSP?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие неявные, внутренние объекты и методы есть на jsp странице?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EПочему неявные объекты не доступны в обычной JSP странице?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто вы знаете о PageContext и какие преимущества его использования?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак сконфигурировать init параметры для JSP?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EПочему не рекомендуется использовать скриптовые элементы в jsp?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧем отличается \u0026lt;c:import\u0026gt; от \u0026lt;jsp:include\u0026gt; и директиви \u0026lt;%@include %\u0026gt;?\u0026nbsp;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто вы знаете о jsp тегах? Объясните как вы понимаете Action tag и JSP Action Elements.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое JSTL (Jsp Standard tag library)?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EИз каких групп тегов состоит библиотека JSTL?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакая разница между тегом \u0026lt;c:set\u0026gt; и \u0026lt;jsp:useBean\u0026gt;?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EНазовите неявные, внутренние объекты JSP EL и их отличия от объектов jsp.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак узнать имя http метода используя JSP EL?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто вы знаете о написании пользовательских jsp тегов?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EПриведите пример использования собственных тегов.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EПочему не нужно конфигурировать стандартные JSP теги в web.xml?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак можно обработать ошибки jsp страниц?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак происходит обработка ошибок с помощью jstl?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EПриведите пример конфигурации JSP в дескрипторе развертывания.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак деактивировать использование EL на JSP?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EМожно ли использовать javascript на jsp странице?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВсегда ли создается объект сессии на jsp странице, можно ли отключить его создание?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакая разница между JspWriter и Servlet PrintWriter?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак можно расширить функциональность jsp?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/jsp-servlets-jstl.html\"\u003EПерейти к ответам ►►\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cdiv style=\"font-size: medium; font-weight: normal;\"\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif; font-size: small; font-weight: normal;\"\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/h3\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/blog-post_13.html\"\u003EБазы данных.\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое База Данных?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EМодель данных в реляционных СУБД?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое нормализация?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие есть типы связей в базе данных. Приведите пример.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое primary key (первичный ключ)?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое foreign key (внешний ключ)?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое индексы в базе данных? Для чего их используют? Чем они хороши и чем плохи?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие есть типы индекса?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cdiv\u003E\n\u003C\/div\u003E\n\u003C\/h3\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/blog-post_13.html\"\u003EПерейти к ответам ►►\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/sql-1.html\"\u003ESQL.\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое SQL?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие есть типы JOIN'ов. Кратко опишите каждый из типов.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое LEFT JOIN, RIGHT JOIN? Чем они отличаются?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EДля чего используется слово HAVING?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое DDL?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое DML?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое TCL?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое DCL?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакой общий синтаксис команди SELECT?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EПро NULL в SQL.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЕсли вы собираетесь соединить несколько таблиц в запросе (например, n таблиц), сколько условий соединения вам нужно использовать?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакое практическое применение временных таблиц?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак оператор GROUP BY обрабатывает значение NULL? Ли это общем трактовке таких значений?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВ чем разница между COUNT (*) и COUNT (столбец)?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВ чем разница между операторами DISTINCT и GROUP BY?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЕсть таблица table1 с колонками id и datetime написать запрос который вернет максимальное значение id и значение даты для этого id.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EДля чего нужны операторы UNION, INTERSECT, EXCEPT?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто лучше использовать соединение или подзапросы?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто делает функция EXISTS?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EИспользование оператора PIVOT.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EОпишите разницу типов данных DATETIME и TIMESTAMP.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EДля каких числовых типов недопустимо использовать операцию сложения (вычитания), а значит и функцию SUM()?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое хранимые процедуры?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EФункции ранжирования что это и какие существует?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EМожет ли значение в столбце(ах), на который наложено ограничение foreign key, равняться null?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EНазовите основные свойства транзакции.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак удалить повторяющиеся строки с использованием ключевого слова Distinct?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКогда полное сканирование таблицы выгоднее доступа по индексу? Опишите вкратце общие принципы, как оптимизатор выбирает производить ли полное сканирование таблицы или доступ по индексу.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EИмеет ли смысл индексировать поля таблицы, имеющих тип boolean или подобные им - с небольшим количеством возможных значений?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое агрегатная функция? Приведите примеры агрегатных функций в SQL.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EДайте определение третьей нормальной форме БД.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое денормализация БД? Для чего она нужна?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое триггер?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое курсоры в базах данных?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие компромиссы предлагает использование индексов?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто делает SQL операция MERGE?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВ чем различие между выражениями HAVING и WHERE?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое целостность данных? Объясните, что такое ограничения.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВ чем отличие между кластерными индексами и некластерными?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие отличия между ограничениями primary и unique?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/sql-1.html\"\u003EПерейти к ответам ►►\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/junit.html\"\u003EТестирование. JUNIT.\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧем стаб (stub) отличается от мока (mock)?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое unit testing?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое Фикстуры?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие есть аннотации фикстур?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EДля чего нужна Аннотация @Ignore?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое интеграционные тесты?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/junit.html\"\u003EПерейти к ответам ►►\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/log4j.html\"\u003ELog4j.\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EИз чего состоит логгер?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие есть уровни сообщении в log4j?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое Appender?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие основные аппендеры Log4j?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое Layout?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/log4j.html\"\u003EПерейти к ответам ►►\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003C\/span\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/uml.html\"\u003EUML.\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое UML?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое Нотации и метамодель в UML?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие есть типы диаграмм?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие отношение обобщения реа\u003C\/span\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eлизуется при наследовании классов.\u003C\/span\u003E\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/uml.html\"\u003EПерейти к ответам ►►\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003C\/span\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003C\/span\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Ch3 style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/xml.html\"\u003EXML.\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое XML?\u0026nbsp;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак определяется корректность XML-документа?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧем well-formed XML отличается от valid?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое пространство имен?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое простые типы в XSD?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое сложныетипы в XSD?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие элементы и атрибуты XSD Вы знаете? Кратко опишите их.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие существуют XML парсеры?\u0026nbsp;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое XPath?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое XQuery?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКаким парсером можно сделать изменения в XML структуре и сохранить в файл?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКратко опишите DOM, SAX, StAX анализаторы.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКогда следует использовать DOM, а когда - SAX, StAX анализаторы?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EНедостатки XML DTD перед XML Schema\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EXML Schema - промышленный стандарт описания XML-документов\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое XSLT?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое маршаллизация и демаршализация?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое JAXP?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EНазовите основные пакеты JAXP.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое JAXB?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/xml.html\"\u003EПерейти к ответам ►►\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/design-patterns.html\"\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EDesign patterns.\u003C\/span\u003E\u003C\/a\u003E\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое шаблоны проектирования?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EИз каких элементов состоит шаблон?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие есть типы шаблонов?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EНазовите порождающие шаблоны, и кратко опишите их.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EНазовите шаблоны поведения, и кратко опишите их.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EНазовите структурные шаблоны, и кратко опишите их.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие антишаблоны вы знаете?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое OOAD?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое OOD?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое OOA?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое DRY principles?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое KISS?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое YAGNI?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое Yoda conditions?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое CRC cards?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое SOLID?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое Single responsibility principle?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое Open\/closed principle?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое Liskov substitution principle?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое Interface segregation principle?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое Dependency inversion principle?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое GRASP?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКратко опишите шаблоны GRAPS\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/design-patterns.html\"\u003EПерейти к ответам ►►\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/html.html\"\u003EОсновы HTML.\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое HTML?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое DOCTYPE и зачем он нужен?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧем отличается div от span?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак обозначаются комментарии в HTML?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак задать адрес документа, на который следует перейти?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак сделать сcылку на имейл?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто делают теги \u0026lt;em\u0026gt;\u0026lt;\/em\u0026gt; ?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое \u0026lt;ol\u0026gt;\u0026lt;\/ol\u0026gt;, \u0026lt;ul\u0026gt;\u0026lt;\/ul\u0026gt; и \u0026lt;li\u0026gt;\u0026lt;\/li\u0026gt; ?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто пишут в теге HEAD?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЗачем нужны теги \u0026lt;dl\u0026gt;,\u0026lt;dt\u0026gt;,\u0026lt;dd\u0026gt;?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЗачем нужны теги \u0026lt;tr\u0026gt;, \u0026lt;th\u0026gt;, \u0026lt;td\u0026gt; ?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВ каком регистре лучше писать HTML-код?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EОбязательно ли писать alt в \u0026lt;img\u0026gt;?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое entities?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/html.html\"\u003EПерейти к ответам ►►\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/css.html\"\u003EОсновы CSS.\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv\u003E\n\u003Cul\u003E\u003C\/ul\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое CSS?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВ чем разница между записью #my и .my?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EВ чем разница между margin и padding?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EПочему таблицы стилей CSS называются каскадными?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое альтернативная таблица стилей?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакая разница между значениями 0 и auto в свойстве margin?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EДля чего применяются свойства border-position и border-all?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакое свойство задает цвет фона?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак в CSS обозначаются комментарии?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак задать красный цвет для всех элементов, имеющих класс red?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак убрать подчеркивание для всех ссылок на странице?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКак сделать жирным текст во всех элементах \u0026lt;p\u0026gt;?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто делает свойство clear?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/css.html\"\u003EПерейти к ответам ►►\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/web.html\"\u003EОсновы WEB.\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003Cdiv\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое www?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое w3c?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое URI?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое URL?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое URN?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое интернет протокол IP?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое протокол управления ТСР?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое TCP\/IP?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое FTP?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое UDP?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧем отличаются HTTP и HTTPS?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое протокол передачи данных, какие вы знаете?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое web server?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое web приложение?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое application server?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧем отличаются web server и application server?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧем отличаются методы get и post?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое MIME type?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EДайте определение понятиям “авторизация” и “аутентификация”, в чем их различия?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое Ajax? Как принципиально устроена эта технология?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое JSON?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое JSON Schema?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EКакие есть уровни модели OSI?\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003EЧто такое \u0026nbsp;websocket?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003Cul\u003E\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003C\/span\u003E\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\u003Ca href=\"http:\/\/jsehelper.blogspot.com\/2016\/01\/web.html\"\u003EПерейти к ответам ►►\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Clink href=\"https:\/\/plus.google.com\/105527202953364202368\" rel=\"author\"\u003E\u003C\/link\u003E\u003C\/div\u003E\n"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/jsehelper.blogspot.com\/feeds\/8725341604236198226\/comments\/default","title":"Комментарии к сообщению"},{"rel":"replies","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/08\/java-junior-interview-questions.html#comment-form","title":"Комментарии: 11"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/8725341604236198226"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/8725341604236198226"},{"rel":"alternate","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/08\/java-junior-interview-questions.html","title":"Список вопросов и ответов на собеседование Java Junior (продолжение). "}],"author":[{"name":{"$t":"vasyl1889"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/06654290728126534362"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"thr$total":{"$t":"11"}},{"id":{"$t":"tag:blogger.com,1999:blog-8798235924082241388.post-2095705036383019163"},"published":{"$t":"2016-05-25T07:52:00.000+03:00"},"updated":{"$t":"2016-11-02T19:59:46.306+02:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Interview"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Java Developer"},{"scheme":"http://www.blogger.com/atom/ns#","term":"JSP Servlets JSTL"}],"title":{"type":"text","$t":"Ответы на вопросы на собеседование JSP, Servlets, JSTL (часть 4)."},"content":{"type":"html","$t":"\u003Cdiv dir=\"ltr\" style=\"text-align: left;\" trbidi=\"on\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие скоупы переменных существуют в JSP?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EExression Language - это переменные определенного скоупа, которые доступны через выражение ${…}, среди скоупов есть и скоуп page, но даже в этом скоупе переменная не является локальной для класса страницы. Поэтому мы просто так не можем в скриптлете обратиться к переменной из этих скоупов, в том числе и скоупа страницы. Скоупы бывают: page, request, session, application, response, out, config.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие неявные, внутренние объекты и методы есть на jsp странице?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJSP implicit objects (неявные объекты) создаются контейнером при конвертации JSP страницы в код сервлета для помощи разработчикам. Эти объекты можно использовать напрямую в скриптлетах для передачи информации в сервис методы, однако мы не можем использовать неявные объекты в JSP Declaration, т.к. такой код пойдет на уровень класса.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Ca name='more'\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСуществует 9 видов неявных объектов, которые можно использовать прямо на JSP странице. Семь из них объявлены как локальные переменные вначале _jspService() метода, а два оставшихся могут быть использованы как аргументы метода _jspService().\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eout Object\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Erequest Object\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eresponse Object\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Econfig Object\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eapplication Object\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Esession Object\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EpageContext Object\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Epage Object\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eexception Object\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПочему неявные объекты не доступны в обычной JSP странице?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНеявный объект исключений JSP недоступен в обычных JSP страницах и используется на страницах ошибок JSP только для того, чтобы перехватить исключение, брошенное JSP страницей и далее предоставить какую-либо полезную информацию клиенту.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто вы знаете о PageContext и какие преимущества его использования?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНеявный объект JSP pageContext является экземпляром реализации абстрактного класса javax.servlet.jsp.PageContext. Мы можем использовать объект pageContext для получения и установки атрибутов с различной областью видимости и для проброса запросов к другому ресурсу. Этот объект так же обладает ссылкой на другой неявный объект. Это единственный объект, который представлен в JSP implicit objects и JSP EL implicit objects.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак сконфигурировать init параметры для JSP?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМы можем задать параметры инициализации для JSP аналогично сервлетам в web.xml файле. Мы должны сконфигурировать init параметры JSP с элементами servlet и servlet-mapping. Единственным отличием будет указание местонахождения JSP страницы.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПочему не рекомендуется использовать скриптовые элементы в jsp?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJSP страницы в основном используются для целей отображения представления, а вся бизнес логика и модели должны быть реализованы в сервлетах или классах моделях. Мы должны передавать параметры к JSP странице через атрибуты и затем использовать их для создания HTML ответа на JSP странице. Большая часть JSP содержит HTML код и для того, чтобы помочь дизайнерам понять код JSP страницы и разрабатывать их, предоставляют элементы action, JSP EL, JSP Standart Tag Library. Именно эти элементы необходимо использовать вместо скриптлетов для создания моста между JSP HTML и JSP java частями.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧем отличается \u0026lt;c:import\u0026gt; от \u0026lt;jsp:include\u0026gt; и директиви \u0026lt;%@include %\u0026gt;?\u0026nbsp;\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EТег \u0026lt;c:import\u0026gt; получает доступ к источнику, чтение информации из которого происходит непосредственно без буферизации. Контент включается построчно в исходную JSP. По сравнению с action-тегом \u0026lt;jsp:include\u0026gt; и директивой \u0026lt;%@include %\u0026gt; тег \u0026lt;c:import\u0026gt; обеспечивает более совершенное включение динамических ресурсов.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто вы знаете о jsp тегах? Объясните как вы понимаете Action tag и JSP Action Elements.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJSP элементы или теги action предоставляют полезную функциональность для работы с Java Bean, вложения ресурсов, проброса запроса и создания динамических XML элементов. Элементы jsp action всегда начинаются с записи jsp: и мы можем использовать их прямо внутри страницы JSP без необходимости подключения библиотек или других настроек.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНаиболее часто используемыми элементами action являются: jsp:useBean, jsp:getProperty, jsp:setProperty, jsp:include, jsp:forward.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто такое JSTL (Jsp Standard tag library)?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСтандартная библиотека тегов JSP (англ. JavaServer Pages Standard Tag Library, JSTL) - расширение спецификации JSP, добавляющее библиотеку JSP тегов для общих нужд, таких как разбор XML данных, условная обработка, создание циклов и поддержка интернационализации.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJSTL является альтернативой такому виду встроенной в JSP логики, как скриптлеты, то есть прямые вставки Java кода. Использование стандартизованного множества тегов предпочтительнее, поскольку получаемый код легче поддерживать и проще отделять бизнес-логику от логики отображения. Для использования JSTL тегов необходимо подключить библиотеку и указать на страницы пространство имен.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhksWayK33BO62ZWpm0wWEbvDyNEewbFQ5LePA6gM8ltcH7YyH5n-KtqhSaH096wJpRDjL8bztQZ5qG03buBAfVWdn24peZxEvMUU7NJqvECPGTfkXG_VYnQTLSAV7hgR3tMiuTmlBhFSg\/s1600\/q073_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhksWayK33BO62ZWpm0wWEbvDyNEewbFQ5LePA6gM8ltcH7YyH5n-KtqhSaH096wJpRDjL8bztQZ5qG03buBAfVWdn24peZxEvMUU7NJqvECPGTfkXG_VYnQTLSAV7hgR3tMiuTmlBhFSg\/s1600\/q073_p01.jpg\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cspan style=\"text-align: justify;\"\u003EДля подключения пространства имен основных тегов JSTL необходимо указать на JSP странице код:\u003C\/span\u003E\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjp2tWXs_06OHrIGzVa5L3iZmwROBqTiqmklGJmmD2mwR-UukpzaL4vJPM_W5n-CKxKPcWhc9lSx_0uZygQr3ILk2Fl2ST-BHMlJ_DWm2V-wuzOIQqKbxunzDhh4D55K8xzCfFK4kjPANE\/s1600\/q073_p02.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" height=\"92\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjp2tWXs_06OHrIGzVa5L3iZmwROBqTiqmklGJmmD2mwR-UukpzaL4vJPM_W5n-CKxKPcWhc9lSx_0uZygQr3ILk2Fl2ST-BHMlJ_DWm2V-wuzOIQqKbxunzDhh4D55K8xzCfFK4kjPANE\/s640\/q073_p02.jpg\" width=\"640\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EИз каких групп тегов состоит библиотека JSTL?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EБиблиотека тегов JSTL состоит из пяти групп тегов:\u0026nbsp;\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ECore Tags - основные теги, предоставляют возможности итерации, обработки исключений, url, forward и redirect response и т.д.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EFormatting и Localization Tags - теги форматирования, предоставляют возможности по форматированию Numbers, Dates и поддержки i18n локализации и resource bundles.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ESQL Tags - теги для работы с SQL, поддержка работы с базами данных вроде MySQL, Oracle и т.д.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EXML Tags - теги для работы с XML документами. Например для парсинга XML, преобразования данных XML и выполнения выражений XPath.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJSTL Functions Tags - функции-теги для обработки строк, предоставляет набор функций, которые позволяют выполнять различные операции со строками и т.п.. Например по конкатенации или разбиению строк.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакая разница между тегом \u0026lt;c:set\u0026gt; и \u0026lt;jsp:useBean\u0026gt;?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСуществует аналогия между тегом \u0026lt;c:set\u0026gt; и тегом \u0026lt;jsp:useBean\u0026gt;. Оба создают и помещают экземпляры в заданную область видимости. Но \u0026lt;jsp:useBean\u0026gt; только непосредственно создает экземпляр конкретного типа, а \u0026lt;c:set\u0026gt;, создав ссылку, позволяет извлекать значение, например, из параметров запроса, сессии и т. д.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНазовите неявные, внутренние объекты JSP EL и их отличия от объектов jsp.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЯзык выражений JSP предоставляет множество неявных объектов, которые можно использовать для получения атрибутов в различных областях видимости (scopes) и для значений параметров. Важно отметить, что они отличаются от неявных объектов JSP и содержат атрибуты в заданной области видимости. Наиболее часто использующийся implicit object в JSP EL и JSP page - это объект pageContext. Ниже представлена таблица неявных объектов JSP EL.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgtzMh84tHChhdLGL_28CsyqUDxbtzTJpav0qRpc7ibaKsf_TQ1nqUri0xceZba8nv-yC3XXPlT_YJER2oX02ClUgmV7wkDphdbi9Av7pxz8UhQ1RTjPFfdA6xhQSoaVEC2tWAYjNaLWfM\/s1600\/q076_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEgtzMh84tHChhdLGL_28CsyqUDxbtzTJpav0qRpc7ibaKsf_TQ1nqUri0xceZba8nv-yC3XXPlT_YJER2oX02ClUgmV7wkDphdbi9Av7pxz8UhQ1RTjPFfdA6xhQSoaVEC2tWAYjNaLWfM\/s1600\/q076_p01.jpg\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак узнать имя http метода используя JSP EL?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВот так: ${pageContext.request.method}.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто вы знаете о написании пользовательских jsp тегов?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJSP позволяет создавать свои собственные теги с необходимой функциональностью. Мы можем добавить библиотеку тегов на страницу JSP используя указание пространства имен. Для создания своего тега мы можем использовать следующие компоненты:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJSP Custom Tag Handler\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСоздание файла Tag Library Descriptor (TLD)\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EDeployment Descriptor конфигурацию для TLD\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПриведите пример использования собственных тегов.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНапример нам необходимо отформатировать в каком-либо стиле очень длинное число. Для этого можно использовать собственный тег вроде:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi1mw9buRQ4MlLlBFpb8k0Zq_KIOFL_7IMhsLtvo7fuJcFUgxHAUpe51g6BaPxg5QsGkK_ryhNIb7Y0XWy8pQ3t3wJxkYgoBkjswufTSsdy3YHq2Ij8ZXGyHictr46j7ZPgxBdOXEw9vDg\/s1600\/q079_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEi1mw9buRQ4MlLlBFpb8k0Zq_KIOFL_7IMhsLtvo7fuJcFUgxHAUpe51g6BaPxg5QsGkK_ryhNIb7Y0XWy8pQ3t3wJxkYgoBkjswufTSsdy3YHq2Ij8ZXGyHictr46j7ZPgxBdOXEw9vDg\/s1600\/q079_p01.jpg\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EИспользуя входные параметры, число должно быть преобразовано на JSP странице в таком виде 123,456.79 согласно шаблону. Т.к. JSTL не предоставляет такой функциональности, то нам придется создать собственный тег для получения необходимого результата.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПочему не нужно конфигурировать стандартные JSP теги в web.xml?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНам не нужно настраивать стандартные теги JSP в web.xml, потому что TLD файлы уже находятся внутри каталога META-INF в JSTL jar файлах. Когда контейнер загружает веб-приложение и находит TLD файлы в директории META-INF в JAR файле, то он автоматически настраивает их для непосредственного использования на JSP страницах. Остается только задать пространство имен на jsp странице.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак можно обработать ошибки jsp страниц?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EДля обработки исключений выброшенных на jsp странице необходимо всего лишь задать страницу ошибки. Для создания страницы ошибки JSP мы должны установить значение page directive attribute isErrorPage в значение true. Тогда мы получим доступ к неявным объектам исключений в JSP и сможем передавать собственные сообщение об ошибках клиенту (обычно более информативных).\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНастройка дескриптора развертывания выглядит так.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjCZn2cPwrKsUiL75ZncTHa-up9K_KQWUfjp7-ruUf_jSwf4qSkvn0w6Jys6hpiYYyb9s_o0FrPEKWvFzpmAo-3r1iQW54lIgI4U_PSp6CXtdPZy3YUzM9NZFDGzieyOTBxFqfN_NkYzZc\/s1600\/q081_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjCZn2cPwrKsUiL75ZncTHa-up9K_KQWUfjp7-ruUf_jSwf4qSkvn0w6Jys6hpiYYyb9s_o0FrPEKWvFzpmAo-3r1iQW54lIgI4U_PSp6CXtdPZy3YUzM9NZFDGzieyOTBxFqfN_NkYzZc\/s1600\/q081_p01.jpg\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cdiv\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак происходит обработка ошибок с помощью jstl?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПерехватывать исключения и обрабатывать их в служебных методах класса можно с помощью JSTL Core Tags c:catch и c:if. Тег c:catch перехватывает исключение и обертывает его в переменную exception, которую мы можем обработать в теге c:if.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E \u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEg9gbPqPwV57Z0pZRpi35MJ_yNQ0Bkoxza-kvJh-8wjbNaebq80xbcmWQ31o8hDkGWz9NwfZy-WNmThgSI239S4z4VETdFouVRwC5gwWk9qVAt4ysp3AqR3PpvMphluWGTN-6ch8XBnGXA\/s1600\/q082_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEg9gbPqPwV57Z0pZRpi35MJ_yNQ0Bkoxza-kvJh-8wjbNaebq80xbcmWQ31o8hDkGWz9NwfZy-WNmThgSI239S4z4VETdFouVRwC5gwWk9qVAt4ysp3AqR3PpvMphluWGTN-6ch8XBnGXA\/s1600\/q082_p01.jpg\" \/\u003E\u003C\/a\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EОбратите внимание что используется язык выражений JSP EL в теге c:if.\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПриведите пример конфигурации JSP в дескрипторе развертывания.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЭлемент jsp-config используется для настройки различных параметров jsp страниц.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EУправление элементами скриптлетов на странице.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EУправления выполнением в языке выражений.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EОпределение шаблона URL для encoding.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EОпределение размера буфера, который используется для объектов на странице.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EОбозначение групп ресурсов, соответствующих шаблону URL, которые должны быть обработаны как XML документ.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjQe61-TCGKPRQ95ZDw5NXGEpo1iOa9EKzedKa7kTX7qCAWj6fpMDCE34zX0e6UeQYThxrYDaKqxiOOMpZ29E4W2PHya_n_NMLDYVBx3I4hulSX4orRobVGvpKodiXBnMLQuWm0zgDParY\/s1600\/q083_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjQe61-TCGKPRQ95ZDw5NXGEpo1iOa9EKzedKa7kTX7qCAWj6fpMDCE34zX0e6UeQYThxrYDaKqxiOOMpZ29E4W2PHya_n_NMLDYVBx3I4hulSX4orRobVGvpKodiXBnMLQuWm0zgDParY\/s1600\/q083_p01.jpg\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак деактивировать использование EL на JSP?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EДля игнорирования выполнения языка выражений на странице существует два способа:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eиспользовать директиву \u0026lt;%@ page isELIgnored=»true» %\u0026gt;,\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Eнастроить web.xml (лучше подходит для отключения на EL на многих страницах)\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhycaf6nnoZQrGXN65Vqt1wAlAPx0j2R3Bkfh_HyIQfsW-caQDus92M4hLSOe4ycq0q8PqIDBGm8GXfue63uOYTXxO5cV46wpgpgGoB6-hj85nIUYg8rI-tgQSdWkLwlhG4wGav3Sj4yvY\/s1600\/q084_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhycaf6nnoZQrGXN65Vqt1wAlAPx0j2R3Bkfh_HyIQfsW-caQDus92M4hLSOe4ycq0q8PqIDBGm8GXfue63uOYTXxO5cV46wpgpgGoB6-hj85nIUYg8rI-tgQSdWkLwlhG4wGav3Sj4yvY\/s1600\/q084_p01.jpg\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМожно ли использовать javascript на jsp странице?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EДа, это возможно. Несмотря на то, что JSP серверная технология, она всё равно создает HTML страницу, на которую можно так же добавлять javascript код и css стили.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВсегда ли создается объект сессии на jsp странице, можно ли отключить его создание?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПо умолчанию jsp страница создает сессию, но иногда это не нужно. Мы можем использовать директиву page с атрибутом session для указания не создавать новую сессию по умолчанию. Для отключения создания сессии используется код, показанный ниже.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjpl_fhT_A9pQhfJ07PjltU-qQG7EBsL2YV-JFThCIdxAp9aEhjJsAqQbSF_0iphoftiY_Ca9vDBCwnp0brrTZHqYDz9Z0rsycBdhhfs7YXKtfqej0wdlHKW6OqqhFefpvF0nmjTmXtmks\/s1600\/q086_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjpl_fhT_A9pQhfJ07PjltU-qQG7EBsL2YV-JFThCIdxAp9aEhjJsAqQbSF_0iphoftiY_Ca9vDBCwnp0brrTZHqYDz9Z0rsycBdhhfs7YXKtfqej0wdlHKW6OqqhFefpvF0nmjTmXtmks\/s1600\/q086_p01.jpg\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv style=\"font-family: Arial, Helvetica, sans-serif;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cdiv\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакая разница между JspWriter и Servlet PrintWriter?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EPrintWriter является объектом ответа для записи контента в ответе. JspWriter использует объект PrintWriter незаметно для пользователя и обеспечивают поддержку буферизации. Когда буфер заполнен или очищен, JspWriter использует объект PrintWriter для записи содержания (контента) в ответ.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\n\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак можно расширить функциональность jsp?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМы можем расширить технологию JSP с помощью создания собственных тегов для избегания использования скриптлетов и java кода на JSP страницах.\u003C\/span\u003E\u003C\/div\u003E\n\u003C\/div\u003E\n\u003C\/div\u003E\n\u003Clink href=\"https:\/\/plus.google.com\/105527202953364202368\" rel=\"author\"\u003E\u003C\/link\u003E\u003C\/div\u003E\n"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/jsehelper.blogspot.com\/feeds\/2095705036383019163\/comments\/default","title":"Комментарии к сообщению"},{"rel":"replies","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/05\/jsp-servlets-jstl-4.html#comment-form","title":"Комментарии: 0"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/2095705036383019163"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/2095705036383019163"},{"rel":"alternate","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/05\/jsp-servlets-jstl-4.html","title":"Ответы на вопросы на собеседование JSP, Servlets, JSTL (часть 4)."}],"author":[{"name":{"$t":"vasyl1889"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/06654290728126534362"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEhksWayK33BO62ZWpm0wWEbvDyNEewbFQ5LePA6gM8ltcH7YyH5n-KtqhSaH096wJpRDjL8bztQZ5qG03buBAfVWdn24peZxEvMUU7NJqvECPGTfkXG_VYnQTLSAV7hgR3tMiuTmlBhFSg\/s72-c\/q073_p01.jpg","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-8798235924082241388.post-1081712118883095313"},"published":{"$t":"2016-05-24T07:57:00.001+03:00"},"updated":{"$t":"2016-11-02T19:59:46.272+02:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Interview"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Java Developer"},{"scheme":"http://www.blogger.com/atom/ns#","term":"JSP Servlets JSTL"}],"title":{"type":"text","$t":"Ответы на вопросы на собеседование JSP, Servlets, JSTL (часть 3)."},"content":{"type":"html","$t":"\u003Cdiv dir=\"ltr\" style=\"text-align: left;\" trbidi=\"on\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЗачем нужны и чем отличаются методы encodeUrl() и encodeRedirectUrl()?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EHttpServletResponse предоставляет методы преобразования URL в HTML гиперссылки с преобразованием спец символов и пробелов, а так же добавления session id к URL. Такое поведение аналогично URLEncoder encode(), но с добавлением дополнительного параметра jsessionid в конец URL.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМетод HttpServletResponse encodeRedirectUrl() применяется для преобразования redirect URL в ответе. Таким образом при предоставлении поддержки URL rewriting для HTML гиперссылок необходимо использовать encodeURL(), а для редирект URL’ов использовать encodeRedirectUrl().\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие различные методы управления сессией в сервлетах вы знаете?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСессия является обычным состоянием взаимодействия сервера и клиента и может содержать в себе множество запросов и ответов клиент-сервер. Т.к. HTTP и веб сервер не запоминают состояния (stateless), то единственным\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Ca name='more'\u003E\u003C\/a\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E способом поддерживать сессию является пересылка уникальной информации (session id) в каждом запросе и ответе между клиентом и сервером.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСуществуют несколько распространенных способов управления сессией в сервлетах:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EАутентификация пользователя\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EHTML hidden field (скрытое поле)\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ECookies\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EURL Rewriting\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ESession Management API\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто означает URL Rewriting?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EДля управления сессией в сервлетах мы можем использовать HTTPSession, но он работает с Cookies, а их иногда отключают. Для этого случая в сервлетах предусмотрена возможность URL Rewriting. С точки зрения программирования необходимо всего одно действие - кодирование URL. Другим достоинством является то, что этот метод является как бы запасным и включается только при выключенных куках.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПрименяя метод HttpServletResponse encodeURL() мы можем закодировать URL. Если необходим редирект к другому ресурсу, то для предоставления информации о сессии применяется метод encodeRedirectURL().\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто такое Cookie?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ECookie - это небольшие блоки текстовой информации, которые сервер посылает клиенту для сохранения в файлах cookies. Клиент может запретить браузеру прием файлов cookies. Браузер возвращает информацию обратно на сервер как часть заголовка HTTP, когда клиент повторно заходит на тот же веб-ресурс.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак применяются Cookies в сервлетах?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ECookies (куки) используются в клиент-серверном взаимодействии и они не являются чем-то конкретным в Java. Servlet API предоставляет поддержку cookies через класс javax.servlet.http.Cookie implements Serializable, Cloneable. Для получения массива cookies из запроса необходимо воспользоваться методом HttpServletRequest getCookies(). Для добавления cookies в запрос методов не предусмотрено.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EАналогично HttpServletResponse addCookie(Cookie c) - может добавить cookie в response header, но не существует геттера для этого типа передачи данных.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак уведомить объект в сессии, что сессия недействительна или закончилась?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧтобы быть уверенным об оповещение объекта о прекращении сессии, объект должен реализовывать интерфейс javax.servlet.http.HttpSessionBindingListener. Два метода этого интерфейса: valueBound() и valueUnbound() применяются для реализации логики при добавлении объекта в качестве атрибута к сессии и при уничтожения сессии.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакой существует эффективный способ удостоверится, что все сервлеты доступны только для пользователя с валидной сессией?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСервлет фильтры используются для перехвата всех запросов между контейнером сервлетов и сервлетом. Поэтому логично использовать фильтр для проверки необходимой информации (например валидности сессии) в запросе.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак мы можем обеспечить transport layer security для нашего веб приложения?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EДля этого необходимо настроить SSL для вашего сервлет контейнера. Как это сделать описано в мануалах для конкретной реализации контейнера.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак организовать подключение к базе данных и обеспечить логирование log4j в сервлете?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПри работе с большим количеством подключений к базе данных рекомендуется инициализировать их в servlet context listener и установить в качестве атрибута контекста для возможности использования другими сервлетами. Логирование Log4j подключается с помощью конфигурации XML (или файла property) и далее эта информация используется при конфигурировании context listener’а.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие особенности Servlet 3?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cspan lang=\"RU\" style=\"font-family: \u0026quot;arial\u0026quot; , sans-serif; font-size: 12.0pt; line-height: 115%;\"\u003EОсобенности Servlet 3.0:\u003C\/span\u003E\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EServlet Annotations. До Servlet 3 весь маппинг был в web.xml, что приводило к ошибкам и банально неудобно при большом количестве сервлетов. Примеры аннотаций: \u0026nbsp;@WebServlet, @WebInitParam, @WebFilter, @WebListener.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EWeb Fragments. С появлением веб фрагментов мы можем содержать множество модулей в одностраничном веб приложении. Все модули прописываются в fragment.xml в META-INF директории. Это позволяет разделять веб приложение на отдельные модули, включенные как JAR файлы в отдельной lib директории.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EДинамическое добавление веб компонентов. Используя ServletContext объект, мы можем программно добавлять фильтры и слушатели. Это помогает построить динамическую систему, в которой необходимый объект будет вызван только по необходимости. Для этого применяются методы addServlet(), addFilter(), addListener().\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EАсинхронное выполнение. Поддержка асинхронной обработки позволяет передать выполнение запроса в другой поток без удержания всего сервера занятым.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКаковы различные способы аутентификации сервлета?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКонтейнер сервлетов предоставляет различные способы аутентификации:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EHTTP Basic Authentication\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EHTTP Digest Authentication\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EHTTPS Authentication\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EForm Based Login\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто такое Java Server Pages (JSP)?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJSP (Java Server Pages) - технология, позволяющая веб-разработчикам динамически генерировать HTML, XML и другие веб-страницы. JSP был включен в состав Java EE - программной платформы для программирования веб-приложений. Технология позволяет вставлять Java-код, в статический содержимое страницы. Также могут использоваться библиотеки JSP тегов для вставки их в JSP-страницы. Страницы компилируются JSP-компилятором в сервлеты, которые являются Java-классами, и выполняются на сервере. Сервлеты также могут быть написаны разработчиком, не используя JSP-страницы. Эти технологии дополняют друг друга.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EОпишите, как обрабатываются JSP страницы, начиная от запроса к серверу, заканчивая ответом пользователю.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКогда пользователь переходит по ссылке, назовем ее index.jsp, он отправляет http запрос на сервер в виде \"GET \/index.jsp\". Затем на основе этой страницы, сервер генерирует, компилирует и выполняет Java сервлет, который приходит ответом пользователю в виде отображения этой страницы. Такой жизненный цикл можно разделить на 6 шагов:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Col\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЗапрос от пользователя.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧтение .jsp страницы сервером.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EГенерация java класса на основе этой .jsp страницы.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКомпиляция в class файл.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВыполнение class файла.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EОтправка ответа пользователю в виде html страницы.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ol\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EРасскажите об этапах (фазах) жизненного цикла jsp.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЕсли посмотреть код внутри созданной JSP страницы, то он будет выглядеть как HTML и не будет похож на java класс. Конвертацией JSP страниц в HTML код занимается контейнер, который так же создает сервлет для использования в веб приложении. Жизненный цикл JSP состоит из нескольких фаз:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ETranslation - JSP контейнер проверяет код JSP страницы, парсит ее для создания кода сервлета. К примеру, в Tomcat вы можете найти классы сервлетов в директории TOMCAT\/work\/Catalina\/localhost\/WEBAPP\/org\/apache\/jsp. Если страница JSP называется home.jsp, то созданный сервлет обычно будет иметь имя home_jsp и имя файла - home_jsp.java.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ECompilation - JSP контейнер компилирует исходный код jsp класса и создает класс на этой фазе.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EClass Loading - контейнер загружает классы в память на этой фазе.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EInstantiation - внедрение конструкторов без параметров созданных классов для инициализации в памяти классов.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EInitialization - в контейнере вызывается init метод объекта JSP класса и инициализируется конфигурация сервлета с init параметрами, которые указаны в дескрипторе развертывания (web.xml). После этой фазы JSP способен обрабатывать запросы клиентов.Обычно эти фазы происходят после первого запроса клиента (т.е. ленивая загрузка), но можно настроить загрузку и инициализацию JSP на старте приложения по аналогии с сервлетами.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003ERequest Processing - длительный жизненный цикл \u0026nbsp;обработки запросов клиента JSP страницей. Обработка является многопоточной и аналогична сервлетам - для каждого запроса создается новая нить, создаются объекты ServletRequest и ServletResponse и происходит внедрение сервис методов JSP.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EDestroy - последняя фаза жизненного цикла JSP на которой JSP класс удаляется из памяти. Обычно это происходит при выключении сервера или андеплое приложения.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EРасскажите о методах жизненного цикла jsp.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМетоды жизненного цикла JSP:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EjspInit() - метод объявлен в JSP странице \u0026nbsp;и реализуется с помощью реализаций контейнера. Этот метод вызывается один раз в жизненном цикле JSP для того, чтобы инициализировать конфигурационные параметры, указанные в дескрипторе развертывания. Этот метод можно переопределить с помощью определения элемента JSP scripting и указания необходимых параметров для инициализации.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E_jspService() - этот JSP метод внедряется JSP контейнером для каждого запроса клиента с помощью передачи объекта запроса и ответа. Отметьте, что имя метода начинается с нижнего подчеркивания и отличается от других методов жизненного цикла тем, что его невозможно переопределить. Весь JSP код проходит через этот метод и он переопределен по умолчанию. Этот метод определен в HttpJspPage интерфейсе.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EjspDestroy() - метод вызывается контейнером JSP для удаления объекта из памяти (на последней фазе жизненного цикла JSP - Destroy). Метод вызывается только один раз и мы можем его переопределить для очищения любых ресурсов, которые были созданы в JSP init методе.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие методы жизненного цикла JSP могут быть переопределены?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМы можем переопределить jspInit() и jspDestroy() методы с помощью использования скриптов JSP. Метод jspInit() переопределяется для создания общих ресурсов, которые мы хотели бы использовать в методе обслуживания JSP, а jspDestroy() метод переопределяется, чтобы освободить общие ресурсы на фазе уничтожения.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак можно предотвратить прямой доступ к JSP странице из браузера?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EДиректория WEB-INF не имеет прямого доступа из веб приложения. Поэтому мы можем положить JSP страницы внутри этой папки и тем самым запретить доступ к странице из браузера. Однако в этом случае необходимо настраивать дескриптор развертывания наподобие сервлетов. Простая конфигурация дескриптора web.xml показана ниже.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjpmEIUv7ciujc0v41BALUsqXSIzBHKQe3uvOrdh92T2kBWrw2xHruxv0jrvu1G-vhXzStOG6DIamdbSsoz-uRe_x5Y6B8t2pJQ0SeuyscxUKdWn4j3qi9D51pqRhY80HI2AXcfjpTUtkw\/s1600\/q058_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjpmEIUv7ciujc0v41BALUsqXSIzBHKQe3uvOrdh92T2kBWrw2xHruxv0jrvu1G-vhXzStOG6DIamdbSsoz-uRe_x5Y6B8t2pJQ0SeuyscxUKdWn4j3qi9D51pqRhY80HI2AXcfjpTUtkw\/s1600\/q058_p01.jpg\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: justify;\"\u003E\n\u003Cbr \/\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакая разница между динамическим и статическим содержимым JSP?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EДинамические ресурсы. Результаты их деятельности изменяются во время выполнения приложения. Обычно представлены в виде выражений Expression Language, библиотек тегов и тегов разработчика.\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСтатические ресурсы. Не изменяются сами в процессе работы (HTML, JavaScript, изображения и т. д.).\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак закомментировать код в jsp?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJSP предоставляет две возможности закомментировать код:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EHTML комментарии - \u0026lt;-- HTML Comment --\u0026gt; . Такие комментарии будут видны клиенту при просмотре кода страницы.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EJSP комментарии - \u0026lt;%-- JSP Comment --%\u0026gt;. Такие комментарии создаются в созданном сервлете и не посылаются клиенту. Для любых комментариев по коду или отладочной информации необходимо использовать этот тип комментариев.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие основные теги в JSP?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВ спецификации JSP 1.2 были объявлены только пять основных тегов:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u0026lt;%@ директива %\u0026gt; - используется для установки параметров серверной страницы JSP;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u0026lt;%! объявление %\u0026gt; - (нежелателен в современном программировании) содержит поля и методы, которые вызываются в expression-блоке и становятся полями и методами генерируемого сервлета.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u0026lt;% скриптлет %\u0026gt; - (нежелателен) вживление java-кода в JSP-страницу. Скриптлеты обычно используют маленькие блоки кода и выполняются во время обработки запроса клиента.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u0026lt;%= вычисляемое выражение %\u0026gt; - (нежелателен) содержит операторы языка Java, которые вычисляются, после чего результат вычисления преобразуется в строку String и посылается в поток out;\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u0026lt;%-- JSP-комментарий --%\u0026gt; - комментарий, который не отображается в исходных кодах JSP-страницы после этапа выполнения.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие типы EL операторов вы знаете?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСтандартные операторы отношения:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E== (или eq), != (или ne), \u0026lt; (или lt), \u0026gt; (или gt), \u0026lt;= (или le), \u0026gt;= (или ge).\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EАрифметические операторы: +, -, *, \/ (или div), % (или mod).\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЛогические операторы: \u0026amp;\u0026amp; (или and), || (или or), ! (или not).\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВзаимодействие JSP - сервлет - JSP.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EТакая архитектура построения приложений носит название MVC (Model\/View\/Controller). Model - классы бизнес-логики и длительного хранения, View - страницы JSP, Controller - сервлет.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто такое сессия?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСессия \u0026nbsp;- это сеанс между клиентом и сервером, устанавливаемая на определенное время, за которое клиент может отправить на сервер сколько угодно запросов. Сеанс устанавливается непосредственно между клиентом и веб-сервером в момент получения первого запроса к веб-приложению. Каждый клиент устанавливает с сервером свой собственный сеанс, который сохраняется до окончания работы с приложением.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Ca href=\"https:\/\/jsehelper.blogspot.nl\/2016\/05\/jsp-servlets-jstl-4.html\"\u003EJSP, Servlets, JSTL (часть 4).\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Clink href=\"https:\/\/plus.google.com\/105527202953364202368\" rel=\"author\"\u003E\u003C\/link\u003E\u003C\/div\u003E\n"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/jsehelper.blogspot.com\/feeds\/1081712118883095313\/comments\/default","title":"Комментарии к сообщению"},{"rel":"replies","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/05\/jsp-servlets-jstl-3.html#comment-form","title":"Комментарии: 0"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/1081712118883095313"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/1081712118883095313"},{"rel":"alternate","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/05\/jsp-servlets-jstl-3.html","title":"Ответы на вопросы на собеседование JSP, Servlets, JSTL (часть 3)."}],"author":[{"name":{"$t":"vasyl1889"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/06654290728126534362"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEjpmEIUv7ciujc0v41BALUsqXSIzBHKQe3uvOrdh92T2kBWrw2xHruxv0jrvu1G-vhXzStOG6DIamdbSsoz-uRe_x5Y6B8t2pJQ0SeuyscxUKdWn4j3qi9D51pqRhY80HI2AXcfjpTUtkw\/s72-c\/q058_p01.jpg","height":"72","width":"72"},"thr$total":{"$t":"0"}},{"id":{"$t":"tag:blogger.com,1999:blog-8798235924082241388.post-205019333111557215"},"published":{"$t":"2016-05-23T08:36:00.000+03:00"},"updated":{"$t":"2016-11-02T19:59:46.302+02:00"},"category":[{"scheme":"http://www.blogger.com/atom/ns#","term":"Interview"},{"scheme":"http://www.blogger.com/atom/ns#","term":"Java Developer"},{"scheme":"http://www.blogger.com/atom/ns#","term":"JSP Servlets JSTL"}],"title":{"type":"text","$t":"Ответы на вопросы на собеседование JSP, Servlets, JSTL (часть 2)."},"content":{"type":"html","$t":"\u003Cdiv dir=\"ltr\" style=\"text-align: left;\" trbidi=\"on\"\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКаков жизненный цикл сервлета и когда какие методы вызываются?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКонтейнер сервлетов управляет четырьмя фазами жизненного цикла сервлета:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЗагрузка класса сервлета - когда контейнер получает запрос для сервлета, то происходит загрузка класса сервлета в память и вызов конструктора без параметров.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EИнициализация класса сервлета - после того как класс загружен контейнер инициализирует объект ServletContext для этого сервлета и внедряет его через init() метод. Это и есть место где сервлет класс преобразуется из обычного класса в сервлет.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EОбработка запросов - после инициализации сервлет готов к обработке запросов. Для каждого запроса клиента сервлет контейнер порождает новую нить (поток) и вызывает метод service() путем передачи ссылки на объект ответы и запроса.\u003Ca name='more'\u003E\u003C\/a\u003E\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EУдаление из Service - когда контейнер останавливается или останавливается приложение, то контейнер сервлетов уничтожает классы сервлетов путем вызова destroy() метода.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМожно описать как последовательность вызова методов: init(), service(), destroy().\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Epublic void init(ServletConfig config) - используется контейнером для инициализации сервлета. Вызывается один раз за время жизни сервлета.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Epublic void service(ServletRequest request, ServletResponse response) - вызывается для каждого запроса. Метод не может быть вызван раньше выполнения init() метода.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003Epublic void destroy() - вызывается для уничтожения сервлета (один раз за время жизни сервлета).\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие методы необходимо определить при создании сервлетов?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧтобы создать сервлет, необходимо описать сервлет с помощью:\u003C\/span\u003E\u003C\/div\u003E\n\u003Cdiv style=\"text-align: justify;\"\u003E\n\u003Cdiv class=\"separator\" style=\"clear: both; text-align: center;\"\u003E\n\u003Ca href=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEj_2qKB5h8LE-Ii1LHaPaXbOyFM6IQHMvZVvLWYpA083GY-3Tul0n-3_V1b9CH1HgTRiaRA2VnN6XvBVU2LAxobKUwH4xgUrbPUJobzfJ-jit_XOz-O1C71wU8M5pXN8kn5FhwCbz7PdVs\/s1600\/q023_p01.jpg\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"\u003E\u003Cimg border=\"0\" src=\"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEj_2qKB5h8LE-Ii1LHaPaXbOyFM6IQHMvZVvLWYpA083GY-3Tul0n-3_V1b9CH1HgTRiaRA2VnN6XvBVU2LAxobKUwH4xgUrbPUJobzfJ-jit_XOz-O1C71wU8M5pXN8kn5FhwCbz7PdVs\/s1600\/q023_p01.jpg\" \/\u003E\u003C\/a\u003E\u003C\/div\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЗатем расширить класс сервлета от класса HttpServlet.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EРеализовать метод service() или doGet(), doPost() (или первый или вторые).\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВ каком случае вы будете переопределять метод service()?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМетод service() переопределяется, когда мы хотим, чтобы сервлет обрабатывал как GET так и POST запросы в одном методе. Когда контейнер сервлетов получает запрос клиента, то происходит вызов метода service(), который в свою очередь вызывает doGet(), doPost() методы, основанные на HTTP методе запроса. Есть мнение, что метод service() переопределять особого смысла нет, кроме указанного вначале случая использования одного метода на два типа запросов.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЕсть ли смысл определить конструктор для сервлета? Как лучше инициализировать данные?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EТакая возможность есть, но считается бессмысленной. Инициализировать данные лучше переопределив метод init(), в котором получить доступ к параметрам инициализации сервлета через использование объекта ServletConfig.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВ чем отличия GenericServlet и HttpServlet?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EАбстрактный класс GenericServlet - независимая от используемого протокола реализация интерфейса Servlet. HttpServlet, как понятно из название, реализация интерфейса сервлета для протокола HTTP. Следует отметить, что HttpServlet extends GenericServlet.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКак вызвать из сервлета другой сервлет этого же и другого приложения?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЕсли необходимо вызывать сервлет из того же приложения, то необходимо использовать механизм внутренней коммуникации сервлетов. Мы можем вызвать другой сервлет с помощью RequestDispatcher forward() и include() методов для доступа к дополнительным атрибутам в запросе для использования в другом сервлете. Метод forward() используется для передачи обработки запроса в другой сервлет. Метод include() используется, если мы хотим вложить результат работы другого сервлета в возвращаемый ответ.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЕсли необходимо вызывать сервлет из другого приложения, то использовать RequestDispatcher уже не получится (определен для приложения). Поэтому можно использовать ServletResponse sendRedirect() метод и предоставить полный URL из другого сервлета. Для передачи данных можно использовать cookies как часть ответа сервлета, а потом использовать их в нашем сервлете.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСтоит ли волноваться о \"многопоточной безопасности\" работая с сервлетами?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМетоды класса HTTPServlet init() и destroy() вызываются один раз за жизненный цикл сервлета - поэтому по поводу них беспокоиться не стоит. Методы doGet(), doPost() вызываются на каждый запрос клиента и т.к. сервлеты используют многопоточность, то здесь нужно задумываться о потокобезопасной работе.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВ случае наличия локальных переменных в этих методах нет необходимости думать о многопоточной безопасности, т.к. они будут созданы отдельно для каждой нити. Но если используются глобальные ресурсы, то необходимо использовать синхронизацию как и в любом многопоточном приложении Java.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакой метод HTTP не является неизменяемым?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EHTTP метод называется неизменяемым, если он всегда возвращает одинаковый результат. HTTP методы GET, PUT, DELETE, HEAD, OPTIONS являются неизменяемыми. Необходимо реализовывать приложение так, чтобы эти методы возвращали одинаковый результат. К изменяемым методам относится HTTP метод POST. Post метод используется для реализации чего-либо, что изменяется при каждом запросе.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EК примеру, для доступа к HTML странице или изображению необходимо использовать метод GET, т.к. он возвращает одинаковый результат. Но если нам необходимо сохранить информацию о заказе в базе данных, то нужно использовать POST метод. Неизменяемые методы так же известны как безопасные методы и нет необходимости заботится о повторяющихся запросах от клиента для этих методов.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие есть методы отправки данных с клиента на сервер? Чем они отличаются?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМетод doGet() - используется для запроса содержимого указанного ресурса, изображения или гипертекстового документа. Вместе с за просом могут передаваться дополнительные параметры как часть URI, значения могут выбираться из полей формы или передаваться непосредственно через URL. При этом запросы кэшируются и имеют ограничения на размер. Этот метод является основным методом взаимодействия браузера клиента и веб-сервера.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМетод doPost() - используется для передачи пользовательских данных в содержимом HTTP-запроса на сервер. Пользовательские данные упакованы в тело запроса согласно полю заголовка Content-Type и\/или включены в URI запроса. При использовании метода POST под URI подразумевается ресурс, который будет обрабатывать запрос.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМетоды сервлета (обычно имеется ввиду HttpServlet).\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВ спецификации HTTP определены методы: GET, HEAD, POST, PUT, DELETE, OPTIONS и TRACE.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМетод GET (method=\"GET\") используется для запроса содержимого указанного ресурса, изображения или гипертекстового документа. Вместе с запросом могут передаваться дополнительные параметры как часть URI, значения могут выбираться из полей формы или передаваться непосредственно через URL. При этом запросы кэшируются и имеют ограничения на размер. Этот метод является основным методом взаимодействия браузера клиента и веб-сервера.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМетод POST используется для передачи пользовательских данных в содержимом HTTP-запроса на сервер. Пользовательские данные упакованы в тело запроса согласно полю заголовка Content-Type и\/или включены в URI запроса. При использовании метода POST под URI подразумевается ресурс, который будет обрабатывать запрос.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМетод PUT схож с методом POST за тем исключением, что здесь URI подразумевает ресурс, который будет создан или сохранен на сервере в результате выполнения PUT-запроса.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМетод DELETE предназначен для удаления целевого ресурса.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EОба эти действия на некоторых серверах могут запрещаться из-за угрозы внутренней безопасности.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМетод HEAD предполагает возврат сервером такого же ответа, как и при использовании GET, но без тела ответа. Метод обычно используется для того, чтобы проверить существование ресурса либо узнать, изменился ли запрашиваемый ресурс с момента последнего обращения.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМетод OPTIONS должен возвращать информацию о возможностях вебсервера или параметрах соединения для конкретного ресурса.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМетод TRACE возвращает клиенту запрос в том виде, в каком он пришел на сервер - используется для отладки, определяя заголовки, добавляемые промежуточными серверами, а также для тестирования настроек соединения.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПочему HttpServlet класс объявлен как абстрактный?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКласс HTTPServlet предоставляет реализацию HTTP протокола сервлета (а следовательно помогает избежать постоянного кодинга повторяющейся информации), но он не имеет реализованных методов doGet() и doPost() (у них по умолчанию возвращение HTTP 405 Method Not Implemented error), а следовательно объявлен абстрактным. Реализация этих методов перекладывается на разработчика.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВ чем разница между методами GET и POST?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EОсновные отличия:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EGET метод является неизменяемым, тогда как POST - изменяемый.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EС помощью метода GET можно посылать ограниченное кол-во данных, которые будут пересланы в заголовке URL. В случае POST метода мы можем пересылать большие объемы данных, т.к. они будут находится в теле метода.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EДанные GET метода передаются в открытом виде, что может использоваться в зловредных целях. POST данные передаются в теле запроса и скрыты от пользователя.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EGET метод является HTTP методом по умолчанию, а POST метод необходимо указывать явно, чтобы отправить запрос.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EGET метод используется гиперссылками на странице.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cbr \/\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНазовите преимущества Servlet над CGI?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EТехнология сервлетов была создана для преодоления недостатков Common Gateway Interface (общий интерфейс шлюза). Можно выделить следующие преимущества сервлетов над CGI:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСервлеты предоставляют лучшую производительность в условиях обработки запросов, лучшее использование памяти за счет использования преимущества многопоточности (на каждый запрос создается новая нить, что быстрее выделения памяти под новый объект для каждого запроса, как это происходит в CGI).\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСервлеты, платформа и система являются независимыми. Таким образом веб приложение написанное с использованием сервлетов может быть запущена в любом контейнере сервлетов, реализующим стандарт и в любой операционной системе.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EИспользование сервлетов повышает надежность программы, т.к. контейнер сервлетов самостоятельно заботится о жизненном цикле сервлетов (а значит и за утечками памяти), безопасности и сборщике мусора.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EСервлеты относительно легки в изучении и поддержке, т.к. разработчику необходимо заботится только о бизнес логике приложения, а не внутренней реализации веб технологий.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cbr \/\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКаковы наиболее распространенные задачи выполняются в Servlet контейнере?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EНекоторые из них:\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПоддержка обмена данными. Контейнер сервлетов предоставляет легкий способ обмена данными между веб клиентом (браузером) и сервлетом. Благодаря контейнеру нет необходимости создавать слушателя сокета на сервере для отслеживания запросов от клиента, а также разбирать запрос и генерировать ответ. Все эти важные и комплексные задачи решаются с помощью контейнера и разработчик может сосредоточиться на бизнес логике приложения.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EУправления жизненным циклом сервлетов и ресурсов. Начиная от загрузки сервлета в память, инициализации, внедрения методов и заканчивая уничтожением сервлета. Контейнер так же предоставляет дополнительные утилиты, например JNDI, для управления пулом ресурсов.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПоддержка многопоточности. Контейнер самостоятельно создает новую нить для каждого запроса и предоставляет ей запрос и ответ для обработки. Таким образом сервлет не инициализируется заново для каждого запроса и тем самым сохраняет память и уменьшает время до обработки запроса.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПоддержка JSP. JSP классы не похожи на стандартные классы джавы, но контейнер сервлетов преобразует каждую JSP в сервлет и далее управляется контейнером как обычным сервлетом.\u003C\/span\u003E\u003C\/li\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EРазличные задачи. Контейнер сервлетов управляет пулом ресурсов, памятью приложения, сборщиком мусора. Предоставляются возможности настройки безопасности и многое другое.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003Cbr \/\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EВ чем разница между PrintWriter и ServletOutputStream?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Ch3\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EPrintWriter - это класс для работы с символьным потоком, а ServletOutputStream - класс для работы байтовым потоком. PrintWriter используется для записи информации на основе символов, вроде массива символов или строки в ответ, в то время как ServletOutputStream используется для записи в ответ массива байтов. Для получения экземпляра ServletOutputStream используется метод ServletResponse getOutputStream(), а для PrintWriter - метод ServletResponse getWriter().\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМожем ли мы получить PrintWriter и ServletOutputStream одновременно в сервлете?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EМы не можем создать два объекта этих классов в одном сервлете. При попытке внедрить оба метода getWriter() и getOutputStream() в ответе, мы получим исключение java.lang.IllegalStateException с сообщением, что уже другой метод был вызван для этого ответа.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EРасскажите об интерфейсе SingleThreadModel.\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EИнтерфейс был создан, чтобы гарантировать потокобезопасность и невозможность создания двух нитей в сервис методе сервлета. Однако интерфейс SingleThreadModel не решает всех проблем потокобезопасности. Например, атрибуты сессии или статические переменные могут быть доступны различным запросам в различных потоках в одно и тоже время (даже при использовании этого интерфейса). Интерфейс объявлен deprecated начиная с Servlet 2.4.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EКакие существуют атрибуты у сервлетов и какая сфера их применения?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EАтрибуты сервлетов используются для внутренней коммуникации сервлетов. Мы можем использовать атрибуты set, get, remove в веб приложении.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EИнтерфейсы ServletRequest, HttpSession и ServletContext предоставляют методы для get(), set(), remove() атрибутов из request scope, session scope, application scope.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EПочему необходимо переопределить только init() метод без аргументов?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЕсли нам необходимо инициализировать какие-то ресурсы до того как сервлет начнет обрабатывать запросы, то необходимо переопределить метод init(). Если переопределить метод init(ServletConfig config), то первым должен быть вызван метод super(config), который обеспечит вызов метода init(ServletConfig config) суперкласса. Именно поэтому GenericServlet предоставляет другой метод init() без параметров, который будет вызываться в конце метода init(ServletConfig config). Разработчик должен использовать переопределенный метод init() без параметров для инициализации переменных для избежания каких-либо проблем, например не указав вызов super() в переопределенном методе init(ServletConfig config).\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Cbr \/\u003E\u003C\/span\u003E\n\u003Ch3\u003E\n\u003Cul\u003E\n\u003Cli\u003E\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EЧто означает URL encoding? Зачем нужны методы encode() и decode()?\u003C\/span\u003E\u003C\/li\u003E\n\u003C\/ul\u003E\n\u003C\/h3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003EURL Encoding - процесс преобразования данных в форму CGI (Common Gateway Interface), который позволит путешествовать по сети без проблем. URL Encoding разделяет пробелы и заменяет специальные символы с помощью escape-символов. Например, для кодирования строки используется метод \u0026nbsp;java.net.URLEncoder.encode(String str, String unicode). Обратная операция декодирования возможна благодаря методу java.net.URLDecoder.decode(String str, String unicode). Пример работы метода: строка “ Java programing language” будет преобразована в “Java%20programing%20language ”.\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003C\/span\u003E\u003Cbr \/\u003E\n\u003Ch3\u003E\n\u003Cspan style=\"font-family: \u0026quot;arial\u0026quot; , \u0026quot;helvetica\u0026quot; , sans-serif;\"\u003E\u003Ca href=\"https:\/\/jsehelper.blogspot.nl\/2016\/05\/jsp-servlets-jstl-3.html\"\u003EJSP, Servlets, JSTL (часть 3).\u003C\/a\u003E\u003C\/span\u003E\u003C\/h3\u003E\n\u003C\/div\u003E\n\u003Clink href=\"https:\/\/plus.google.com\/105527202953364202368\" rel=\"author\"\u003E\u003C\/link\u003E\u003C\/div\u003E\n"},"link":[{"rel":"replies","type":"application/atom+xml","href":"https:\/\/jsehelper.blogspot.com\/feeds\/205019333111557215\/comments\/default","title":"Комментарии к сообщению"},{"rel":"replies","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/05\/jsp-servlets-jstl-2.html#comment-form","title":"Комментарии: 1"},{"rel":"edit","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/205019333111557215"},{"rel":"self","type":"application/atom+xml","href":"https:\/\/www.blogger.com\/feeds\/8798235924082241388\/posts\/default\/205019333111557215"},{"rel":"alternate","type":"text/html","href":"https:\/\/jsehelper.blogspot.com\/2016\/05\/jsp-servlets-jstl-2.html","title":"Ответы на вопросы на собеседование JSP, Servlets, JSTL (часть 2)."}],"author":[{"name":{"$t":"vasyl1889"},"uri":{"$t":"http:\/\/www.blogger.com\/profile\/06654290728126534362"},"email":{"$t":"noreply@blogger.com"},"gd$image":{"rel":"http://schemas.google.com/g/2005#thumbnail","width":"16","height":"16","src":"https:\/\/img1.blogblog.com\/img\/b16-rounded.gif"}}],"media$thumbnail":{"xmlns$media":"http://search.yahoo.com/mrss/","url":"https:\/\/blogger.googleusercontent.com\/img\/b\/R29vZ2xl\/AVvXsEj_2qKB5h8LE-Ii1LHaPaXbOyFM6IQHMvZVvLWYpA083GY-3Tul0n-3_V1b9CH1HgTRiaRA2VnN6XvBVU2LAxobKUwH4xgUrbPUJobzfJ-jit_XOz-O1C71wU8M5pXN8kn5FhwCbz7PdVs\/s72-c\/q023_p01.jpg","height":"72","width":"72"},"thr$total":{"$t":"1"}}]}});