dúvida no uso de servlets

4 respostas
gtludwig

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:
<servlet>
	<servlet-name>EfetuaLogoff</servlet-name>
	<servlet-class>{nome-qualificado}.servlets.EfetuaLogoff</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>EfetuaLogoff</servlet-name>
	<url-pattern>/EfetuaLogoff</url-pattern>
</servlet-mapping>

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:
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();
	}
}

Agradeço a ajuda desde já!

gtludwig

4 Respostas

claudneto

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!)

T

OK, movido para “Desenvolvimento Web”.

zirocool

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

gtludwig

Caros,

Obrigado pela ajuda! Mexi um pouco no servlet EfetuaLogoff e deixei ele assim:
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");
	}
}
O servlet está mapeado no web.xml assim:
<servlet>
	<servlet-name>EfetuaLogoff</servlet-name>
	<servlet-class>{nome-qualificado}.servlets.EfetuaLogoff</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>EfetuaLogoff</servlet-name>
	<url-pattern>/EfetuaLogoff</url-pattern>
</servlet-mapping>
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:
[IMG]http://img530.imageshack.us/img530/4345/erropaginanp7.th.png[/IMG][IMG]http://img530.imageshack.us/images/thpix.gif[/IMG]

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

Alguma idéia?

gtludwig

Criado 23 de setembro de 2008
Ultima resposta 24 de set. de 2008
Respostas 4
Participantes 4