JavaRush /Blogue Java /Random-PT /Tomcat em Java

Tomcat em Java

Publicado no grupo Random-PT
Em algum momento, cada desenvolvedor ganha habilidades suficientes para pensar em criar seu próprio projeto para colocar seu conhecimento em prática. É mais fácil assumir um projeto web, pois a implementação de um aplicativo web não é restringida por nenhuma restrição, como aplicativos de desktop. O cliente precisa apenas de um navegador e pode interagir com o aplicativo sem baixar nenhuma distribuição. Sem registo e SMS, como dizem (embora dependa da própria aplicação). Tomcat em Java - 1Portanto, para implementar uma boa aplicação web em Java, você não pode prescindir de uma ferramenta chamada Tomcat. Contente:

Tomcat está ciente do Javarush

Tomcat é estudado no nível 9 da missão Java Collections no curso JavaRush. Em 2 palestras, Bilaabo explicará como baixar e configurar o Tomcat , bem como construir sua primeira aplicação web .

Tomcat - o que é isso?

Tomcat é um contêiner de servlet de código aberto que também atua como servidor web. À primeira vista, o Tomcat parece um assunto bastante pesado, mas não é o caso. A maioria dos aplicativos Java são iniciados usando a linha de comando e executam algumas ações. Esses aplicativos implementam uma função predefinida, após a qual não são mais executados. Esses programas geralmente possuem um método mainpelo qual podem ser iniciados. A aplicação web foi projetada para interagir com o cliente. Se houver uma solicitação do cliente, ela será processada e uma resposta será enviada ao usuário. Caso contrário, o aplicativo ficará inativo. Como implementar tal lógica em uma aplicação padrão, visto que você precisa suportar sessões, aceitar solicitações HTTP, etc.? Ciclo while-true? Não, precisamos de uma solução confiável aqui. É para isso que serve o Tomcat. Na verdade, é uma aplicação Java que se encarrega de abrir a porta para interação do cliente, configurar sessões, número de solicitações, comprimento do cabeçalho e muito mais operações.

Componentes do Tomcat

O Tomcat possui componentes que executam funções específicas que vale a pena conhecer. Vamos olhar mais de perto.

Catarina

Graças a este componente, os desenvolvedores têm a oportunidade de implantar seus programas em um contêiner. Catalina implementa a especificação da API Servlet, a principal tecnologia web na programação web Java. Na verdade, Catalina é um contêiner de servlet dentro do Tomcat (veremos esse conceito com mais detalhes a seguir).

Jaspe

Graças a este componente, o programador utiliza a tecnologia JSP. São como arquivos HTML, só que possuem código Java incorporado que pode ser executado quando a página é enviada ao usuário. Isso permite incorporar dinamicamente quaisquer dados na página. Jasper transforma código Java em HTML e também rastreia alterações e as atualiza automaticamente.

Coiote

Este é um componente importante que escuta solicitações HTTP de um cliente em uma porta específica, fornece esses dados para processamento no aplicativo e também retorna respostas aos usuários. Ou seja, o Coyote implementa a funcionalidade de um servidor HTTP. Esses componentes podem ser descritos estruturalmente pelo seguinte diagrama: Tomcat em Java - 2Aqui um diagrama aproximado da interação dos componentes é mostrado “nos dedos”. Na verdade, a forma como o Tomcat funciona é muito mais complexa, mas isso é suficiente para um entendimento básico.

Instalando o Tomcat

Para usar o Tomcat em Java, ele precisa estar instalado no sistema. Você pode ler sobre como instalar o Tomcat neste artigo, que também aborda outros servidores de aplicativos. Portanto, tendo um Tomcat funcional integrado ao IDEA, você pode tentar preparar seu primeiro servlet.

Como criar um aplicativo web

Para criar um aplicativo da web, você deve seguir uma estrutura de pastas específica. O IntelliJ IDEA possui uma função de geração de aplicações web no menu de criação de projetos. Tendo criado o projeto desta forma, você pode ver uma estrutura simples: Tomcat em Java - 3No src, como sempre, existem fontes, e na pasta web são gerados web.xml e index.jsp. web.xml é uma instrução para o Tomcat onde procurar manipuladores de solicitações e outras informações. index.jsp é a página principal da aplicação web, onde o usuário deve ir primeiro (esta é a configuração padrão). Na primeira execução, você pode simplesmente editar o arquivo index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
 </body>
