Servlets - embalagem
A estrutura do aplicativo da web envolvendo o subdiretório WEB-INF é padrão para todos os aplicativos da web Java e é especificada pela especificação da API do servlet. Dado um nome de diretório de nível superior de myapp. Esta é a aparência desta estrutura de diretório -
/myapp
/images
/WEB-INF
/classes
/lib
O subdiretório WEB-INF contém o descritor de implantação do aplicativo, denominado web.xml. Todos os arquivos HTML devem ser mantidos no diretório de nível superior, que é myapp . Para o usuário administrador, você encontrará o diretório ROOT como o diretório pai.
Criação de servlets em pacotes
O diretório WEB-INF / classes contém todas as classes de servlet e outros arquivos de classe, em uma estrutura que corresponde ao nome do pacote. Por exemplo, se você tiver um nome de classe totalmente qualificado decom.myorg.MyServlet, então esta classe de servlet deve estar localizada no seguinte diretório -
/myapp/WEB-INF/classes/com/myorg/MyServlet.class
A seguir está o exemplo para criar a classe MyServlet com um nome de pacote com.myorg
// Name your package
package com.myorg;
// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet extends HttpServlet {
private String message;
public void init() throws ServletException {
// Do required initialization
message = "Hello World";
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Set response content type
response.setContentType("text/html");
// Actual logic goes here.
PrintWriter out = response.getWriter();
out.println("<h1>" + message + "</h1>");
}
public void destroy() {
// do nothing.
}
}
Compilando servlets em pacotes
Não há nada muito diferente para compilar uma classe disponível no pacote. A maneira mais simples é manter seu arquivo java em um caminho totalmente qualificado, pois a classe mencionada acima seria mantida em com.myorg. Você também precisaria adicionar este diretório em CLASSPATH.
Supondo que seu ambiente esteja configurado corretamente, entre <Tomcat-installationdirectory>/ webapps / ROOT / WEB-INF / diretório classes e compilar MyServlet.java como segue
$ javac MyServlet.java
Se o servlet depende de qualquer outra biblioteca, você deve incluir esses arquivos JAR em seu CLASSPATH também. Incluí apenas o arquivo JAR servlet-api.jar porque não estou usando nenhuma outra biblioteca no programa Hello World.
Esta linha de comando usa o compilador javac integrado que vem com o Sun Microsystems Java Software Development Kit (JDK). Para que esse comando funcione corretamente, você deve incluir a localização do Java SDK que está usando na variável de ambiente PATH.
Se tudo correr bem, a compilação acima produzirá MyServlet.classarquivo no mesmo diretório. A próxima seção explicaria como um servlet compilado seria implantado na produção.
Implantação de Servlet em Pacote
Por padrão, um aplicativo servlet está localizado no caminho <Tomcat-installationdirectory> / webapps / ROOT e o arquivo de classe deve residir em <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF / classes.
Se você tiver um nome de classe totalmente qualificado de com.myorg.MyServlet, essa classe de servlet deve estar localizada em WEB-INF / classes / com / myorg / MyServlet.class e você precisará criar as seguintes entradas em web.xml arquivo localizado em <Tomcat-installationdirectory> / webapps / ROOT / WEB-INF /
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.myorg.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet</url-pattern>
</servlet-mapping>
As entradas acima devem ser criadas dentro das tags <web-app> ... </web-app> disponíveis no arquivo web.xml. Pode haver várias entradas nesta tabela já disponíveis, mas não importa.
Você está quase terminando, agora vamos iniciar o servidor tomcat usando <Tomcat-installationdirectory> \ bin \ startup.bat (no Windows) ou <Tomcat-installationdirectory> /bin/startup.sh (no Linux / Solaris etc.) e finalmente digite http://localhost:8080/MyServletna caixa de endereço do navegador. Se tudo correr bem, você obterá o seguinte resultado -
Hello World