Pergunta

No meu Servlet eu gostaria de acessar a raiz do contexto para poder fazer algumas minificações de JavaScript.

Seria possível fazer a redução como parte do processo de instalação, mas eu gostaria de fazer isso na inicialização do Servlet para reduzir o custo de implementação.

Alguém conhece um método para obter o diretório de contexto para que eu possa carregar e gravar arquivos no disco?

Foi útil?

Solução

Isso deve fornecer o caminho real que você pode usar para extrair/editar arquivos.

Link Javadoc

Estamos fazendo algo semelhante em um ouvinte de contexto.

public class MyServlet extends HttpServlet {

    public void init(final ServletConfig config) {
        final String context = config.getServletContext().getRealPath("/");
        ...
    }

    ...
}

Outras dicas

No meu Servlet eu gostaria de acessar a raiz do contexto para poder fazer algumas minificações de JavaScript

Você também pode acessar os arquivos no WebContent por ServletContext#getResource().Portanto, se o seu arquivo JS estiver, por exemplo, localizado em WebContent/js/file.js então você pode usar o seguinte em seu Servlet para obter um File lidar com isso:

File file = new File(getServletContext().getResource("/js/file.js").getFile());

ou para obter um InputStream:

InputStream input = getServletContext().getResourceAsStream("/js/file.js");

Dito isto, com que frequência você precisa reduzir os arquivos JS?Nunca vi a necessidade de minificação baseada em solicitações; isso apenas adicionaria muita sobrecarga desnecessariamente.Você provavelmente desejará fazer isso apenas uma vez durante a inicialização do aplicativo.Se sim, então usando um Servlet pois isso é uma má ideia.Melhor uso ServletContextListener e faça o que quiser contextInitialized().

Eu estava pesquisando o resultado no Google e não cheguei a lugar nenhum.Em páginas JSP que precisam usar Java Script para acessar o atual contextoPath na verdade é muito fácil.

Basta colocar as seguintes linhas em seu cabeça HTML dentro de um script bloquear.

// set up a global java script variable to access the context path
var contextPath = "${request.contextPath}" 

Você quer dizer:

public class MyServlet extends HttpServlet {

    public void init(final ServletConfig config) {
        final String context = config.getServletContext();
        ...
    }

    ...
}

Ou algo mais complexo?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top