import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class Quiz extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
// 最初の問は GET
doPost(request, response);
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.setContentType("text/html; charset=Windows-31J");
PrintWriter out = response.getWriter();
out.println("
");
int i, number=0, score=0, answer=0;
ArrayList questions;
HttpSession session = request.getSession(true) ;
if (session.isNew()) {
// 最初の問
questions = new ArrayList();
File f = new File(getServletContext().getRealPath("/quiz.txt"));
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(f), "Windows-31J"));
String line="";
while((line=in.readLine())!=null) {
line = line.trim();
if(line.trim().equals(""))
continue;
questions.add(line.split("\\s+"));
}
in.close();
session.setAttribute("questions", questions);
out.println("ようこそ QUIZへ!
では最初の問題です。
");
} else {
// 最初の問ではない
try {
answer = Integer.parseInt(request.getParameter("answer"));
number = (Integer)session.getAttribute("number");
score = (Integer)session.getAttribute("score");
questions = (ArrayList)session.getAttribute("questions");
String[] tokens = questions.get(number-1);
int a = Integer.parseInt(tokens[tokens.length-1]);
if (a==answer) { // aは最後の文字
out.println("正解です。
");
score++;
} else {
out.println("残念でした。
");
}
} catch (Exception e) {
session.invalidate();
out.println("エラーが起こりました。リロードしてください。");
out.println("");
out.close();
return;
}
}
if (number >= questions.size()) { // 終
out.println("
これで QUIZは終わりです。
");
out.println("正解数は、"+score+"問でした。");
session.invalidate();
} else { // 次の問を表示
String[] tokens = questions.get(number);
out.println("次の問: "+tokens[0]+"
");
out.println("");
number++;
session.setAttribute("number", number);
session.setAttribute("score", score);
}
out.println("