CodeGym/Cursos Java/Módulo 3/estrutura web.xml

estrutura web.xml

Disponível

7.1 Esquema geral do web.xml

O arquivo web.xml armazena informações de configuração do aplicativo. Não é parte obrigatória dele, mas é muito utilizado para configurar uma aplicação web.

Este arquivo deve estar localizado na pasta WEB-INF . Quando o Tomcat é inicializado, ele lê seu conteúdo e usa a configuração que ele contém. Se o arquivo contiver erros, o Tomcat também exibirá um erro.

Exemplo web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
  http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">

  <servlet>
       <servlet-name>HelloWorld</servlet-name>
       <servlet-class>HelloServlet</servlet-class>
   </servlet>

  <servlet-mapping>
      <servlet-name>HelloWorld</servlet-name>
      <url-pattern>/welcome</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
      <welcome-file>index.html</welcome-file>
  </welcome-file-list>

</web-app>

"HelloWorld"O mapeamento do nome do servlet e da classe do servlet é escrito aqui em verde"HelloServlet" . O mapeamento do nome do servlet e da parte da URL é escrito em azul"HelloWorld""http://localhost/welcome" . Assim, diz aqui que ao acessar o caminho /welcome, você precisa chamar o servlet HelloServlet.class.

A cor vermelha indica o arquivo que deve ser fornecido mediante solicitação http://localhost/- esta é a chamada página de boas-vindas . Se o usuário simplesmente digitar no navegador o nome correspondente à raiz do nosso aplicativo da web, o conteúdo do arquivo index.html.

7.2 servlet, mapeamento de servlet

Um servlet pode atender a solicitações em diferentes URLs, portanto, em web-xml, o servlet e seu mapeamento para URLs são escritos separadamente. Primeiro, descrevemos os servlets, dando a cada um um nome de string exclusivo e, em seguida, especificamos como cada servlet mapeia para cada url.

Exemplo web.xml:

<web-app>

  <servlet>
    <servlet-name>remoting</servlet-name>
    <servlet-class>com.codegym.RemotingServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>remoting</servlet-name>
    <url-pattern>/remoting/*</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>restapi</servlet-name>
    <servlet-class>com.codegym.RestApiServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>restapi</servlet-name>
    <url-pattern>/api/*</url-pattern>
  </servlet-mapping>

</web-app>

Neste exemplo, dois servlets são declarados e cada um é mapeado para um modelo de URL diferente. O servlet RemotingServletatende a todas as solicitações que vão para/remoting/* . O servlet RestApiServletatende a todas as solicitações que vão para/api/* . Servlets também têm a ordem de carregamento - o parâmetro load-on-startup.

7.3 Opções de servlet

Com a ajuda do web.xml, os parâmetros podem ser passados ​​para o servlet durante sua inicialização, eles estarão disponíveis através da interface ServletConfig. Você também pode definir parâmetros para todo o aplicativo da Web; eles estarão disponíveis por meio do arquivo ServletContext.

Exemplo web.xml:

<web-app>
  <context-param>
     <description>Server production mode</description>
     <param-name>productionMode</param-name>
     <param-value>false</param-value>
  </context-param>

  <context-param>
     <param-name>appPropertiesConfig</param-name>
     <param-value>
        classpath:local-app.properties
        classpath:web-app.properties
     </param-value>
  </context-param>

  <servlet>
     <servlet-name>mainservlet</servlet-name>
     <servlet-class>com.codegym.ApplicationServlet</servlet-class>
     <init-param>
        <param-name>application</param-name>
        <param-value>com.codegym.App</param-value>
     </init-param>
     <init-param>
        <param-name>widgetset</param-name>
        <param-value>com.codegym.WidgetSet</param-value>
     </init-param>
     <init-param>
        <param-name>ui</param-name>
        <param-value>com.codegym.AppUI</param-value>
     </init-param>
  </servlet>
</web-app>

O código destacado em verde é onde definimos os parâmetros paraServletContext . Existem dois deles:

  • productionModecom valor falso
  • appPropertiesConfigcom um array de duas strings:
    • classpath:local-app.properties
    • classpath:web-app.properties

Os parâmetros para o servlet estão indicados em azulApplicationServlet , eles estarão disponíveis através de ServletConfig:

  • applicationcom valor com.codegym.App
  • widgetsetcom valor com.codegym.WidgetSet
  • uicom valor com.codegym.AppUI

7.4 filtro, mapeamento de filtro

O aplicativo da web também pode conter arquivos utility servlets - filters. Eles executam várias tarefas de serviço: redirecionar chamadas, verificar autorização, etc.

Exemplo web.xml:

<web-app>

  <servlet>
      <servlet-name>remoting</servlet-name>
      <servlet-class>RemotingServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
      <servlet-name>remoting </servlet-name>
      <url-pattern>/remoting/*</url-pattern>
  </servlet-mapping>

  <filter>
      <filter-name>total_filter</filter-name>
      <filter-class>com.javrush.TotalFilter</filter-class>
  </filter>

  <filter-mapping>
      <filter-name>total_filter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

</web-app>

Antes que a requisição chegue ao servlet RemotingServlet, ela será processada pelo filtro TotalFiler. Este filtro está configurado para interceptar todas as requisições que vão para a nossa aplicação web. Isso é claramente sugerido pelo modelo de URL para o qual é mapeado: /*.

Você lerá mais sobre servlets e filtros nas aulas a seguir.

Comentários
  • Populares
  • Novas
  • Antigas
Você precisa acessar para deixar um comentário
Esta página ainda não tem nenhum comentário