Tenho o código q tá dando nullpointerexception:
HttpServletResponse response = null;
Tenho o código q tá dando nullpointerexception:
HttpServletResponse response = null;
Hum, posta o fonte ai.
Poderia esclarecer mais sua pergunta.
Abs
Mas só para deixar claro:
NullPointerException ocorre quando você tenta acessar um objeto que não existe.
Por exemplo:
TemQueExistir temQueExistir =new TemQueExistir();
temQueExistir .algumMetodo();
Não irá gerar NullPointerException pq foi instanciado o objeto.
agora:
TemQueExistir temQueExistir =null;
//ou
TemQueExistir temQueExistir ;
temQueExistir .algumMetodo();
irá gerar uma NullPointerException pq não foi instanciado o obejto TemQueExistir;
ou seja a sua variavel de instancia está referenciando nulo.
oi yoshikichi , isso eu sei é q n sei como instanciar HttpServletResponse… pois se faço igual a linha q escreví da nullpointer, então como
fazer pra conseguir usar response.algumMetodo(); ?
Olá, se eu não me engano é só estanciar mesmo.
Se voce estiver usando servelets acredito que em algum momento ele instancia sozinho, mais nao me lembro direito agora. Nesse caso acho q :
HttpServletResponse response = new HttpServletResponse();
acho que já é o suficiente. não lembro se passa algum parametro.
A questão acho que é quando fazer isso e não perder os dados que estão armazenados na sessão. Tome cuidado.
pedro, olha o q acontece:
HttpServletResponse response = new HttpServletResponse() {
public void setLocale(Locale arg0) {
// TODO Auto-generated method stub
}
public void setContentType(String arg0) {
// TODO Auto-generated method stub
}
public void setContentLength(int arg0) {
// TODO Auto-generated method stub
}
public void setBufferSize(int arg0) {
// TODO Auto-generated method stub
}
public void reset() {
// TODO Auto-generated method stub
}
public boolean isCommitted() {
// TODO Auto-generated method stub
return false;
}
public PrintWriter getWriter() throws IOException {
// TODO Auto-generated method stub
return null;
}
public ServletOutputStream getOutputStream() throws IOException {
// TODO Auto-generated method stub
return null;
}
public Locale getLocale() {
// TODO Auto-generated method stub
return null;
}
public String getCharacterEncoding() {
// TODO Auto-generated method stub
return null;
}
public int getBufferSize() {
// TODO Auto-generated method stub
return 0;
}
public void flushBuffer() throws IOException {
// TODO Auto-generated method stub
}
public void setStatus(int arg0, String arg1) {
// TODO Auto-generated method stub
}
public void setStatus(int arg0) {
// TODO Auto-generated method stub
}
public void setIntHeader(String arg0, int arg1) {
// TODO Auto-generated method stub
}
public void setHeader(String arg0, String arg1) {
// TODO Auto-generated method stub
}
public void setDateHeader(String arg0, long arg1) {
// TODO Auto-generated method stub
}
public void sendRedirect(String arg0) throws IOException {
// TODO Auto-generated method stub
}
public void sendError(int arg0, String arg1) throws IOException {
// TODO Auto-generated method stub
}
public void sendError(int arg0) throws IOException {
// TODO Auto-generated method stub
}
public String encodeUrl(String arg0) {
// TODO Auto-generated method stub
return null;
}
public String encodeURL(String arg0) {
// TODO Auto-generated method stub
return null;
}
public String encodeRedirectUrl(String arg0) {
// TODO Auto-generated method stub
return null;
}
public String encodeRedirectURL(String arg0) {
// TODO Auto-generated method stub
return null;
}
public boolean containsHeader(String arg0) {
// TODO Auto-generated method stub
return false;
}
public void addIntHeader(String arg0, int arg1) {
// TODO Auto-generated method stub
}
public void addHeader(String arg0, String arg1) {
// TODO Auto-generated method stub
}
public void addDateHeader(String arg0, long arg1) {
// TODO Auto-generated method stub
}
public void addCookie(Cookie arg0) {
// TODO Auto-generated method stub
}
Caroline,
estou sem ambiente, hehe cabei falando besteira. disfarça.
estão esse httpserveletresponse ja vem instanciado quando vc chama a action.
como vc ta tentando usar ele?
se quiser add no msn fica mais facil ebolahow arroba hotmail ponto com ponto br
ok. mas como assim a action inicia ele?
o httpservletresponse é uma interface, por isso acontece o que aconteceu quando vc deu um new nele. ele tenta implementar a interface.
existe um httpserveletresponse na sua action é o parametro do metodo, pois esse tipo de dado é gerenciado pelo container do servlet sendo assim, você não precisa instanciar ele.
Carol, você consegue inicializar da seguinte forma:
HttpServletResponse response = ServletActionContext.getResponse();
Simples, não?

Abraços,
André AS
oi yoshikichi , isso eu sei é q n sei como instanciar HttpServletResponse… pois se faço igual a linha q escreví da nullpointer, então como
fazer pra conseguir usarresponse.algumMetodo(); ?
Então vc não precisa dar new no request ou response.
Qndo vc utiliza servlet os métodos, get,post, service já recebem o request e response por parametro.
Vc só precisa sobrescrever, por exemplo:
doGet(HttpServletRequest request, HttpServletResponse response)...
Gente do céu! Nunca, nunca, NUNCA se cria um objeto do tipo HttpServletResponse.
HttpServletResponse é uma interface e quem instancia o objeto que herda dela é o container, além de que cada container implementa de uma forma.
[]'s
O davidbuzatto está correto.
A interface HttpServletResponse é somente uma definição padrão que todos os containers herdam e definem
para criarem sua própria definição.
A solução para seu problema é utilizar outra classe…
A HttpServletResponseWrapper que é um HttpServletResponse.
oi meninos, agora q fiquei perdidinha mesmo kkkkk… eu quero executar um metodo boolean no java depois tenho q usar uma forma q faiz com eu mande uma mensagem pra um jsp, tendeu?.. por isso pensei no HttpServletResponse pois meu chefinho disse pra eu estudar isso…
David você quer dizer que quem invoca o HttpServletResponse é o Tomcat?
Veja também a referência abaixo:
http://www.mkyong.com/struts2/how-to-get-the-httpservletresponse-in-struts-2/
Isso. Quem cria o HttpServletResponse é o Tomcat ou qq container ou então servidor de aplicações que você estiver utilizando.
O que se tem que ter em mente é que existe uma especificação dos Servlets. Nela são definidas as interfaces, entre outras coisas, que os containers ou servidores de aplicações devem implementar para estar de acordo com a especificação. Sendo assim, a classe concreta que implementa HttpServletResponse é problema do container, não nosso. Quem instancia o response para poder ser usado é o container. Ele que invoca o método apropriado que trata o método HTTP correspondente passando os objetos necessários.
No Tomcat, por exemplo, a classe que implementa HttpServletResponse é a org.apache.catalina.connector.Response. A classe que implementa HttpServletRequest é a org.apache.catalina.connector.Request. O tal do “Catalina” é a implementação dos Servlets no Tomcat. As classes Response e Request que citei são wrappers para as requisições e respostas do Coyote. Você quase nunca vai precisar se preocupar com isso, visto que você segue a especificação p/ implementar suas aplicações e não a implementação do Tomcat. Polimorfismo para todos os lados percebe? Você se concentra na interface, não na implementação.
[]'s
meninos, ainda tou com duvida, pois tá dando nullpointer, o q deveria fazer? uso struts2
Do you speak english? Lê isso… se não entender, a gente traduz…
http://struts.apache.org/2.0.14/docs/how-can-we-access-the-httpservletresponse.html
Não tem muito segredo, não… quando comecei a mexer com Struts2 apanhei pra descobrir isso também, então espere alguns contratempos… :roll:
oi marcelinho, nao sou boa no ingleis não mais vou pedí ajuda pro meu chefinho…
Ajuda pro chefinho? Dúvido que ele não te ajude, mas conhecendo os chefes, eu acho que ele não vai te ajudar, rs…
Segura aí um exemplo…
Note os seguintes pontos (que estão descritos na página anterior que te mandei):
Feito isso, voce pode usar o método ‘getServletResponse’ e ele vai te devolver a sua tão desejada HttpServletResponse…
É só seguir o exemplo, não tem erro…
Ah… obrigado pelo apelido, ‘Carolzinha’ ! :lol:
muito obrigada meninos…
no meu caso, tou dando resposta assim que o usuario fizer um request… agora me perdi no seguinte se eu tou dando um response n deveria
ter um request HttpServletRequest também?
private HttpServletResponse response;
response = ServletActionContext.getResponse();
response.getWriter().write(mensagemDeNotificao);
Ajuda pro chefinho? Dúvido que ele não te ajude, mas conhecendo os chefes, eu acho que ele não vai te ajudar, rs…
meu chefinho n conseguiu tempo pra ajudar… os homens aqui são sempre muito ocupados… :roll:
Isso. Quem cria o HttpServletResponse é o Tomcat ou qq container ou então servidor de aplicações que você estiver utilizando.
O que se tem que ter em mente é que existe uma especificação dos Servlets. Nela são definidas as interfaces, entre outras coisas, que os containers ou servidores de aplicações devem implementar para estar de acordo com a especificação. Sendo assim, a classe concreta que implementa HttpServletResponse é problema do container, não nosso. Quem instancia o response para poder ser usado é o container. Ele que invoca o método apropriado que trata o método HTTP correspondente passando os objetos necessários.
No Tomcat, por exemplo, a classe que implementa HttpServletResponse é a org.apache.catalina.connector.Response. A classe que implementa HttpServletRequest é a org.apache.catalina.connector.Request. O tal do “Catalina” é a implementação dos Servlets no Tomcat. As classes Response e Request que citei são wrappers para as requisições e respostas do Coyote. Você quase nunca vai precisar se preocupar com isso, visto que você segue a especificação p/ implementar suas aplicações e não a implementação do Tomcat. Polimorfismo para todos os lados percebe? Você se concentra na interface, não na implementação.
[]'s
Oi David, em primeiro lugar obrigado pelas informações. Só gostaria de saber qual solução de fato você aplicaria neste contexto, você diz não
ser recomendado invoca o HttpServletResponse pois isso é tarefa do Container/Server, o uso do ServletActionContext.getResponse() para inicializar HttpServletResponse response; e nem por consequência o que foi indicado pelo marcelo.bellissimo, implementar ServletResponseAware e usar o getServletResponse();, o que eu gostei muito, já sabia que existia mas não tinha certeza de como usar (obrigado também marcelo.bellissimo)…
A questão é, como você resolveria esta situação em termos de código?
Lê esse livro.
Ajuda pro chefinho? Dúvido que ele não te ajude, mas conhecendo os chefes, eu acho que ele não vai te ajudar, rs…
meu chefinho n conseguiu tempo pra ajudar… os homens aqui são sempre muito ocupados… :roll:
Experiência, Caroline… vai se acostumando… trabalho de chefe é delegar, e não ajudar… mas e aí, algum progresso?
muito obrigada meninos…no meu caso, tou dando resposta assim que o usuario fizer um request… agora me perdi no seguinte se eu tou dando um response n deveria
ter um request HttpServletRequest também?private HttpServletResponse response;
response = ServletActionContext.getResponse(); response.getWriter().write(mensagemDeNotificao);
Não sei se entendi, mas vamos lá…
O Request e o Response já existem, o container cria ele pra você, e você acessa eles de maneiras diferentes, no seu caso é pelo Struts2, e as maneiras de acessá-los são aquelas que eu te mandei no exemplo… reparou que no exemplo existem os dois?
“Precisar” você precisa, mas não esquenta porque eles já existem… agora depende do que você quer fazer…
O request vem com os dados recebidos do usuário, ele é a “solicitação” do navegador pro Struts…
O response é a resposta, é o que você vai enviar pro navegador…
Aí é com você… voce quer ler dados de entrada? Request…
Quer devolver alguma coisa pror usuário? Response…
Quer que desenha? Rsrs… então tá: http://www.iagram.com/index.php/diagrams?func=detail&id=1088 8)
Oi David, em primeiro lugar obrigado pelas informações. Só gostaria de saber qual solução de fato você aplicaria neste contexto, você diz não
ser recomendado invoca o HttpServletResponse pois isso é tarefa do Container/Server, o uso do ServletActionContext.getResponse() para inicializarHttpServletResponse response;e nem por consequência o que foi indicado pelo marcelo.bellissimo, implementarServletResponseAwaree usar ogetServletResponse();, o que eu gostei muito, já sabia que existia mas não tinha certeza de como usar (obrigado também marcelo.bellissimo)…A questão é, como você resolveria esta situação em termos de código?
Não não. Não foi isso que eu falei. Eu estou dizendo que não se instancia um HttpServletResponse entendeu? Quem instancia é o container.
[]'s