Вы наверняка слышали о том, что сайты можно делать на PHP, Python и довольно не плохие сайты. Но как же Java? Да на java тоже можно делать очень даже офигенные сайты, а если быть точней то используют java для разработки крупных ресурсов. В этом уроке я покажу как создать простое web-приложение на java.
Что нам потребуется для создания web-приложения?
1) Любой сервер приложений в нашем случае это будет Tomcat 7.0.
2) Верная и надежная Intellij IDEA.
3) Желание создать своё первое WEB-приложение.
Шаг 1
Создаем обычный Maven проект, назовем его MyFirstWebProject. Структура проекта следующая:
Шаг 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.
3. Настроить Intellij IDEA что бы деплоить приложение на сервер с нее.
В 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.
Для получения углубленных знаний по Java проходите наш курс «Программирование на языке Java для начинающих», а также читайте серию статей «Spring Data JPA. Работа с БД»: часть 1, часть 2 и часть 3
ПОХОЖИЕ ПУБЛИКАЦИИ
- None Found
94 комментариев к статье "WEB приложение на Java"