Recebendo e processando POSTs externos em página JSP

Bom dia.

Estou começando a utilizar o sistema de pagamentos do Moip no meu site. Isso já está quase tudo pronto.
Só estou com uma dúvida.

Toda vez que uma ação é realizada no Moip ele me manda uma notificação via um POST para uma URL informada por mim.
E agora vem a minha dúvida

Eu posso tratar esses POSTs em uma página JSP (como mostrado no código abaixo) ou tem que ser em um Servlet?
Estou pensando em fazer assim. Na seguinte página.

<%-- 
    Document   : pagamentos_moip
    Created on : 30/05/2010, 17:55:20
    Author     : Bottoni
--%>

<%@page contentType="text/html" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<f:view>
	<html>
	    <head>
	        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
	        <title>Guia de Negócios Viçosa</title>
	    </head>
	    <body>
	        <%@ page import="persistencia.ComercianteDAO" %>
	        <%@ page import="dominio.Comerciante" %>
	        <%
			System.out.println ("**************** INICIO DO NASP ************************** ");
			Enumeration enumeration = request.getParameterNames();
	
			// apenas imprime os parametros retornados pelo MoIP.
			while (enumeration.hasMoreElements())
			{
				String paramName = (String)enumeration.nextElement();
				String param = request.getParameter(paramName);
				System.out.println (paramName + ": " + param);
	
				// TODO: inicio
				// Aqui eu devo processar as notificações enviadas pelo Moip e enviar uma resposta
				// Se o seu processamento ocorrer corretamente, responda com o codigo HTTP 2XX
				// (200, por exemplo). Se ocorrer algum erro, retorne outro codigo (3XX, 4XX ou 5XX). Caso seu sistema
				// retorne erro, o MoIP continuara e enviar as notificações durante uma semana, de 30 em 30 minutos ate
				// que o seu sistema responda com o codigo 2XX.
				// TODO: fim
			}
			System.out.println ("**************** FIM DO NASP ************************** "); 
	        %>
	    </body>
	</html>
</f:view>

Eu também preciso enviar uma resposta, como esplicado no código acima.
Como faço isso. É só configurar um response mesmo?

Muito obrigado.
Abraço, Bottoni

Veja,

  • não é uma boa prática colocar codigo em págins JSP… recomendo unicamente comparativos e métodos de escrita;
  • qdo o servidor aceita a requisição de visualização de uma página JSP, essa é transformada num Servlet, processada e depois retornada o html para o requisitante;
  • portante, para não “dar trabalho” ao servidor e consumir menos serviçi, recomendo fortemente que vc receba e trate as requisições num servlet.

se não fizermos assim, qual vai ser entao a diferença entre usar java e php?
se vc estiver fazendo assim, sairá dos “moldes” do java, e estará programando estruturado ou sem-estruturado, só que pra web.

abraços
bons estudos

Ah, ok. Obrigado pela dica.

Mas, só mais uma coisa.
A URL que eu informai para o Moip foi http://www.guiadenegociosvicosa.com/faces/pagamentos_moip.jsp
Se eu criar um Servlet, por exemplo MeuServlet.java, como devo passar essa URL? Considerando que o Sevlet fica em um pacote “servlets”. Como faço pra o Moip achar esse servlet.

Sou meio novo nessa área de programação para web e fico meio perdido as vezes. :slight_smile:

Abraço, Bottoni

Digamos que seu Servlet seja chamado de meuServletQueFazAlgumaCoisa.
Depois que ele estiver mapeado no web.xml, na url vc passa asim, em vez de colocar aquela url toda, no href vc vai fazer:

<a href="meuServletQueFazAlgumaCoisa">Aceesar meuServletQueFazAlgumaCoisa ou qualquer outro texto aqui</a>

Blz?

Mais ou menos.
Esse href entra na url? Me perdi aqui!

Qdo vc cria um link pra alguma página, no código ele está fazendo como escrevi acima:

<a href="nome_da_pagina_ou_recurso_de_destino">texto amigável para ser exibido</a>

então, se vc está usando uma IDE de desenvolvimento como Dreamweaver, em vez de localizar uma página, lá onde fica a página é só colocar o nome do servlet.

dê uma lida por aí sobre o bpasico de html…
aqui no gu, na seção artigos, tem uns materiais legais.

bons estudos
\o/

Ok, obrigado pela ajuda!

Abraço, Bottoni