- Tomcat está ciente do Javarush
- Tomcat - o que é isso?
- Componentes do Tomcat
- Instalando o Tomcat
- Como criar um aplicativo web
- Como incorporar um aplicativo em um servidor em execução
- Benefícios do Tomcat para desenvolvimento
- Links adicionais
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étodomain
pelo 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: Aqui 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: No 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: O 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);
}
}
TimeWorker
herda da classe HttpServlet
e substitui o doGet
. Neste método recebemos dois parâmetros - request
e response
. Por exemplo, é armazenado request
um atributo com um nome data
e contendo uma representação em string da data atual. Então ele é chamado e os parâmetros são requestDispatcher
passados 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: request
response
/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 timeWorker
será chamado quando uma solicitação dewelcome-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
/time
será 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
h1
conté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
request
estão
response
disponí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:
Siga o link:
Ó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 classeTimeWorker
é 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
- Troca de dados entre o servlet e os clientes;
- Organização de sessões de clientes;
- Criação de um ambiente de software para funcionamento de um servlet;
- Идентификация и авторизация клиентов;
- В большинстве случаев — управление метаданными (заголовки, методы и прочее).
Установка сервлета
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: В появившемся поле нужно нажать на deployed_war. Затем начнется сборка проекта и Intellij IDEA создаст папку out, в которой появится папка artifacts с именем нашего артефакта. В этой папке будет лежать файл deployed_war.war: Теперь можно деплоить этот файл в 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 обеспечивает несколько серьезных преимуществ:-
Самое главное, Tomcat может выполнять роль полноценного web-serverа. Благодаря этому развертывание приложений происходит гораздо быстрее, чем было раньше.Также Tomcat может выступать в роли классического контейнера сервлетов, который можно встроить в более крупный веб-server.
-
Tomcat способствует обмену данными между клиентом и сервлетом, обеспечивает программный контекст для веб-приложений, берет на себя функции идентификации и авторизации клиентов, создание сессий для каждого из них.
-
Предоставляет очень удобное управление JSP-pageми. Фактически веб-server может отдавать только html. Jasper, компонент Tomcat, компorрует code, содержащийся в шаблонных тегах JSP-страниц в корректный HTML-файл, который получает клиент. Вся логика шаблонизации находится внутри Tomcat, позволяя добавлять даже сложные конструкторы в классическую форму HTML.
main
um 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
main
que é chamado quando o servidor é iniciado. Você pode ser pego fazendo essa pergunta em uma entrevista.
GO TO FULL VERSION