演習課題「レビューログ:編集結果を保存しよう」
ここでは、マンガや動画などの感想を書き込むレビューログを作っています。
右の環境には、「myreview」というディレクトリに、Servlet・JSPを使用したWebアプリケーションの雛形が用意してあります。
このうちのUpdateServlet.javaを修正して、編集結果を保存できるようにしてください。さらに、保存後は、レビューの詳細画面にリダイレクトしてください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
#08:編集したメモを保存する
ここでは、フォームで編集したメモを保存するプログラムを作成します。「/update」で、フォームの内容をデータベースに保存しましょう。
(tomcat/webapps/mymemo/UpdateServlet.java)import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.sql.*;
public class UpdateServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        int postId = Integer.parseInt(request.getParameter("id"));
        String title = request.getParameter("title");
        String content = request.getParameter("content");
        String url = "jdbc:mysql://localhost/memo";
        String user = "root";
        String password = "";
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (Exception e) {
            e.printStackTrace();
        }
        String sql = "UPDATE posts SET title = ?, content = ? WHERE id = ?";
        try (Connection connection = DriverManager.getConnection(url, user, password);
             PreparedStatement statment = connection.prepareStatement(sql)) {
            statment.setString(1, title);
            statment.setString(2, content);
            statment.setInt(3, postId);
            int number = statment.executeUpdate();
            request.setAttribute("message", "Successfully! Update post " + postId);
       } catch (Exception e) {
            request.setAttribute("message", "Exception:" + e.getMessage());
       }
       String forward = "/show?id=" + postId;
       RequestDispatcher dispatcher = request.getRequestDispatcher(forward);
       dispatcher.forward(request, response);
    }
}
- Javaの道>Servlet・JSP
  https://www.javaroad.jp/servletjsp/index.html
- Servletアプリ開発:目次 - Web系開発メモ
  http://web-dev.hatenablog.com/entry/java/servlet/dev-restful-app/table-of-contents