1 / 24

Application Services

Application Services. Проект Apache Jakarta. Apache Jakarta Project – создаёт и поддерживает открытое программное обеспечение на платформе Java для предоставления в публичный доступ абсолютно бесплатно. Apache Jakarta Tomcat или просто Tomcat один из таких проектов

dorian-chan
Download Presentation

Application Services

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Application Services

  2. Проект Apache Jakarta • Apache Jakarta Project – создаёт и поддерживает открытое программное обеспечение на платформе Java для предоставления в публичный доступ абсолютно бесплатно. • Apache Jakarta Tomcat или просто Tomcat один из таких проектов • Tomcat это контейнер servlet’ов • Tomcat представляет собой простой сервер для Web приложение, позволяющий использовать HTML, JSP и servlet’ы • Он является промышленным оптимизированным сервером • Часто контейнер servlet’ов используют отдельно от сервера Tomcat

  3. Где взять Tomcat? • Есть свой сайт проекта Tomcat http://tomcat.apache.org/ • Для получение последнй стабильной версии Tomcat (на данный момент 7)можно пройти по ссылке http://tomcat.apache.org/ • Один из справочников по настройки и конфигурации Tomcat http://www.coreservlets.com/Apache-Tomcat-Tutorial/tomcat-7-with-eclipse.html • Также на сайте содержится много примеров использования сервера • Возможна установка Apache и добавление Tomcat поверх, но можно так и не делать

  4. Web apps • Web приложение это фактически сайт: • Который знает кто ты есть – не предоставляет статическую информацию, а пытается взаимодействовать с пользователем • Может навсегда изменить информацию (например сделать запись в БД) • Web приложение может состоять из нескольких частей • Статические web страницы (возможно содержащие формы) • Servlet’ы • JSP • Tomcat организует все такие страницы в одной директории для каждого web приложения • Но можно помочь ему это сделать

  5. Директории • При написании servlet’ов удобно иметь две структуры директорий • Директория для разработки, в которую вы можете записывать и отлаживать код • Директория для развёртывания, куда будет складываться “живой” код • Tomcat требует некоторый набор директоре для приложения • У всего жестко задано своё место • Также web приложение должно сосуществовать с другими приложениями. Нужно использовать пакеты, чтобы избежать конфликта имён • Эта особенность усложняет структуру директорий Tomcat

  6. Пакеты • Имя пакета объявляется первой строкой в коде java файла • Пример packagecom.example.model;importjavax.servlet.*;importjavax.servlet.http.*;import java.io.*;public class MyServletextends HttpServlet { ... } • Относительно директорий это означает, что файл MyServlet.java находится в каталоге {project_dir}/com/example/model

  7. Структура директорий Tomcat myApplicationDirectory/ - директория верхнего уровня myWebForm.html myJspPage.jsp WEB-INF/ - это обязательная директория, которая должна называться именно так lib/ - директория для внешних jar-файлов classes/ - обязательная директория com/ example/ model/ myModel.class– в пакете с именем com.example.model web/ myServlet.class – в пакете com.example.web web.xml – файл описывающий развёртывание, его имя обязательно

  8. Файлы • myWebForm.html • Это web страница с формой которая отправляет запрос к servlet’у • com/example/web/myServlet.class • Это класс servlet, но для работы ему потребуется загрузить класс myModel • com/example/model/myModel.class • Это класс содержащий бизнес логику, хорошая идея выносить логику отдельно • myJspPage.jsp • Jspстраница создающая HTML, на неё можно перейти непосредственно из servlet’а (myServlet) • web.xml • Файл который требуется Tomcat’у для того чтобы узнать какой класс следует вызывать при обращении к ресурсу

  9. myWebForm.html <html> ... <body> ... <form method="POST" action="NameSeenByUser.do"> ...разные элементы формы (input, button, select)... </form> ... </body> </html>

  10. web.xml <?xml version="1.0" encoding="ISO-8859-1"?> <web-appxmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>Some_internal_name</servlet-name> <servlet-class>com.example.web.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Some_internal_name</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>

  11. Servlet без JSP public classMyServletextends HttpServlet{ public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); String value = request.getParameter("name"); out.println("<html><body>I got: "+ name +" = "+ value + "</body></html>"); } }

  12. Servlet с JSP public class MyServletextends HttpServlet{ public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String value = request.getParameter("name"); ...передача результата на страницу через объект obj... request.setAttribute(“objName”, obj); RequestDispatcher view = request.getRequestDispatcher("result.jsp"); view.forward(request, response); } }

  13. JSP (result.jsp) <%@ page import="java.util.*" %> <html> <head><title>Your results</title></head> <body> <% MyObject object = (MyObject)request.getAttribute("objName"); String someResult = ...используем объект для взаимодействия... out.print("<br>And the answer is: " + someResult); %> </body> </html>

  14. Поток обработки • Пользователь оправляет HTML форму • Tomcat находит servlet соответствующий указанному urlпо описателю развёртывания (web.xml)и передаёт запрос в servlet • Servlet обрабатывает запрос и формирует ответ • Либо • Servlet записывает HTML в ответ • Или • Servlet передаёт ответ JSP странице • JSP формирует HTML на основе ответа • Tomcat возвращает HTML станицу пользователю

  15. Servlet 3.0 • Привязывание Servlet’ачерез аннотации в соответствии со стандартом Servlet 3.0 @WebServlet(name="HelloServlet", urlPatterns={"/HelloServlet"}) publicclassHelloServletextendsHttpServlet{   @Overrideprotectedvoidservice(HttpServletRequestrequest, HttpServletResponseresponse) throwsServletException{} } • То же связывание только через web.xml <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.example.web.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/HelloServlet</url-pattern> </servlet-mapping>

  16. Фильтры • Объект которой может перехватывать запрос до того как он попал к Servlet’у, JSP или любому статическому ресурсу • Позволяет добавить дополнительный слой логики управляющий доступом к ресурсам

  17. Фильтры

  18. Реализация фильтра • Необходимо реализовать интерфейс javax.servlet.Filter • Методы • initвызывается один раз при загрузке класса фильтра • destroy вызывается когда класс выгружается из загрузчика • doFilterосновной метод вызывается при запросе к ресурсу

  19. Пример importjavax.servlet.*; importjava.io.IOException; /**   */ publicclassSimpleServletFilterimplementsFilter{ publicvoidinit(FilterConfigfilterConfig) throwsServletException{} publicvoiddoFilter(ServletRequestrequest, ServletResponseresponse, FilterChainfilterChain) throwsIOException, ServletException{ StringmyParam=request.getParameter("myParam"); if(!"blockTheRequest".equals(myParam)){ filterChain.doFilter(request, response);return; } HttpResponsehttpResponse=(HttpResponse)httpResponse; httpResponse.getWriter().write( "a differentresponse... e.gin HTML"); } publicvoiddestroy(){} }

  20. Объявление Для того чтобы web приложение могло использовать фильтр, его нужно привязать к адресу, также как и servlet (через web.xml) <filter> <filter-name>myFilter</filter-name> <filter-class>servlets.SimpleServletFilter</filter-class> </filter> <filter-mapping> <filter-name>myFilter</filter-name> <url-pattern>*.simple</url-pattern> </filter-mapping> или с помощюанатация (для спецификации Servlet 3.0) @ServletFilter(name = "myFilter", urlPatterns={"*.simple"}) publicclassSimpleServletFilterimplementsjavax.servlet.Filter{ ... }

  21. Развёртывание приложение на сервере IDE (NetBeans, Intellij, Eclipse) Build system (Ant, Maven, Gradle) Файлы с исходным кодом на java Код для виртуальной машины Zip архив содержащий class файлы *.class *.java *.jar/ *.war Application Server (Tomcat, GlassFish, JBoss) jvm javac Исполнитель class файлов Компилятор исходного кода java

  22. Развёртывание приложение на сервере • По умолчанию Tomcat настроен на директорию webappsв корневом каталоге %CATALINA_HOME% • Корневую директорию можно настроить в конфигурационном файле %CATALINA_HOME%\conf\server.xml • В обычном случаедля развёртывания приложения достаточно положить .war архив в каталог webapps

  23. Альтернативы • Sun java Web Service • Старый web service сейчас не разрабатывается • Java Web Service Developer Kit (JWSDK) • Официальная реализация • Трудно установить и настроить • JBoss • Открытый исходный код • Существует много опция для установки • Поставляется вместе со встроенной базой данных

  24. Источники • http://tutorials.jenkov.com/java-servlets/index.htmlJakobJenkovо том как работать с контейнером сервлетов • https://blogs.oracle.com/swchan/entry/servlet_3_0_annotations спецификация для Servlet 3.0 • https://netbeans.org/kb/trails/java-ee_ru.htmlпервая ссылка на руссом по java в web

More Related