Gabarito A
WEB-INF / classes
Todos os servlets ou classes que não foram fornecidos em um arquivo jar são armazenados nesse diretório. Se você quiser ser levado a sério, não usará o pacote padrão, mas criará uma estrutura de diretórios que represente sua estrutura de pacotes de acordo com seu domínio da Internet. Como os domínios da Internet têm a garantia de serem globalmente exclusivos, isso garante que não haja chance de um confronto no espaço de nomes. Assim, se eu tiver uma classe chamada Util, não haverá conflito entre com.sun.java.Util e minha própria classe com.examulator.Util.
WEB-INF / lib
Todos os arquivos jar devem ser colocados nesse diretório. Isso inclui qualquer driver de banco de dados jdbc contido em um arquivo jar. Você também pode incluir servlets em um jar nesse diretório, pois, no tempo de execução, o contêiner inclui esse diretório no caminho de classe da mesma maneira que o diretório de classes é incluído. O diretório lib também é o local de todos os taglibs que você pode usar.
Observe que, durante o desenvolvimento e o aprendizado, é muito fácil ignorar a implementação de arquivos jar. Como seu aplicativo pode funcionar bem fora de um jar, é tentador simplesmente executar seu código e esquecer como ele pode ser empacotado em um jar. É altamente recomendável que você gaste algum tempo configurando seu próprio código de amostra em arquivos jar e implementando em aplicativos para entender as implicações da estrutura de diretórios em jars, como o uso do diretório META-INF para aplicativos da web implementáveis completos.
"Retroceder Nunca Render-se Jamais !"
Força e Fé !
Fortuna Audaces Sequitur !