Boa noite.
Estou tentando fazer um modo de logar consultas que são feitas em outros sistemas fora do meu, mas provenientes do meu.
Colocar os dados no form html com o action para a URI do sistema funciona para acessar o sistema, mas não consigo ter controle da saída para logá-la já que a requisição vai direto para fora.
Uma solução que encontrei foi mandar para dentro do meu sistema, e passar a URI alvo por parâmetro.
Como conecto com vários sistemas, fiz um método genérico para redirecionar isso, mantendo os parâmetros(não otimizei nem tratei todos os casos):
private void redirect()
{
Map map = request.getParameterMap();
StringBuffer location = new StringBuffer(request.getParameter("uri")); // uri não é nulo
location.append("?");
for (Iterator it = map.keySet().iterator(); it.hasNext();)
{
String chave = (String) it.next();
if (!chave.equals("uri"))
{
String[] valor = (String[]) map.get(chave);
location.append(chave).append("=").append(valor[0]).append("&");
}
}
location.deleteCharAt(location.length() - 1);
response.setHeader("Location", location.toString());
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
}
Há algum problema que pode haver com isso? Sessões talvez?
Também pergunto se há uma maneira mais fácil, filtros interceptadores, ou algo do gênero que faça isso.
Obs: J2EE 1.3.