Sobes.tech
Middle

Como é feita a configuração do JSP no descriptor de implantação?

sobes.tech IA

Resposta da IA

A configuração do JSP no descritor de implantação web.xml é feita usando os elementos <servlet> e <servlet-mapping>. O arquivo JSP é processado como um tipo especial de servlet.

  1. Declaração do JSP como servlet:

    O elemento <servlet> é usado para declarar o recurso (<servlet-class> indica a implementação do servlet, mas para JSP é fornecido pelo contêiner) e atribuir-lhe um nome lógico (<servlet-name>). No caso do JSP, o nome da classe do servlet não é especificado, mas sim o elemento <jsp-file>.

    <!--
     * Declaração do arquivo JSP como servlet
    -->
    <servlet>
        <servlet-name>myJspPage</servlet-name>
        <jsp-file>/myJsp.jsp</jsp-file> <!-- Caminho para o arquivo JSP relativo à raiz da aplicação web -->
        <!--
         * Parâmetros de inicialização opcionais para a página JSP
        -->
        <init-param>
            <param-name>paramName</param-name>
            <param-value>paramValue</param-value>
        </init-param>
    </servlet>
    
  2. Associação do padrão URL com o servlet JSP:

    O elemento <servlet-mapping> vincula o nome lógico do servlet (<servlet-name>) a um padrão URL (<url-pattern>), pelo qual este servlet (e consequentemente, o JSP) será acessível.

    <!--
     * Associação do padrão URL com o servlet JSP declarado
    -->
    <servlet-mapping>
        <servlet-name>myJspPage</servlet-name>
        <url-pattern>/mypage</url-pattern> <!-- URL para acessar o JSP -->
    </servlet-mapping>
    
  3. Outra configuração:

    Também é possível configurar outros aspectos, como:

    • <load-on-startup>: Define a ordem de carregamento do JSP (quanto menor, mais cedo será carregado).
    • <security-constraint>: Aplicação de restrições de segurança.
    • <error-page>: Definição de páginas de erro.

Exemplo de configuração completa:

<!--
 * Descritor de implantação da aplicação web
-->
<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">

    <!--
     * Definição do arquivo JSP como servlet "myJspPage"
    -->
    <servlet>
        <servlet-name>myJspPage</servlet-name> <!-- Nome lógico do servlet -->
        <jsp-file>/myJsp.jsp</jsp-file> <!-- Caminho para o JSP -->
        <load-on-startup>1</load-on-startup> <!-- Carregar na inicialização da aplicação -->
    </servlet>

    <!--
     * Associação do padrão URL "/mypage" com o servlet "myJspPage"
    -->
    <servlet-mapping>
        <servlet-name>myJspPage</servlet-name>
        <url-pattern>/mypage</url-pattern> <!-- URL acessível -->
    </servlet-mapping>

    <!--
     * Exemplo de outra associação para outro JSP
    -->
    <servlet-mapping>
        <servlet-name>anotherJsp</servlet-name>
        <url-pattern>/another</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>anotherJsp</servlet-name>
        <jsp-file>/anotherPage.jsp</jsp-file>
    </servlet>

</web-app>

Assim, web.xml permite gerenciar como os arquivos JSP são transformados em servlets e quais URLs os invocam, além de configurar seu comportamento na inicialização e carregamento.