</html>
Se o Tomcat estiver instalado diretamente no IDEA, você pode iniciar o servidor de aplicação: Tomcat em Java - 4O cliente recebe o conteúdo do arquivo index.jsp no navegador quando navega para '/', ou seja, para a página principal. Agora vamos adicionar um link para a página onde o horário atual do servidor estará localizado. Para criar seu primeiro servlet, você precisa usar a biblioteca servlet-api.jar que acompanha o Tomcat (pode ser encontrada na pasta lib). Vamos criar um servlet que exibirá a hora atual do servidor na página. Para fazer isso você precisa criar uma classe TimeWorker. Vamos colocá-lo na pasta src/ru/javarush/tomcat:
package ru.javarush.tomcat;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

public class TimeWorker extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     Date date = new Date();
     req.setAttribute("date", date.toString());
     req.getRequestDispatcher("time.jsp").forward(req, resp);
  }
}
TimeWorkerherda da classe HttpServlete substitui o doGet. Neste método recebemos dois parâmetros - requeste response. Por exemplo, é armazenado requestum atributo com um nome datae contendo uma representação em string da data atual. Então ele é chamado e os parâmetros são requestDispatcherpassados ​​para ele . O manipulador foi criado. Agora você precisa enviar solicitações especificamente para ele. Deixe qualquer transição levar à página time.jsp. Abra web.xml, insira a seguinte configuração entre as tags: requestresponse/time<web-app>
<servlet>
   <servlet-name>timeWorker</servlet-name>
   <servlet-class>ru.javarush.tomcat.TimeWorker</servlet-class>
   </servlet>

<servlet-mapping>
   <servlet-name>timeWorker</servlet-name>
   <url-pattern>/time</url-pattern>
</servlet-mapping>

<welcome-file-list>
   <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
A primeira tag - servlet- define o nome do servlet e especifica o caminho para a classe do servlet que processará as solicitações. A segunda tag - servlet-mapping- indica que o servlet com o nome timeWorkerserá chamado quando uma solicitação de URL/hora. A terceira tag - welcome-file-list- indica o arquivo que será chamado ao mudar para url /. Deve ser configurado caso haja necessidade de alterar o arquivo padrão. Incluído aqui como exemplo. Agora, quando você for, o método da classe /timeserá chamado e retornará a página time.jsp... que não existe. Vamos criá-lo próximo ao index.jsp: doGet TimeWorker
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>Hello</title>
</head>
<body>
   <h1>Current server time: <%=request.getAttribute("date")%></h1>
</body>
</html>
O início é clássico, mas a tag h1contém um apelo ao objeto request, que é emoldurado por <%=e %>. Estas são tags de modelo. O código incluído nessas tags é chamado antes de ser enviado ao cliente. Bem, os objetos requestestão responsedisponíveis nessas tags em qualquer arquivo JSP. Neste exemplo, o horário atual do servidor, que é transmitido pelo servlet, será substituído ali TimeWorker. Por conveniência, criamos um link para o arquivo index.jsp /time:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
   <title>$Title$</title>
 </head>
 <body>
   <h1>Hello world!</h1>
   <a href="/time">Узнать текущее время serverа</a>
 </body>
</html>
Vamos executar o exemplo: Tomcat em Java - 5Siga o link: Tomcat em Java - 6Ótimo, tudo funciona. No exemplo implementamos uma transição da página principal para a página auxiliar, para a qual foi passado um parâmetro e exibido ao usuário. Se você tiver problemas para executar servlets, recomendo a leitura deste post , que dá dicas para solucionar esse problema. Para uma introdução mais completa aos servlets, recomendamos a leitura dos artigos ( parte 1 , parte 2 ), onde o autor descreve detalhadamente a criação de uma aplicação simples utilizando servlets e jsp.

Como incorporar um aplicativo em um servidor em execução

