Вернуться в список

WEB приложение на Java

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

Что нам потребуется для создания web-приложения?

1) Любой сервер приложений в нашем случае это будет Tomcat 7.0.

2) Верная и надежная Intellij IDEA.

3) Желание создать своё первое WEB-приложение.

 

Шаг 1

Создаем обычный Maven проект, назовем его MyFirstWebProject. Структура проекта следующая:

Давайте теперь разберем структуру проекта: src/java/servlets - тут будут лежать сервлеты(сервлеты будут рассматриваться в Шаг 2.) src/resources - тут будут лежать все ресурсные файлы которые буду нужны для проекта. src/webapp - тут лежат все файлы которые будут использоваться во view (к примеру img, css).

 

Шаг 2

Теперь разберем что такое Servlet? Servlet - это Java-интерфейс, реализация которого расширяет функциональные возможности сервера. Servlet взаимодействует с клиентами посредством принципа запрос-ответ за частую это запросы GET, POST по протоколу HTTP/HTTPS. Для создания сервлета нам нужно подключить зависимости в Maven.

<dependency>
   <groupid>javax.servlet</groupid>
   <artifactid>servlet-api</artifactid>
   <version>3.0-alpha-1</version>
   <scope>provided</scope>
</dependency>
 
<dependency>
   <groupid>javaee</groupid>
   <artifactid>javaee-api</artifactid>
   <version>5</version>
</dependency>
 
<dependency>
   <groupid>javax</groupid>
   <artifactid>javaee-web-api</artifactid>
   <version>6.0</version>
   <scope>provided</scope>
</dependency>

А также не забудьте указать:

<packaging>war</packaging>

это говорит Maven-у что собирать надо в WEB проект, по умолчанию он собирает jar.

Теперь нужно добавить 2 плагина который позволяет откомпилировать и собрать проект в war архив.

<plugin>
   <groupid>org.apache.maven.plugins</groupid>
   <artifactid>maven-compiler-plugin</artifactid>
   <configuration>
      <source>1.5</source>
      <target>1.5</target>
   </configuration>
</plugin>
 
<plugin>
   <groupid>org.apache.maven.plugins</groupid>
   <artifactid>maven-war-plugin</artifactid>
   <version>2.1.1</version>
   <configuration>
      <failOnMissingWebXml>false</failOnMissingWebXml>
   </configuration>
</plugin>

Полный листинг pom.xml:

<?xml version ="1.0" encoding ="UTF-8"?>
<project xmlns ="http://maven.apache.org/POM/4.0.0"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemalocation ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
    
   <groupid>MyFirstWebProject</groupid>
   <artifactid>MyFirstWebProject</artifactid>
   <version>1.0-SNAPSHOT</version>
   <packaging>war</packaging>
    
   <dependencies>
      <dependency>
         <groupid>javax.servlet</groupid>
         <artifactid>servlet-api</artifactid>
         <version>3.0-alpha-1</version>
         <scope>provided</scope>
      </dependency>
       
      <dependency>
         <groupid>javaee</groupid>
         <artifactid>javaee-api</artifactid>
         <version>5</version>
      </dependency>
       
      <dependency>
         <groupid>javax</groupid>
         <artifactid>javaee-web-api</artifactid>
         <version>6.0</version>
         <scope>provided</scope>
      </dependency>
   </dependencies>
    
   <build>
      <plugins>
          
         <plugin>
            <groupid>org.apache.maven.plugins</groupid>
            <artifactid>maven-compiler-plugin</artifactid>
            <configuration>
               <source>1.5</source>
               <target>1.5</target>
            </configuration>
         </plugin>
          
         <plugin>
            <groupid>org.apache.maven.plugins</groupid>
            <artifactid>maven-war-plugin</artifactid>
            <version>2.1.1</version>
            <configuration>
               <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
         </plugin>
      </plugins>
   </build>
    
</project>

Теперь создадим класс MyServlet который унаследуем от HttpServlet.

@WebServlet("/s")
public class MyServlet extends HttpServlet {
    
   @Override
   protected void doPost(HttpServletRequest request, HttpServletResponse response) 
   throws ServletException, IOException {
      super.doPost(request, response);
   }
    
   @Override
   protected void doGet(HttpServletRequest request, HttpServletResponse response) 
   throws ServletException, IOException {
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
       
      out.println("Hello Word");
   }
}

Как вы видите тут есть два метода doPost и doGet, как я уже упоминал сервлеты взаимодействуют с клиентом по средством запрос-ответ, так вот в основном это GET и POST. Внимание! Главное не допускать такую ошибку, что всего есть два метода GET/POST их на самом деле 9, это OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT, PATCH. И так рассмотрим эти методы методы: Как вы уже поняли метод doPost принимает и отправляет посредством запроса POST, doGet по средством запроса GET. У обоих методов есть входящие параметры типы которых — HttpServletRequest и HttpServletResponse. HttpServletRequest request — это запрос со стороны клиента; HttpServletResponse response — это ответ со стороны сервера.

Аннотация @WebServlet(«/s») указывает на то что данный сервлет будет доступет по адресу <URL>/s.

Шаг 3

Не забываем, что метод GET срабатывает когда мы просто заходим по URL на страничку, а пост чаще всего используется при передачи данных с формы, но при условии что медот передачи даных формы указан POST. Создадим «Hello Word»:

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException {
   response.setContentType("text/html");
   PrintWriter out = response.getWriter();
    
   out.println("Hello Word");
}

response.setContentType("text/html") — в этой строке мы говорим про то что отображать мы будем страничку как html. PrintWriter out = response.getWriter() — тут мы создаем врайтер который поможет нам осуществить ответ с сервера. out.println("Hello Word") — ну и отправляем ответ с сервера клиенту.

 

Шаг 4

Теперь соберите проект в Maven:

 

Шаг 5

Установка и настройка Tomcat 7.0.

1. Идем сюда http://tomcat.apache.org/download-70.cgi и качаем Tomcat 7.0.

2. Извлекаем с архива;

3. Настроить Intellij IDEA что бы деплоить приложение на сервер с нее.

Нажимаем плюсик выбираем Tomcat Server -> Local после чего нажимаем Configure… и выбираем корневую папку где лежит Tomcat 7.0.

В Startup Page - указываем стартовую страничку загрузки в нашем случае это localhost:8080/s (где s это наш про аннотированиый сервлет).

Дальше заходим во вкладкуDeployment:


И выбираем ваш собранный проект, лежит он в корне проекта в папке target/<name>.war

4. Запускаем:

 

Шаг 6

Завяжем на наш сервлет jsp страничку.

Для этого мы должны создать в папке src/main/webapp нашу страничку, в нашем случае это index.jsp.

И теперь с помощью метода GET отправим на нее тот же текст «<h1>Hello World!</h1> <p>It JSP.<p>»

Вот так будет выглядеть наш метод сервлета doGet():

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException {
   response.setContentType("text/html");
    
   String varTextA = "Hello World!";
   request.setAttribute("textA", varTextA);
   String varTextB = "It JSP.";
   request.setAttribute("textB", varTextB);
    
   RequestDispatcher dispatcher = request.getRequestDispatcher("/index.jsp");
   dispatcher.forward(request, response);
}

С помощью RequestDispatcher мы отправляем наш response request клиенту.

А так будет выглядеть index.jsp

<%@ page contentType ="text/html;charset=UTF-8" language ="java" %>
   <html>
      <head>
         <title></title>
      </head>
      <body>
         ${textA}
         ${textB}
      </body>
   </html>

С помощью конструкции ${<var>} мы принимаем данные с сервера.

После этого вы получите ту же по виду страничку, только это уже будет не сервлет отображать а jsp.

Источник: http://devcolibri.com/1043
21.08.2015

    Только зарегистрированные пользователи могут оставить комментарий.
    Вернуться в список
    2017 «Инфокристалл» Сборка от 18.04.2017 03:58
    Контакты | Задать вопрос

    Карта сайта