Redirect em classe java

Olá a todos!

Estou com uma dúvida que imagino ser bem básica… mais não encontrei nenhuma solução!

Tenho uma classe java que possui um método static void. Dentro deste método, tenho um if. Se o if for true ele envia um e-mail para o usuário senão ele tem que levar o usuário para uma página JSP.

A parte de enviar e-mail está funcionando… Mais não sei como fazer ele encaminhar o usuário para uma página JSP quando ele entra no else.

obs.: este método é chamado por uma página JSP.

Alguém teria alguma ideia de como fazer isso funcionar???

Obrigada :slight_smile:

Esse método static void está aonde?

Para você redirecionar uma página, pode-se usar o RequestDispatcher, como abaixo.

RequestDispatcher requestDispatcher =request.getRequestDispatcher("pagina.jsp");

requestDispatcher.forward( request, response );

e para fazer isto, você deve ter visibilidade aos objetos request e response, o que normalmente deve ser feito em um servlet. Portanto uma solução é você invés de utilizar um método static void, utilizar um método static boolean na qual retornaria true ou false para o servlet se ele deveria ou não dar um RequestDispatcher.

O problema é que eu estou usando uma classe… tem como usar o requestDispatcher desta forma? Ou em como eu criar o mesmo efeito redirecionando direto da classe?

Obrigada

Um jeito totalmente não aconselhavel é você enviar como parâmetros os objetos request e response para o método, porém como eu já disse é totalmente não aconselhável, pois pelo padrão MVC (Model View Controller, procure no google) não é responsabilidade da classe realizar os RequestDispatchers, e sim do servlet.

De uma lida numa apostila de web gratuita que recomendo.

Você não deve redirecionar a página de dentro do seu método de negócio. Retorne para o controller algum valor e redireciona da maneira adequada.

E se eu quisesse simplesmente exibir no browser o resultado de uma variável. Eu poderia usar a classe?

É que eu não sei como trabalhar com servlet.

Obrigada

Eu não tenho um controller. Na verdade eu só tenho duas áreas: visão e a área de negócio e controle juntas.

Tem alguma forma de eu pegar o valor da variável deste método e exibir na tela?

Obrigada

Se eu criar um sevlet, eu preciso alterar alguma coisa no meu web.xml?

Obrigada

Sim, você pode colocar um objeto dessa classe no request passado pra servlet e mostrar uma propriedade dele usando a EL (ver apostila).

Pra isso basta seu objeto ter um método chamado getPropriedade(). ex: objeto pessoa, propriedade nome, vai ter um “public String getNome()” e fica ${pessoa.nome} na jsp.

Sim, você vai precisar mapear sua servlet nele.

Na apostila fala sobre tudo isso melhor do que eu.

Obrigada!!!

Decidi refazer esta parte da aplicação e utilizar um servlet para ficar mais certo conceitualmente!

Obrigada a todos pela ajuda…