Embora o Tomcat integrado no IDEA seja um recurso conveniente, o aplicativo da web pode ser movido para outro servidor e para outro contêiner. Vamos considerar a opção quando você precisar incorporar seu aplicativo em um servidor já em execução. Primeiro, é necessário entender melhor o propósito e as funções de um contêiner de servlet . O programa mostrado no exemplo acima é uma aplicação web. A classe TimeWorkeré um servlet. Os componentes realizam exclusivamente o processamento de solicitações. Esses componentes devem ser integrados em um contêiner de servlet especial. O objetivo de um contêiner de servlet é oferecer suporte a servlets e garantir seu ciclo de vida. O exemplo mais simples de como o Tomcat funciona é verificar uma pasta específica para determinar se um novo servlet apareceu nela. Se sim, inicialize-o e prepare-o para receber solicitações de clientes. Se o servlet tiver sido atualizado, reinicialize para atualizar os componentes. Ao excluir um servlet, pare de processar solicitações e remova o servlet do Tomcat.

Funções de contêiner de servlet

  1. Troca de dados entre o servlet e os clientes;
  2. Organização de sessões de clientes;
  3. Criação de um ambiente de software para funcionamento de um servlet;
  4. Идентификация и авторизация клиентов;
  5. В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Во-вторых, необходимо разобраться, How установить свой сервлет.

Установка сервлета

Tomcat принимает для обработки веб-applications на Java, которые имеют расширение .war. Это How jar, только web. Файлы такого типа объединяют в себе JSP-файлы, сервлеты, class-файлы, статические ресурсы и прочее. При установке такого file в Tomcat происходит его распаковка, а затем запуск, поэтому существует строгое требование к структуре файлов в проекте. Если проект был создан в IDEA, вся структура создана автоматически. Файл war можно создать стандартными средствами IDEA. Для этого необходимо зайти в ProjectStructure -> Artifacts -> Нажать “ +” -> WebApplication: Archive. В открывшемся поле задать Name для итогового war-file, например deployed_war. Ниже необходимо нажать на кнопку Create Manifest… Далее необходимо указать way to папке web проекта. В ней будет создана папка META-INF, в которую будет помещен файл MANIFEST.MF. Далее следует нажать Apply и Ok. Whatбы собрать проект в war-файл, следует во вкладке Build выбрать опцию Build Artifact: Tomcat em Java - 7В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Tomcat em Java - 8Теперь можно деплоить этот файл в Tomcat. Деплой applications проще всего выполнить из веб-интерфейса Tomcat. Просто нажмите кнопку выбора file на вкладке Deploy, перейдите к местоположению file WAR и выберите его, затем нажмите кнопку развертывания. В обоих случаях, если все пойдет хорошо, консоль Tomcat сообщит нам, что развертывание прошло успешно примерно таким выводом в консоль: INFO: Deployment of web application archive \path\to\deployed_war has finished in 4,833 ms

Польза Tomcat для разработки

Для разработчиков контейнеры сервлетов имеют огромную роль, так How решают целый спектр проблем. Для программирования на Java Tomcat обеспечивает несколько серьезных преимуществ:
  1. Самое главное, Tomcat может выполнять роль полноценного web-serverа. Благодаря этому развертывание приложений происходит гораздо быстрее, чем было раньше.Также Tomcat может выступать в роли классического контейнера сервлетов, который можно встроить в более крупный веб-server.

  2. Tomcat способствует обмену данными между клиентом и сервлетом, обеспечивает программный контекст для веб-приложений, берет на себя функции идентификации и авторизации клиентов, создание сессий для каждого из них.

  3. Предоставляет очень удобное управление JSP-pageми. Фактически веб-server может отдавать только html. Jasper, компонент Tomcat, компorрует code, содержащийся в шаблонных тегах JSP-страниц в корректный HTML-файл, который получает клиент. Вся логика шаблонизации находится внутри Tomcat, позволяя добавлять даже сложные конструкторы в классическую форму HTML.

E finalmente: muitas vezes os desenvolvedores novatos se perguntam: é possível executar um aplicativo Java sem mainum método -. À primeira vista, se você observar os exemplos acima, é possível. Nosso servlet foi executado sem o main. No entanto, não é. O Tomcat possui seu próprio método mainque é chamado quando o servidor é iniciado. Você pode ser pego fazendo essa pergunta em uma entrevista.

Links adicionais:

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION