import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class GuestBook extends HttpServlet { @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { request.setCharacterEncoding("Windows-31J"); File tmp = new File(getServletContext().getRealPath("/WEB-INF/tmp.html")); PrintWriter fout = new PrintWriter(new OutputStreamWriter(new FileOutputStream(tmp), "Windows-31J")); File f = new File(getServletContext().getRealPath("/WEB-INF/Guests.html")); try { BufferedReader fin = new BufferedReader(new InputStreamReader(new FileInputStream(f), "Windows-31J")); String line; while (true) { line = fin.readLine(); if (line==null) { fout.println(""); line = ""; break; } if (line.contains("")) break; fout.println(line); } fout.println(""); fout.printf("%n", request.getParameter("名前")); fout.printf("%n", request.getParameter("メールアドレス")); fout.printf("%n", request.getParameter("ホームページ")); fout.printf("%n", request.getParameter("ひとこと")); fout.println("
名前%s
メールアドレス%s
ホームページ%s
ひとこと%s
"); fout.println("
"); fout.println(line); while (true) { line = fin.readLine(); if (line==null) break; fout.println(line); } fin.close(); fout.close(); } catch (FileNotFoundException e) { outputError(response, e); return; } f.delete(); tmp.renameTo(f); try { request.getRequestDispatcher("/WEB-INF/Guests.html").forward(request, response); } catch (ServletException e) { outputError(response, e); return; } } private void outputError(HttpServletResponse response, Exception e) throws IOException { response.setContentType("text/html; charset=Windows-31J"); PrintWriter out = response.getWriter(); out.println("
");
        e.printStackTrace(out);
        out.println("
"); } }