dúvida no uso de servlets

caros,

Quero implementar a função de logoff de minha aplicação usando um servlet que coloquei num pacote exclusivo para servlets e de chamei EfetuaLogoff. Mapeei esse servlet no web.xml assim:

[code]
EfetuaLogoff
{nome-qualificado}.servlets.EfetuaLogoff

EfetuaLogoff /EfetuaLogoff [/code]

No menu “Sistema” da moldura da aplicação (definida pelo framework) tem um sub-item chamado “Logoff” que manda para um listener um valor que faz o logoff da aplicação. Até funciona assim, mas eu gostaria de implementar essa função usando servlet para desacoplar desse framework.

O trecho de código que efetua logoff é assim:

subMenu.addItem("Logoff","desktop.gif",-999);

O -999 é enviado a um listener que faz o logoff.

Como faço para chamar o servlet para fazer o logoff? O servlet EfetuaLogoff.java está abaixo:

[code]package {nome-qualificado}.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import framework.web.BaseController;

public class EfetuaLogoff extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(“text/html;charset=UTF-8”);
PrintWriter out = response.getWriter();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	processRequest(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	processRequest(request, response);
}

public String getServletInfo() {
	return "Short description";
}

public void invalidate(BaseController bc) {
	bc.getSession().invalidate();
}

}[/code]

Agradeço a ajuda desde já!

gtludwig

Servlets não é JavaEE?

Vc está na seção errada…

Desculpe não poder ajudar…só vim informar que a seção não é essa!

(eu acho pelo menos!)

OK, movido para “Desenvolvimento Web”.

Então meu caro, se quem vai fazer o logoff é a servlet, poe um link na tua aplicação pra URL q tu mapeou no web.xml

Pelo que tu quer (pelo que eu entendi), é só chamar a url assim (em algum link) http://server:porta/app/EfetuaLogoff

Caros,

Obrigado pela ajuda! Mexi um pouco no servlet EfetuaLogoff e deixei ele assim:

[code]public class EfetuaLogoff extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(“text/html;charset=UTF-8”);
PrintWriter out = response.getWriter();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	processRequest(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	processRequest(request, response);
	HttpSession session = request.getSession(false);
	if (session != null) {
		session.invalidate();
	}
	response.sendRedirect("/LoginForm");
}

}[/code]

O servlet está mapeado no web.xml assim:

[code]
EfetuaLogoff
{nome-qualificado}.servlets.EfetuaLogoff

EfetuaLogoff /EfetuaLogoff [/code]

O trecho que implementa o logoff ficou assim:

subMenu.addItem("Logoff","desktop.gif","javascript:location.href=/EfetuaLogoff");

O estranho é que quando chamo o logoff surge um erro na página evidenciado por um triangulo amarelo no canto inferior esquerdo da barra de status do navegador que, no double-click, retorna essa tela:

E não implementa a função de logoff…

Alguma idéia?

gtludwig