Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Servletで作成したフォームからMySQLにデータを登録するには

現在Eclipseで入力フォームからMySQLにデータを登録したいとコードを作成しているのですが、INSERT文と入力フォームの紐付けがよくわかりません。

ServletにHTMLを書くのではなく、別にHTMLのファイルを作成したほうが良いのでしょうか?

一応コードとしては

Write.java

package jp.tuyano.framework;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HelloWorld
 */
@WebServlet("/Write")
public class Write extends HttpServlet {
     private static final long serialVersionUID = 1L;
      
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Write() {
        super();
        // TODO Auto-generated constructor stub
    }

     /**
      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
     protected void doGet(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
         response.setContentType("text/html; charset=Shift_JIS");
            PrintWriter out = response.getWriter();

            out.println("サンプル<br><br>");
            out.println("<table>");
            out.println("タイトル<br><br>");
            out.println("<input type=\"text\" name=\"name\" size=\"50\">");
            out.println("<br><br>");
            out.println("名前:<br>");
            out.println("<input type=\"text\" name=\"title\" size=\"50\">");
            out.println("<br><br>");
            out.println("本文:<br>");
            out.println("<textarea name=\"message\"cols=\"40\" rows=\"10\"></textarea>");
            out.println("<form action=\"HelloWorld\" method=\"POST\">");
            out.println("<br><br>");
            out.println("<input type=\"submit\" value=\"投稿\">");
            out.println("</table>");
            out.println("</form>");
            out.println("</body></html>");

            out.println("<p>");

            Connection conn = null;
            String url = "jdbc:mysql://localhost/bbs";
            String user = "root";
            String password = "pass";

            try {
                Class.forName("com.mysql.jdbc.Driver").newInstance();
                conn = DriverManager.getConnection(url, user, password);

                Statement stmt = conn.createStatement();
                String sql = "insert into bbs (title, name,message,year,time)" +
                        " values ('\', \'\',\'\',\'\',\'\')";
               
                
                stmt.execute(sql);
                ResultSet rs = stmt.executeQuery(sql);
                    
                while(rs.next()){
                  
                }

                rs.close();
                stmt.close();
              }catch (ClassNotFoundException e){
                out.println("ClassNotFoundException:" + e.getMessage());
              }catch (SQLException e){
                out.println("SQLException:" + e.getMessage());
              }catch (Exception e){
                out.println("Exception:" + e.getMessage());
              }finally{
                try{
                  if (conn != null){
                    conn.close();
                  }
                }catch (SQLException e){
                  out.println("SQLException:" + e.getMessage());
                }
              }

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

3

回答

15088

閲覧

3件の回答

評価

0

>現在Eclipseで入力フォームからMySQLにデータを登録した
いとコードを作成しているのですが、INSERT文と入力フォー
ムの紐付けがよくわかりません。
似たようなことをするサンプルコードはいくらでもある。
まずはそういうサンプルの一行一行がどういう意図で
書かれ、具体的にどう動くのか、理解するところからだな。
知識なしにいきなり書けるような人間は、そうはいないよ。

評価

0

レス有難うございます。

仰ることも分かるのですが、検索をかけて類似したコードでもプロジェクトやフレームワークの違いでも記述が変わってきますし、環境設定も変わるため理解しようとしても混乱してしまうのです。

ですので実際に自分で動かして挙動を見たほうが個人的にですが、理解しやすい為今回質問させて頂きました。

評価

0

なら、サーブレットやSQLも離れてもっと簡単なコードを
読み下す練習をする方がよかろう。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。