No contexto de um Servlet é possível definir um objeto que recebe as solicitações do cliente e envia-os para qualquer recurso (como um outro servlet, arquivo HTML ou arquivo JSP) no servidor. O container do servlet cria o objeto RequestDispatcher, que é usado como um wrapper em torno de um recurso de servidor localizado em um determinado caminho ou dado por um nome particular. Este método permite que um servlet faça o processamento preliminar de um pedido e outro recurso gere a resposta.
Passando Parâmetros Entre um Servlet e Duas Paginas JSP
Crie uma aplicação Web dinâmica chamada DaWeb002 e uma pagina JSP chamada index.jsp e outra chamada resultado.jsp. Crie um Servlet com o método service chamado MeuResultado, utilize o código abaixo para completar cada respectivo arquivo.
1 – A pagina inicial da aplicação oferece duas combinações na qual você pode selecionar, as opções pertencem umas as outras e o Servlet processa a camada de negocio, avalia os resultados e os envia para a pagina de resultado:
2 – O Servlet envia três parâmetros para a pagina JSP, dois são os parâmetros que você escolheu, somente a nível de descrição, pois o processamento já foi efetuado no servlet, o terceiro parâmetro é o resultado da combinação escolhida é uma variável criada no próprio servlet e enviada para a pagina de resultado para que a mensagem possa ser corretamente exibida para o usuário utilizando ainda um código Java através de um Scriptlet:
Exemplo:
Neste exemplo criamos duas paginas JSP e um Servlet no qual processa um resultado para uma seleção do usuário e o exibe através de parâmetros processados na pagina de resultado por meio de Scriptlet.
JSP – index.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Desenvolvimento Aberto</title>
</head>
<body>
<p>
<!-- Este é o modo de escrever código Java em uma pagina html -->
<!-- utilize a marcação abaixo: -->
<%
out.println("Desenvolvimento Aberto - Usando Servlets");
%>
</p>
<br />
<form action="MeuResultado">
<fieldset>
<legend>Escolha o vocalista da banda correspondente:</legend>
<br /> Vocalistas: <br />
<select name="vocalistas">
<option value="Eddie Vedder">Eddie Vedder</option>
<option value="Kurt Cobain">Kurt Cobain</option>
<option value="Scott Weiland" selected>Scott Weiland</option>
<option value="Layne Staley">Layne Staley </option>
</select> <br>
<br /> Bandas: <br />
<select name="bandas">
<option value="Stone Temple Pilots">Stone Temple Pilots</option>
<option value="Alice in Chains">Alice in Chains</option>
<option value="Nirvana" selected>Nirvana</option>
<option value="Pearl Jam">Pearl Jam</option>
</select> <br></br>
<input type="submit" value="Enviar">
</fieldset>
</form>
</body>
</html>
JSP – resultado.jsp
<?xml version="1.0" encoding="ISO-8859-1" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Desenvolvimento Aberto - Resultado</title>
</head>
<body>
<!-- Imprime Resultado -->
<h2>Desenvolvimento Aberto - Resultado</h2>
<%
boolean valida = (boolean) request.getAttribute("valida");
String nome = (String) request.getAttribute("vocalistas");
String banda = (String) request.getAttribute("bandas");
if (valida == true)
{
out.println("Você acertou!!!");
out.println("O vocalista: " + nome + " pertence a banda: " + banda);
}
else
{
out.println("Você errou!!!");
out.println("O vocalista: " + nome + " não pertence banda: " + banda);
}
%>
</body>
</html>
Java – MeuResultado.java
package org.desenvolvimento.aberto;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/MeuResultado")
public class MeuResultado extends HttpServlet {
private static final long serialVersionUID = 1L;
public MeuResultado() {
super();
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Validador do resultado
boolean valida = false;
// Recupera parametros
String nome = request.getParameter("vocalistas");
String banda = request.getParameter("bandas");
// Se nome e banda são iguais OK ou proxima tentativa senão falso
if ((nome.equals("Eddie Vedder") && banda.equals("Pearl Jam")) ||
(nome.equals("Kurt Cobain") && banda.equals("Nirvana")) ||
(nome.equals("Scott Weiland") && banda.equals("Stone Temple Pilots")) ||
(nome.equals("Layne Staley") && banda.equals("Alice in Chains")))
{
valida = true;
}
// Verifica saida no console
System.out.println(nome);
System.out.println(banda);
System.out.println(valida);
// Define parametros para a sessão
request.setAttribute("vocalistas", nome);
request.setAttribute("bandas", banda);
request.setAttribute("valida", valida);
// Chama pagina de resposta
getServletContext().getRequestDispatcher("/resultado.jsp").forward(request, response);
}
}




Aí, valeu! Foi de grande ajuda. Só tenho uma observação, troque a variável boolean no
boolean valida = (boolean) request.getAttribute(“valida”); na pagina resultado.jsp,
boolean valida = (Boolean) request.getAttribute(“valida”). A variável boolean em letra minuscula não estava armazenando o valor do request e deu um erros aqui. Talvez seja porque eu usei o glassfish como servidor. Mas o Boolean em letra maiúscula foi feita exatamente para isso.