Verificar se há mudança de comportamento nos métodos getServletPath e getPathInfo

Um mapeamento de servlet padrão tem um mapeamento apenas do caractere /. Em servidores de aplicativos competitivos, uma chamada para o método javax.servlet.http.HttpServletRequest.getServletPath para um mapeamento de servlet padrão retorna o valor do URI de solicitação menos o caminho do contexto e uma chamada para o método javax.servlet.http.HttpServletRequest.getPathInfo retorna nulo. No WebSphere tradicional, uma chamada para getServletPath para um mapeamento de servlet padrão retorna uma sequência vazia e uma chamada para o método getPathInfo retorna o caractere /. Da mesma forma, se você estiver migrando para o Liberty usando as implementações de recurso do Servlet 3.0 ou 3.1, uma chamada para getServletPath para um mapeamento de servlet padrão retornará uma sequência vazia e uma chamada para o método getPathInfo retornará o caractere /.

Por exemplo, considere o código a seguir:

< span class="Code"> @WebServlet("/")
A classe pública TestServlet estende HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res) {
System.out.println ("getServletPath:" + req.getServletPath ());
System.out.println ("getPathInfo:" + req.getPathInfo ());
}
}

Em servidores de aplicativos competitivos, esse código terá a saída a seguir:

< span class="Code"> getServletCaminho: /some/path/to/servlet
getPathInfo: nulo

No entanto, no WebSphere tradicional e no Liberty com o Servlet 3.0 ou 3.1, o código terá a saída a seguir:

< span class="Code"> getServletCaminho:
getPathInfo: /

Se você estiver migrando para o WebSphere Liberty usando as implementações do Servlet 3.0 ou 3.1, inclua o elemento <webContainer servletPathForDefaultMapping="true"/> para o arquivo de configuração server.xml. A inclusão desse elemento fará com que os métodos getServletPath e getPathInfo se comportem da mesma forma que nos servidores de aplicativos competitivos. Se você estiver usando a implementação do Servlet 4.0, nenhuma mudança será necessária. getServletPath e getPathInfo na implementação do Servlet 4.0 se comportam da mesma forma que nos servidores de aplicativos competitivos.

Se você estiver migrando para o WebSphere tradicional, configure a propriedade com.ibm.ws.webcontainer.EnableDefaultServletRequestPathElements do WebContainer para true. A configuração dessa propriedade fará com que os métodos getServletPath e getPathInfo se comportem como nos servidores de aplicativos competitivos.

Para obter informações adicionais, consulte: