Servlets

11 respostas
david.cs20

Tenho um sistema de perguntas a qual tem perguntas armazenadas nun array. E gostaria que elas apracessem na hora que fosse chamado o servlets segue o codigo desenvolvido ate agora.

//index.jsp
<%--
Document : pergunta1
Created on : 02/03/2009, 21:32:21
Author : aluno
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>.:: Jogo de Perguntas ::.</title>
</head>
<body>
<form action="Perguntas">
<h2>Perguntas e Respostas</h2>

Você respondera 10 perguntas de diversos assuntos.

Na medida em que for acertando você passara para a pergunta
seguinte se você erra o jogo acaba e te mostra quantas
perguntas acertou ate o momento.

<input type="submit" value="Começa"/>
</form>



</body>
</html>
// BasePergunta.java
import java.util.ArrayList;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author aluno
*/
public class BasePergunta {

private ArrayList<Pergunta> perguntas;

public BasePergunta() {
Pergunta P = new Pergunta();
P.setPergunta("Qual a resposta certa?");
P.setRespostas("certa");
P.setRespostas("errada");
P.setRespostas("errada");
perguntas.add(P);
P = new Pergunta();
P.setPergunta("Qual a outra resposta certa?");
P.setRespostas("errada");
P.setRespostas("certa");
P.setRespostas("errada");
perguntas.add(P);
P = new Pergunta();
P.setPergunta("Qual a mais outra resposta certa?");
P.setRespostas("errada");
P.setRespostas("errada");
P.setRespostas("certa");
perguntas.add(P);
}

public Pergunta getPergunta(int index) {
Pergunta P = perguntas.get(index);
perguntas.remove(index);
return P;
}

public int tamanho() {
return perguntas.size();
}
}
//pergunta.java


import java.util.ArrayList;

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author aluno
*/
public class Pergunta {
private String pergunta;
private ArrayList<String> respostas;

/**
* @return the pergunta
*/
public String getPergunta() {
return pergunta;
}

/**
* @param pergunta the pergunta to set
*/
public void setPergunta(String pergunta) {
this.pergunta = pergunta;
}

/**
* @return the respostas
*/
public String getRespostas(int index) {
return respostas.get(index);
}

/**
* @param respostas the respostas to set
*/
public void setRespostas(String resposta) {
this.respostas.add(resposta);
}
}
//Pergutas.java



/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/


import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
*
* @author aluno
*/
public class Perguntas extends HttpServlet {

private BasePergunta DB = new BasePergunta();
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {

out.println("<html>");
out.println("<head>");
out.println("<title>Servlet Perguntas</title>");
out.println("</head>");
out.println("<body>");

Random r = new Random();
Pergunta P = DB.getPergunta(r.nextInt(DB.tamanho()));



out.println("</body>");
out.println("</html>");

} finally {
out.close();
}
}

// <editor-fold defaultstate="collapsed" desc="Métodos HttpServlet. Clique no sinal de + à esquerda para editar o código.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>

}

11 Respostas

Renato_Ceadareanu

Você esta conseguindo chamar a servlet? ta confurado direito? Seja mais especifico no seu problema :wink:

david.cs20

Estou conseguindo chamar sim so ñ estou conseguindo e fazer o html no servlets que chame a pergunta.

G

Seguinte, para pegar a pergunta vc está usando um número randômico. Qual o tratamento para quando for pedida uma pergunta de um índice que não existe?

Explicando melhor, no seu exemplo vc inseriu 3 perguntas. O que acontece se eu pedir a pergunta de índice 15?

Não sei se vc postou o código todo, mas se postou, a hipótese acima resultará em erro de ArrayIndexOutOfBounds.

Outra pergunta (essa é só curiosidade): Onde está sendo indicado qual das respostas é a certa?

G

Faltou vc jogar no output a pergunta e as respostas …

Renato_Ceadareanu

voce esta recuperando o objeto Pergunta, mas nao está dando out.print em suas propriedade ( dados que deseja exibir )

david.cs20

Então eu não sei como que faço pra chamar os output no meu exemplo.
As outras partes que estão faltando eu ainda estou desenvolvendo. E pq comecei a aprender jsp agora e não tenho uma base muito boa de java se puderem me instruir seria otimo pq ta tenso. :?
Deis de ja obrigado.

david.cs20

Alguem pode me ajudar a chamar as perguntas na minha aplicação?

Renato_Ceadareanu

Após recuperar o objeto Pergunta escreva

system.out.println(p.getPergunta());

:roll:

david.cs20

valeu vou testa aqui! :smiley:

david.cs20

infelismente não funcionou :?

Renato_Ceadareanu

deu erro?

Criado 13 de abril de 2009
Ultima resposta 14 de abr. de 2009
Respostas 11
Participantes 3