[Java / Eclipse / Servlet / JSP / PostgreSQL] Framework der WEB-Anwendung mit Funktionen zum Posten / Speichern / Bearbeiten / Aktualisieren / Löschen von Daten

Inhalt dieses Artikels

Entwicklung einer Anwendung mit Funktionen zum Posten / Speichern / Bearbeiten / Aktualisieren / Löschen von Daten in Java und einem Memorandum

Merkmale der Person, die diesen Artikel geschrieben hat

・ Ich habe Erfahrung mit dem Hochladen einer WEB-Anwendung, die über Funktionen zum Posten / Speichern / Bearbeiten / Aktualisieren / Löschen von Daten in die Produktionsumgebung mit Rails verfügt. ・ Keine Erfahrung in der Entwicklung von WEB-Apps in Java

Entwicklungsumgebung

Artikel
PC MacBook Air
OS MacOS Mojave
Sprache Java
IDE Eclipse
DB PostgreSQL
DB-Verwaltung pgAdmin
Versionskontrolle GitHub
Browser Chrome

Voraussetzungen

DB (1) Die zu implementierenden Funktionen und das entsprechende Servlet / JSP sind wie folgt.

process method Servlet JSP
/list GET ListServlet.java list.jsp
/show GET ShowServlet.java list.jsp
/new GET NewServlet.java new.jsp
/create POST CreateServlet.java -
/edit GET EditServlet.java edit.jsp
/update POST UpdateServlet.java -
/delete POST DeleteServlet.java -

② Bereiten Sie eine POSTS-Tabelle in der MEMO-Datenbank vor und verbinden Sie die Tabelle mit der Anwendung.

Artikel Wert
DB-Adresse http://localhost:5432/
DB memo
Nutzername SAMPLEUSER
Passwort SAMPLEPASSWORD

SQL


CREATE TABLE posts (
id SERIAL PRIMARY KEY,
title varchar,
content varchar
);

SQL


SELECT * FROM posts;

SQL-Ausführungsergebnis


id |     title     |             content              
----+---------------+----------------------------------
 14 | 2019/05/15    | memo app by Java Servlet and JSP
 15 | sample title  | sample content
 16 | memoapp       | made of Java Servlet and JSP
 17 | sample_edited | sample_edited
 21 | sample_edited | sample_edited
 22 | sample        | sample
(6 rows)

Eclipse ① Die WEB-Anwendung wird von "Dynamic WEB Project" erstellt.

Andere

① Berücksichtigen Sie diesmal nicht die Gemeinsamkeit von doppeltem Code (2) Front-End-Design mit CSS / JavaScript wird diesmal nicht berücksichtigt.

Codebeispiel

Servlet ListServlet.java

ListServlet.java


package sample;

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.util.*;
import java.sql.*;

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
		
		//DB connection
		String url = "jdbc:postgresql://localhost:5432/memo";
		String user = "SAMPLEUSER";
		String password = "SAMPLEPASSWORD";
		
	    try{
            Class.forName("org.postgresql.Driver");
        } catch(Exception e) {
            e.printStackTrace();
        }
		
		try { 
			Connection connection = DriverManager.getConnection(url, user, password);
			connection.setAutoCommit(false);
			String sql = "SELECT * FROM posts;";
			PreparedStatement statement = connection.prepareStatement(sql);

			
			ResultSet results = statement.executeQuery();
			
			ArrayList<HashMap<String,String>> rows = new ArrayList<HashMap<String,String>>();
			
			while(results.next()) {
				HashMap<String,String> columns = new HashMap<String,String>();
				
				String id = results.getString("id");
				columns.put("id",id);
				
				String title = results.getString("title");
				columns.put("title", title);
				
				String content = results.getString("content");
				columns.put("content",content);
				
				rows.add(columns);
			}
			request.setAttribute("rows", rows);
			results.close();
			statement.close();
		
			
		} catch(Exception e) {
			e.printStackTrace();
		}
		
		RequestDispatcher dispatcher = request.getRequestDispatcher("WEB-INF/views/list.jsp");
		dispatcher.forward(request,response);
		System.out.println("-----Angezeigter Bildschirm-----");
		System.out.println("/list");
		System.out.println("");
	}

}

ShowServlet.java

ShowServlet.java


package sample;

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.util.*;
import java.sql.*;

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
		
		//DB connection
		String url = "jdbc:postgresql://localhost:5432/memo";
		String user = "SAMPLEUSER";
		String password = "SAMPLEPASSWORD";
		
	    try{
            Class.forName("org.postgresql.Driver");
        } catch(Exception e) {
            e.printStackTrace();
        }
		
		try { 
			Connection connection = DriverManager.getConnection(url, user, password);
			connection.setAutoCommit(false);
			String sql = "SELECT * FROM posts WHERE id = ?;";
			PreparedStatement statement = connection.prepareStatement(sql);
			statement.setInt(1, Integer.parseInt(request.getParameter("id")));
			
			ResultSet results = statement.executeQuery();
			
			ArrayList<HashMap<String,String>> rows = new ArrayList<HashMap<String,String>>();
			
			while(results.next()) {
				
				String id = results.getString("id");
				request.setAttribute("id", id);
				
				String title = results.getString("title");
				request.setAttribute("title", title);

				
				String content = results.getString("content");
				request.setAttribute("content", content);
				

			}
			request.setAttribute("rows", rows);
			System.out.println("-----Gespeicherte Daten-----");
			System.out.println(rows);
			System.out.println("");
			results.close();
			statement.close();
		
			
		} catch(Exception e) {
			e.printStackTrace();
		}
		
		RequestDispatcher dispatcher = request.getRequestDispatcher("WEB-INF/views/show.jsp");
		dispatcher.forward(request,response);
		System.out.println("-----Angezeigter Bildschirm-----");
		System.out.println("/show?id=" + request.getParameter("id"));
		System.out.println("");
	}

}

NewServlet.java

NewServlet.java


package sample;

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.util.*;
import java.sql.*;

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
		
		RequestDispatcher dispatcher = request.getRequestDispatcher("WEB-INF/views/new.jsp");
		dispatcher.forward(request,response);
		System.out.println("-----Angezeigter Bildschirm-----");
		System.out.println("/new");
		System.out.println("");
	}

}

CreateServlet.java

CreateServlet.java


package sample;

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.util.*;
import java.sql.*;

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
		
				String title = request.getParameter("title");
				String content = request.getParameter("content");
		
		//DB connection
				String url = "jdbc:postgresql://localhost:5432/memo";
				String user = "SAMPLEUSER";
				String password = "SAMPLEPASSWORD";
				
			    try{
		            Class.forName("org.postgresql.Driver");
		        } catch(Exception e) {
		            e.printStackTrace();
		        }
				
				try { 
					Connection connection = DriverManager.getConnection(url, user, password);
					connection.setAutoCommit(false);
					String sql = "INSERT INTO posts (title,content) VALUES (?,?)" ;
					PreparedStatement statement = connection.prepareStatement(sql);
					statement.setString(1, title);
					statement.setString(2, content);
					int number = statement.executeUpdate();			
					connection.commit();
				} catch(Exception e) {
					e.printStackTrace();
				}
		
		
		
		String forward = "/memo/list";
		response.sendRedirect(forward);
		System.out.println("-----Ich habe ein Memo gepostet.-----");
		System.out.println("ID: " + request.getParameter("title") + " TITLE: " + request.getParameter("content"));
		System.out.println("");
	}
}


EditServlet.java

EditServlet.java


package sample;

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.util.*;
import java.sql.*;

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
		
		//DB connection
		String url = "jdbc:postgresql://localhost:5432/memo";
		String user = "SAMPLEUSER";
		String password = "SAMPLEPASSWORD";
		
	    try{
            Class.forName("org.postgresql.Driver");
        } catch(Exception e) {
            e.printStackTrace();
        }
		
		try { 
			Connection connection = DriverManager.getConnection(url, user, password);
			connection.setAutoCommit(false);
			String sql = "SELECT * FROM posts WHERE id = ?;";
			PreparedStatement statement = connection.prepareStatement(sql);
			statement.setInt(1, Integer.parseInt(request.getParameter("id")));
			
			ResultSet results = statement.executeQuery();
			
			ArrayList<HashMap<String,String>> rows = new ArrayList<HashMap<String,String>>();
			
			while(results.next()) {
				
				String id = results.getString("id");
				request.setAttribute("id", id);
				
				String title = results.getString("title");
				request.setAttribute("title", title);

				
				String content = results.getString("content");
				request.setAttribute("content", content);
				

			}
			request.setAttribute("rows", rows);
			System.out.println(rows);
			System.out.println("");
			results.close();
			statement.close();
		
			
		} catch(Exception e) {
			e.printStackTrace();
		}
		
		RequestDispatcher dispatcher = request.getRequestDispatcher("WEB-INF/views/edit.jsp");
		dispatcher.forward(request,response);
		System.out.println("-----Angezeigter Bildschirm-----");
		System.out.println("/edit?id=" + request.getParameter("id"));
		System.out.println("");
	}

}

UpdateServlet.java

UpdateServlet.java


package sample;

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.util.*;
import java.sql.*;

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
		
				String title = request.getParameter("title");
				String content = request.getParameter("content");
				int id = Integer.parseInt(request.getParameter("id"));
		
		//DB connection
				String url = "jdbc:postgresql://localhost:5432/memo";
				String user = "SAMPLEUSER";
				String password = "SAMPLEPASSWORD";
				
			    try{
		            Class.forName("org.postgresql.Driver");
		        } catch(Exception e) {
		            e.printStackTrace();
		        }
				
				try { 
					Connection connection = DriverManager.getConnection(url, user, password);
					connection.setAutoCommit(false);
					String sql = "UPDATE posts SET title = ?, content = ? WHERE id = ?";
					PreparedStatement statement = connection.prepareStatement(sql);
					statement.setString(1, title);
					statement.setString(2, content);
					statement.setInt(3, id);
					int number = statement.executeUpdate();			
					connection.commit();
				} catch(Exception e) {
					e.printStackTrace();
				}
		
		
		
		String forward = "/memo/show?id=" + id;
		response.sendRedirect(forward);
		System.out.println("-----Das Memo wurde aktualisiert.-----");
		System.out.println("ID: " + request.getParameter("id") + " TITLE: " + request.getParameter("title")  + " CONTENT: " + request.getParameter("content"));
		System.out.println("");
	}
}


DeleteServlet.java

DeleteServlet.java


package sample;

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.util.*;
import java.sql.*;

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

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
		
				int id = Integer.parseInt(request.getParameter("id"));
		
		//DB connection
				String url = "jdbc:postgresql://localhost:5432/memo";
				String user = "SAMPLEUSER";
				String password = "SAMPLEPASSWORD";
				
			    try{
		            Class.forName("org.postgresql.Driver");
		        } catch(Exception e) {
		            e.printStackTrace();
		        }
				
				try { 
					Connection connection = DriverManager.getConnection(url, user, password);
					String sql = "DELETE FROM posts WHERE id = ?";
					PreparedStatement statement = connection.prepareStatement(sql);
					statement.setInt(1, id);
					int number = statement.executeUpdate();			
				} catch(Exception e) {
					e.printStackTrace();
				}
		
		
		
		String forward = "/memo/list";
		response.sendRedirect(forward);
		System.out.println("-----Ich habe das Memo gelöscht.-----");
		System.out.println("ID: " + request.getParameter("id"));
		System.out.println("");
	}
}


JSP list.jsp

list.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "java.util.*" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
 <h2>MEMO LIST</h2>
 <p>This app is made by Java Servlet and JSP.</p>



<table>
<tr><th>ID</th><th>TITLE</th></tr>
<% ArrayList<HashMap<String,String>> rows = (ArrayList<HashMap<String,String>>)request.getAttribute("rows"); %>

<% for(HashMap<String,String> columns: rows){ %>
<tr><td><%= columns.get("id") %></td><td><a href="show?id=<%= columns.get("id") %>"><%= columns.get("title") %></a></td></tr>
<% } %>
</table>
 
 <p></p>
 <a href="new">Create new memo</a>
</body>
</html>

show.jsp

show.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "java.util.*" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
 <h2>MEMO DETAIL</h2>
 <p>This app is made by Java Servlet and JSP.</p>


<br>
<form action="delete?id=<%= request.getAttribute("id") %>" method="POST">
<p>ID: <%= request.getAttribute("id") %></p>
<p>TITLE: <%= request.getAttribute("title") %></p>
<p>CONTENT:</p>
<p><%= request.getAttribute("content") %></p>
<br>
 <a href="edit?id=<%= request.getAttribute("id") %>">Edit</a><br>
 <button>Delete</button><br>
 </form>
<br>
 <a href="list">Return list</a>
</body>
</html>

new.jsp

new.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "java.util.*" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
 <h2>CREATE NEW MEMO</h2>
 <p>This app is made by Java Servlet and JSP.</p>
<p></p>

<form action="create" method="POST">
<p>TITLE:</p>
<input type=text name="title">
<p>CONTENT:</p>
<input type=text name="content">
<p></p>
 <button>Create</button><br>
 </form>
 
<p></p>
 <a href="list">Cancel</a>
</body>
</html>

edit.jsp

edit.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "java.util.*" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
 <h2>EDIT MEMO</h2>
 <p>This app is made by Java Servlet and JSP.</p>
<p></p>

<form action="update" method="POST">
<p>ID: <%= request.getAttribute("id") %></p>
<input type='hidden' name='id' value='<%= request.getAttribute("id") %>'>
<p>TITLE:</p>
<input type="text" name="title" value="<%= request.getAttribute("title") %>">
<p>CONTENT:</p>
<input type="text" name="content" value="<%= request.getAttribute("content") %>">
<p></p>
 <button>Update</button><br>
 </form>
 
<p></p>
 <a href="list">Cancel</a>
</body>
</html>

Was ich in Zukunft machen möchte

(1) Implementierung der Anmelde- / Abmeldefunktion ② Passwortverschlüsselung ③ Hinzufügung einer Validierung (Einschränkung) ④ Teilevorlage ⑤ Verbessern Sie die Entwurfsfähigkeit durch die Entwicklung von WEB-Anwendungen (Haushaltsbuchanwendung, die durch zusammengesetzte Buchhaltung angehängt wird) mit Java

Recommended Posts

[Java / Eclipse / Servlet / JSP / PostgreSQL] Framework der WEB-Anwendung mit Funktionen zum Posten / Speichern / Bearbeiten / Aktualisieren / Löschen von Daten
Bis Sie eine Webanwendung mit Servlet / JSP erstellen (Teil 1)
Vergleich der WEB-Anwendungsentwicklung mit Rails und Java Servlet + JSP
[Java] Stellen Sie eine mit Eclipse + Maven + Ontology mit Heroku erstellte Webanwendung bereit
Grundlegende Erstellung von Webanwendungen Servlet / JSP (Buchungsbildschirm)
Memo zur Entwicklung von Webanwendungen mit MVN, Tomcat, JSP / Servlet mit VScode
Erstellen Sie eine Memo-App mit Tomcat + JSP + Servlet + MySQL mit Eclipse
[Wahrscheinlich die einfachste] WEB-Anwendungsentwicklung mit Apache Tomcat + Java Servlet
Erstellen Sie eine Webanwendung mit Javalin
Erstellen einer Entwicklungsumgebung für Java-Webanwendungen mit Docker für Mac Teil1
Erstellen Sie mit Docker für Mac Teil2 eine Entwicklungsumgebung für Java-Webanwendungen