Em um contêiner Servlet, a execução do programa MpuServlet1 ...

Próximas questões
Com base no mesmo assunto
Q80560 Programação
Com relação à tecnologia Servlet, julgue os itens subsequentes.

Em um contêiner Servlet, a execução do programa MpuServlet1 a seguir implica, também, a execução do programa MpuServlet2.

Imagem 007.jpg
Alternativas

Comentários

Veja os comentários dos nossos alunos

getRequestDispatcher

public RequestDispatcher getRequestDispatcher(java.lang.String path)
The default behavior of this method is to return getRequestDispatcher(String path) on the wrapped request object.

 

Specified by:
getRequestDispatcher in interface ServletRequest
Parameters:
path - a String specifying the pathname to the resource. If it is relative, it must be relative against the current servlet.
Returns:
a RequestDispatcher object that acts as a wrapper for the resource at the specified path, or null if the servlet container cannot return a RequestDispatcher

fonte:
http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletRequestWrapper.html
o rd (request dispatcher) deve vir com include e não com forward.
Acho que é isso : 

De acordo com a especificação da Sun.

"The forward method of the RequestDispatcher interface may be called by the 
calling servlet only when no output has been committed to the client. If output data 
exists in the response buffer that has not been committed, the content must be 
cleared before the target servlet’s service method is called. If the response has been 
committed, an IllegalStateException must be thrown." 


Para chamar o metodo forward da classe RequestDispatcher, que serve para chamar outro Servlet, o objeto response não pode ter nehum dado.

Se existe dados no objeto response ele deve ser limpo, response.clear(), antes de chamar outro Servlet.

Caso exista dados no objeto response e ele seja "comitado" (response.flushBuffer();) vai ocorrer uma exceção, IllegalStateException. O que acontece no codigo da questão.





na minha opiniao está errada pois ele não mostrou o mapeamento da Servlet.

Não sabemos qual é o pattern q ela atende e nem o seu servlet-name

A questão está errada, pois ou você trata a requisição e envia uma resposta ao cliente, ou encaminha para outro servlet tratá-la através do método forward() do RequestDispatcher.


O código abaixo vai gerar uma IllegalStateException, pois o servlet gravou uma resposta e depois despachou a requisição para outro servlet.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo