Recent Posts
Recent Comments
Archives
๋ฐ˜์‘ํ˜•
250x250
ยซ   2024/04   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Today
Yesterday

Total
04-30 00:00
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Hey Tech

[Java] MVC ํŒจํ„ด์„ ํ™œ์šฉํ•œ MySQL ์„œ๋ฒ„ ์—ฐ๋™(Tomcat ํ™œ์šฉ) ๋ณธ๋ฌธ

SW ๊ฐœ๋ฐœ/Java

[Java] MVC ํŒจํ„ด์„ ํ™œ์šฉํ•œ MySQL ์„œ๋ฒ„ ์—ฐ๋™(Tomcat ํ™œ์šฉ)

Tony Park 2021. 12. 9. 09:03
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ก ๋ชฉํ‘œ

Java Spring์„ ํ™œ์šฉํ•œ ์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ ๊ฐ„ MySQL ์—ฐ๋™ ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•œ๋‹ค.

์‚ฌ์šฉํ•  Tool

1.  Java 11 ๋ฒ„์ „
2.  IDE(์ดํด๋ฆฝ์Šค)
3.  Tomcat 9 ๋ฒ„์ „
4.  MobaXterm
5.  Virtual Box
6.  Ubuntu-20 64bit
7.  ์œˆ๋„์šฐ10 64bit
8.  MySQL

๋ชฉ์ฐจ

1.  Java ์ฝ”๋”ฉ
2.  Virtual Box ์„ธํŒ…
3.  ๊ฐ€์ƒ ๋จธ์‹  ์ ‘์†
4.  ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ์„ค์น˜
5.  ์ž๋ฐ” ์„ค์น˜
6.  Tomcat ์„ธํŒ…
7.  MySQL ์„ธํŒ…(๋ฆฌ๋ˆ…์Šค)
8.  MySQL ์„ธํŒ…(์œˆ๋„์šฐ)
9.  MySQL ์—ฐ๋™ ํ…Œ์ŠคํŠธ

โœ”๏ธ ์‚ฌ์ „ ์ค€๋น„

Virtual Box, MobaXterm ์„ค์น˜ ๋ฐ ์„ธํŒ…

https://heytech.tistory.com/192

 

Virtual Box ๋ฐ MobaX๋ฅผ ํ™œ์šฉํ•œ ๊ฐ€์ƒ ์„œ๋ฒ„ ๋งŒ๋“ค๊ณ  ํ™œ์šฉํ•˜๊ธฐ!

๐Ÿ’ก ํ•™์Šต๋ชฉํ‘œ Virtual Box์™€ MobaX๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐ€์ƒ ์„œ๋ฒ„ ์ƒ์„ฑ ๋ฐ ํ™œ์šฉ ์‹ค์Šต์„ ์ง„ํ–‰ํ•œ๋‹ค. ๋ชฉ์ฐจ 1. Virtual Box ์„ค์น˜ 1.1. Virtual Box๋ž€? 1.2.  Virtual Box ์„ค์น˜ ๋งํฌ 1.3. ๊ฐ€์ƒ ๋จธ์‹  ์ดˆ๊ธฐ ์„ค์ • 2. ๊ฐ€์ƒ ๋จธ์‹  ๋กœ..

heytech.tistory.com

1.  Java ์ฝ”๋”ฉ

(1) MySQL Connector ์„ค์น˜

MySQL ์ปค๋„ฅํ„ฐ๋ฅผ ์„ค์น˜ํ•ด ์ฃผ์„ธ์š”.

ํŒŒ์ผ์€ ์ž๋ฐ” ํ”„๋กœ์ ํŠธ ๋‚ด src/main/webapp/WEB-INF/lib ํด๋” ์•ˆ์œผ๋กœ ์˜ฎ๊ฒจ์ค๋‹ˆ๋‹ค.

https://dev.mysql.com/downloads/connector/j/

 

MySQL :: Download Connector/J

MySQL Connector/J 8.0 is highly recommended for use with MySQL Server 8.0, 5.7 and 5.6. Please upgrade to MySQL Connector/J 8.0.

dev.mysql.com

(2) Java ์ฝ”๋“œ

์ €๋Š” MVCprj02๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜์˜€๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŒŒ์ผ์„ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

1) src/main/java/Pack01/ControlClass.java

package Pack01;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ControlClass {
	@RequestMapping("/SignUp")
	String signUp() {
		System.out.println("ํšŒ์›๊ฐ€์ž… ๋ฒ„ํŠผ ํด๋ฆญ");
		return "SignUp";
	}
	
	@RequestMapping("/SignUpComplete")
	String SignUpComplete() {
		System.out.println("ํšŒ์›๊ฐ€์ž… ์™„๋ฃŒ");
		return "SignUpComplete";
	}
	
	
	@RequestMapping("/ShowList")
	String showList() {
		System.out.println("ํšŒ์›๋ชฉ๋ก ๋ฒ„ํŠผ ํด๋ฆญ");
		return "ShowList";
	}
	
	@RequestMapping("/Delete")
	String deleteID(){
		System.out.println("์•„์ด๋”” ์‚ญ์ œ");
		return "Delete";
	}
	
	@RequestMapping("/Update")
	String update() {
		System.out.println("์•„์ด๋”” ์ˆ˜์ •");
		return "Update";
	}
	
	@RequestMapping("/UpdateComplete")
	String updateComplete() {
		System.out.println("์•„์ด๋”” ์ˆ˜์ • ์™„๋ฃŒ");
		return "UpdateComplete";
	}
	
	@RequestMapping("/Main")
	String mainPage() {
		System.out.println("๋ฉ”์ธํŽ˜์ด์ง€");
		return "Main";
	}
	
}

2) src/main/webapp/index.jsp

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

<head>
<title>๋ฉ”์ธ ํŽ˜์ด์ง€</title>
</head>

<body>
	<%=new Date()%>
	<h2>2nd Project</h2>
	<a href="SignUp">ํšŒ์›๊ฐ€์ž…</a><br/>
	<a href="ShowList">ํšŒ์›๋ชฉ๋ก</a><br/>
</body>

3) src/main/webapp/dispatcher-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans        
http://www.springframework.org/schema/beans/spring-beans.xsd        
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">

	<!-- ์ปจํŠธ๋กค๋Ÿฌ ์œ„์น˜ ์„ค์ • -->
	<context:component-scan base-package="Pack01" />

	<mvc:annotation-driven />
	<mvc:default-servlet-handler />

	<!-- ๋ทฐ ์œ„์น˜ ์„ค์ • -->
	<mvc:view-resolvers>
		<mvc:jsp prefix="/WEB-INF/Views/" />
	</mvc:view-resolvers>
	
</beans>

4) src/main/webapp/web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://JAVA.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">

	<display-name>Archetype Created Web Application</display-name>

	<servlet>
		<servlet-name>dispatcher</servlet-name>
		<servlet-class>
			org.springframework.web.servlet.DispatcherServlet
		</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<!--dispatcher ์„ค์ • -->
	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

	<!--ํ•œ๊ธ€ ์„ค์ • -->
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>
			org.springframework.web.filter.CharacterEncodingFilter
		</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
</web-app>

5) src/main/webapp/Views/Main.jsp

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

<head>
<title>๋ฉ”์ธ ํŽ˜์ด์ง€</title>
</head>

<body>
	<%=new Date()%>
	<h2>2nd Project</h2>
	<a href="SignUp">ํšŒ์›๊ฐ€์ž…</a><br/>
	<a href="ShowList">ํšŒ์›๋ชฉ๋ก</a><br/>
</body>

6) src/main/webapp/Views/ShowList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="java.sql.DriverManager"%>
<%@ page import="java.sql.Connection"%>
<%@ page import="java.sql.Statement"%>
<%@ page import="java.sql.ResultSet"%>
<%!// ๋ณ€์ˆ˜ ์„ ์–ธ
	Connection conn = null;
	Statement stmt = null;
	ResultSet rs = null;
	String DB_URL = "jdbc:mysql://localhost:3306/db01?"
			+ "useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"; // DB ์ ‘์† ์ฃผ์†Œ
	String USERNAME = "gbpark"; // DB ID
	String PASSWORD = "1"; // DB Password
	String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; // jdbc ๋“œ๋ผ์ด๋ฒ„ ์ฃผ์†Œ
	String SQL = "select * from mytable02";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ํšŒ์› ๋ชฉ๋ก ๋ฆฌ์ŠคํŠธ</title>
</head>
<body>
	<%
		try {
		Class.forName(JDBC_DRIVER);
		conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);
		stmt = conn.createStatement();
		rs = stmt.executeQuery(SQL);
	%>
	<table border="1">
		<tr>
			<td>์ด๋ฆ„</td>
			<td>์‚ญ์ œ</td>
			<td>์ˆ˜์ •</td>
		</tr>
		<%
			while (rs.next()) {
		%>
		<tr>
			<td><%=rs.getString("id")%></td>
			<td><a href="Delete?id=<%=rs.getString("id")%>">์‚ญ์ œ</a></td>
			<td><a href="Update?id=<%=rs.getString("id")%>">์ˆ˜์ •</a></td>
		</tr>

		<%
			}
		} catch (Exception e) {
		e.printStackTrace();
		} finally {
		try {
		if (rs != null)
			rs.close();
		if (stmt != null)
			stmt.close();
		if (conn != null)
			conn.close();
		} catch (Exception e) {
		e.printStackTrace();
		}
		}
		%>
	
	<a href="SignUp">ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€</a><br/>
	<a href="ShowList">ํšŒ์› ๋ชฉ๋ก ํŽ˜์ด์ง€</a><br/>
</body>
</html>

7) src/main/webapp/Views/SignUp.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€</title>
</head>
<body>
	<h1>ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€</h1>
	<FORM METHOD = POST action = "SignUpComplete">
		ID <INPUT TYPE="text" NAME="id" VALUE="ID ์ž…๋ ฅ"><br/>
		<INPUT TYPE="submit" VALUE="๊ฐ€์ž…">
	</FORM>
	<button type = "button" onclick="location.href='Main'">์ทจ์†Œ</Button>
	
</body>
</html>

8) src/main/webapp/Views/SignUpComplete.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.DriverManager"%>
<%@ page import="java.sql.Connection"%>
<%@ page import="java.sql.Statement"%>
<%@ page import="java.sql.PreparedStatement"%>
<%!
	Connection conn = null;
	PreparedStatement pstmt = null;
	String DB_URL = "jdbc:mysql://localhost:3306/db01?"
			+ "useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"; // DB ์ ‘์† ์ฃผ์†Œ
	String USERNAME = "gbpark"; // DB ID
	String PASSWORD = "1"; // DB Password
	String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; // jdbc ๋“œ๋ผ์ด๋ฒ„ ์ฃผ์†Œ
	String SQL = "insert into mytable02 values(?)";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		try {
		Class.forName(JDBC_DRIVER);
		conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);
		pstmt = conn.prepareStatement(SQL);
		String id = (String) request.getParameter("id");
		out.println("โœ”๏ธ์•„์ด๋”” [" + id + "] ๋‹˜ ๊ฐ€์ž…์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค." );
		out.println("<br/>");
		pstmt.setString(1, id);
		pstmt.executeUpdate();
		pstmt.close();
		} catch (Exception e) {
		e.printStackTrace();
		} finally {
			try {
				if (conn != null) 
					conn.close();
				
				if (pstmt != null)
					pstmt.close();
			} catch (Exception e) {
			e.printStackTrace();
			}
		}
	%>
	
	<a href="SignUp">ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€</a><br/>
	<a href="ShowList">ํšŒ์› ๋ชฉ๋ก ํŽ˜์ด์ง€</a><br/>
	
</body>
</html>

9) src/main/webapp/Views/Delete.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.DriverManager"%>
<%@ page import="java.sql.Connection"%>
<%@ page import="java.sql.Statement"%>
<%@ page import="java.sql.PreparedStatement"%>
<%!
	Connection conn = null;
	PreparedStatement pstmt = null;
	String DB_URL = "jdbc:mysql://localhost:3306/db01?"
			+ "useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"; // DB ์ ‘์† ์ฃผ์†Œ
	String USERNAME = "gbpark"; // DB ID
	String PASSWORD = "1"; // DB Password
	String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; // jdbc ๋“œ๋ผ์ด๋ฒ„ ์ฃผ์†Œ
	String SQL = "delete from mytable02 where id = ?";
	
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ํšŒ์› ์‚ญ์ œ ์™„๋ฃŒ ํŽ˜์ด์ง€</title>
</head>
<body>
	<%
		try {
		String id = (String)request.getParameter("id");
		out.println("โœ”๏ธ ์•„์ด๋”” ["+ id + "]๋ฅผ(์„) ์‚ญ์ œํ•˜์˜€์Šต๋‹ˆ๋‹ค.");
		out.println("<br/>");
		Class.forName(JDBC_DRIVER);
		conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);
		pstmt = conn.prepareStatement(SQL);
		pstmt.setString(1, id);
		pstmt.executeUpdate();
		pstmt.close();
		} catch (Exception e) {
		e.printStackTrace();
		} finally {
			try {
				if (conn != null) 
					conn.close();
				
				if (pstmt != null)
					pstmt.close();
			} catch (Exception e) {
			e.printStackTrace();
			}
		}
	%>
	<a href="SignUp">ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€</a><br/>
	<a href="ShowList">ํšŒ์› ๋ชฉ๋ก ํŽ˜์ด์ง€</a><br/>
</body>
</html>

10) src/main/webapp/Views/Update.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ID ์ˆ˜์ • ํŽ˜์ด์ง€</title>
</head>
<body>
	<h1>์ˆ˜์ •ํ•  ID๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”</h1>
	<%
	String initialID = (String)request.getParameter("id");
	%>
	<FORM METHOD = POST action = "UpdateComplete">
		๋ณ€๊ฒฝํ• ID<INPUT TYPE="text" NAME="updateID" VALUE=""><br/>
		<input type="hidden" value="<%=initialID%>" name="initialID">
		<INPUT TYPE="submit" VALUE="์ˆ˜์ •"><br/>
	</FORM>
	
	<a href="SignUp">ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€</a><br/>
	<a href="ShowList">ํšŒ์› ๋ชฉ๋ก ํŽ˜์ด์ง€</a><br/>
</body>
</html>

11) src/main/webapp/Views/UpdateComplete.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.DriverManager"%>
<%@ page import="java.sql.Connection"%>
<%@ page import="java.sql.Statement"%>
<%@ page import="java.sql.PreparedStatement"%>
<%!
	Connection conn = null;
	PreparedStatement pstmt = null;
	String DB_URL = "jdbc:mysql://localhost:3306/db01?"
			+ "useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"; // DB ์ ‘์† ์ฃผ์†Œ
	String USERNAME = "gbpark"; // DB ID
	String PASSWORD = "1"; // DB Password
	String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; // jdbc ๋“œ๋ผ์ด๋ฒ„ ์ฃผ์†Œ
	String SQL = "update mytable02 set id = ? where id = ?";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>์—…๋ฐ์ดํŠธ ์™„๋ฃŒ ํŽ˜์ด์ง€</title>
</head>
<body>
	
	<%
		try {
		String updateID = (String)request.getParameter("updateID");
		String initialID = (String)request.getParameter("initialID");
		out.println("โœ”๏ธ์•„์ด๋”” [" + initialID + 
		            "]์„(๋ฅผ) [" + updateID + 
		            "]๋กœ ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.");
		out.println("<br/>");
		Class.forName(JDBC_DRIVER);
		conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);
		pstmt = conn.prepareStatement(SQL);
		pstmt.setString(1, updateID);
		pstmt.setString(2, initialID);
		pstmt.executeUpdate();
		pstmt.close();
		} catch (Exception e) {
		e.printStackTrace();
		} finally {
			try {
				if (conn != null) 
					conn.close();
				if (pstmt != null)
					pstmt.close();
			} catch (Exception e) {
			e.printStackTrace();
			}
		}
	%>
	
	<a href="SignUp">ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€</a><br/>
	<a href="ShowList">ํšŒ์› ๋ชฉ๋ก ํŽ˜์ด์ง€</a><br/>
</body>
</html>

(3) WAR Export

ํ”„๋กœ์ ํŠธ ์šฐํด๋ฆญ - Export - WAR file ์ฐจ๋ก€๋กœ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ์ฒดํฌ๋ฐ•์Šค๋Š” ๋ชจ๋‘ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค.

Export ๊ฒฝ๋กœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ํ†ฐ์บฃ ์„ค์น˜ ์œ„์น˜ ๋‚ด webapps ํด๋”๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

C:\Program Files (x86)\Apache Software Foundation\Tomcat 9.0\webapps

2.  Virtual Box ์„ธํŒ…

(1) PC IP ํ™•์ธ

cmd ์ฐฝ์— ipconfig ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด PC IP๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ipconfig

VirtualBox ์ฃผ์†Œ๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ์ด๋”๋„ท ํ˜น์€ ๋ฌด์„ ๋žœ IPv4 ์ฃผ์†Œ ๋ณต์‚ฌ!

(2) ๊ฐ€์ƒ ๋จธ์‹  ํฌํŠธ ํฌ์›Œ๋”ฉ

Virtual Box ์‹คํ–‰ ํ›„ ์ƒ๋‹จ ๋ฉ”๋‰ด๋ฐ”์—์„œ ํŒŒ์ผ-ํ™˜๊ฒฝ์„ค์ • ํด๋ฆญ

๋„คํŠธ์›Œํฌ ํƒญ์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

์ƒ์„ฑํ•ด๋‘” ๋„คํŠธ์›Œํฌ๋ฅผ ๋”๋ธ” ํด๋ฆญํ•˜๊ณ  ํฌํŠธ ํฌ์›Œ๋”ฉ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์šฐ์ธก์— ๋…น์ƒ‰ ํ”Œ๋Ÿฌ์Šค ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ํฌํŠธํฌ์›Œ๋”ฉ ๊ทœ์น™์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŠธ IP์— ์•ž์„œ ํ™•์ธํ•œ IP ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŠธ ํฌํŠธ์™€ ๊ฒŒ์ŠคํŠธ ํฌํŠธ 3306๋ฒˆ์„,

๊ฒŒ์ŠคํŠธ IP์—๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์˜ IP๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ํ™•์ธ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

(3) ๊ฐ€์ƒ ๋จธ์‹  ์‹คํ–‰

์ด์ œ ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋”๋ธ” ํด๋ฆญํ•˜์—ฌ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

3.  ๊ฐ€์ƒ ๋จธ์‹  ์ ‘์†

MobaXterm์„ ์‹คํ–‰ํ•˜๊ณ  ์ขŒ์ธก ์ƒ๋‹จ์— Session ์•„์ด์ฝ˜์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ขŒ์ธก์— SSH๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

PC IP ์ฃผ์†Œ๋ฅผ Remote host ์ž…๋ ฅ์ฐฝ์— ์ž…๋ ฅํ•˜๊ณ  ํ•˜๋‹จ์— OK ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

(4) ๊ฐ€์ƒ ๋จธ์‹  ๋กœ๊ทธ์ธ

๊ฐ€์ƒ ๋จธ์‹ ์— ์ •์ƒ์ ์œผ๋กœ ์ ‘์†ํ–ˆ๋‹ค๋ฉด ๋กœ๊ทธ์ธ ์ฐฝ์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

์•„์ด๋”” ์ž…๋ ฅ ํ›„ ์—”ํ„ฐ, ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ํ›„ ์—”ํ„ฐ!

์ •์ƒ์ ์œผ๋กœ ๋กœ๊ทธ์ธ์ด ๋˜์—ˆ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ€์ƒ ๋จธ์‹ ์— ์ ‘์†๋ฉ๋‹ˆ๋‹ค.

4.  ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ์„ค์น˜

๊ฐ€์ƒ ๋จธ์‹  ์—…๋ฐ์ดํŠธ์™€ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

sudo apt-get update
sudo apt-get upgrade

๋„คํŠธ์›Œํฌ ๊ด€๋ จ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo apt install net-tools

5.  ์ž๋ฐ” ์„ค์น˜

๊ฐ€์ƒ ๋จธ์‹ ์— ์ž๋ฐ” 11 ๋ฒ„์ „์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo apt-get install openjdk-11-jdk

์ž๋ฐ”๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

java -version

6.  Tomcat ์„ธํŒ…

(1) Tomcat ์„ค์น˜

๊ฐ€์ƒ ๋จธ์‹ ์— ํ†ฐ์บฃ ๋ฒ„์ „ 9๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo apt-get install tomcat9 -y

(2) Tomcat ์ƒํƒœ ํ™•์ธ

ํ†ฐ์บฃ์ด ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ps -ef | grep tomcat

์•„๋ž˜์™€ ๊ฐ™์ด tomcat ์ƒํƒœ๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

(3) Tomcat ๋ฒ„์ „ ํ™•์ธ

ํ†ฐ์บฃ ๋ฒ„์ „์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  sudo /usr/share/tomcat9/bin/version.sh

์•„๋ž˜์™€ ๊ฐ™์ด 9 ๋ฒ„์ „์ด ์ œ๋Œ€๋กœ ์„ค์น˜๋œ ๊ฒƒ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

(4) ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํŽธ์ง‘

sudo nano /etc/default/tomcat9

์ฃผ์„ ์ฒ˜๋ฆฌ๋˜์–ด ์žˆ๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜ JAVA_HOME์„ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ์Šคํฌ๋ฆฐ์ƒท๊ณผ ๊ฐ™์ด "java-8-openjdk" ๋‚ด์šฉ ์ค‘ 8์„ 11๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ” 11 ๋ฒ„์ „์„ ์„ค์น˜ํ–ˆ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

(5) WAR ํŒŒ์ผ ๋ณต์‚ฌํ•˜๊ธฐ

export ํ•œ war ํŒŒ์ผ์„ ๊ฐ€์ƒ ๋จธ์‹  home/์‚ฌ์šฉ์ž ํด๋”์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

MobaXterm์€ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„ํŽธํ•˜๊ฒŒ ํŒŒ์ผ์„ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ„ฐ๋ฏธ๋„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ war ํŒŒ์ผ์ด ์žˆ๋Š” ๊ณณ์œผ๋กœ ์˜ฎ๊ธด ํ›„์— war ํŒŒ์ผ์„ ์ด๋™ํ•ด ์ค๋‹ˆ๋‹ค.

sudo mv ํŒŒ์ผ๋ช….war /var/lib/tomcat9/webapps

(5) Tomcat ์‹œ์ž‘

ํ†ฐ์บฃ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํ†ฐ์บฃ์ด ์‹คํ–‰๋˜๋ฉด war ํŒŒ์ผ๋กœ ๋ฌถ์—ฌ์žˆ๋˜ ํŒจํ‚ค์ง€๊ฐ€ ์ž๋™์œผ๋กœ

ํ’€๋ฆฌ๋ฉด์„œ warํŒŒ์ผ๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์˜ ํด๋”๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

sudo service tomcat9 start

ํ†ฐ์บฃ ์„œ๋ฒ„ ํ™œ์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

sudo service tomcat9 status

์•„๋ž˜์™€ ๊ฐ™์ด active ๋œ ๊ฒƒ์„ ํ™•์ธํ•˜์‹œ๋ฉด ์ •์ƒ์ ์œผ๋กœ ์„œ๋ฒ„๊ฐ€ ๊ตฌ๋™๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ 

1) Tomcat ์ •์ง€

sudo service tomcat9 stop

2) Tomcat ์žฌ์‹œ์ž‘

sudo service tomcat9 restart

(5) ์„œ๋ฒ„ ์—ฐ๊ฒฐ ํ™•์ธ

MobaXterm ์ขŒ์ธก ์ƒ๋‹จ์— Session์„ ํด๋ฆญํ•˜๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด Browser๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

URL์— ๋ณธ์ธIP:8080์„ ์ž…๋ ฅํ•˜๊ณ  ํ•˜๋‹จ์— OK ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ž…๋ ฅ ์˜ˆ์‹œ) http:123.123.123.123:8080

๋ธŒ๋ผ์šฐ์ €์— ์•„๋ž˜์™€ ๊ฐ™์ด It works!๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์„œ๋ฒ„๊ฐ€ ๊ตฌ๋™๋˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

(6) ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€ ์ ‘๊ทผ

์ด๋ฒˆ์—๋Š” index.jsp ํŽ˜์ด์ง€์— ์ ‘๊ทผํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €์— http:๋ณธ์ธIP์ฃผ์†Œ:8080/ํ”„๋กœ์ ํŠธ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ์ถœ๋ ฅ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

7.  MySQL ์„ธํŒ…(๋ฆฌ๋ˆ…์Šค) 

(1) ์—…๋ฐ์ดํŠธ

sudo apt update

(2) MySQL ์„ค์น˜

sudo apt install mysql-server

(3) ๋ฐฉํ™”๋ฒฝ ์˜คํ”ˆ

3306๋ฒˆ ํฌํŠธ์˜ ๋ฐฉํ™”๋ฒฝ์„ ์—ด์–ด์ค๋‹ˆ๋‹ค.

 sudo ufw allow 3306/tcp

(4) ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ์„ค์ •

์ธ์ฝ”๋”ฉ ๋ณ€๊ฒฝ์„ ์œ„ํ•ด ๋ฌธ์„œ๋ฅผ ์—ด์–ด์ค๋‹ˆ๋‹ค.

sudo vi /etc/mysql/my.cnf

๋ฌธ์„œ์— ์•„๋ž˜ ๋‚ด์šฉ์„ ๋ณต์‚ฌ + ๋ถ™์—ฌ ๋„ฃ๊ธฐ ํ•ฉ๋‹ˆ๋‹ค.

[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
 
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

(5) root ๊ถŒํ•œ ๋ถ€์—ฌ๋ฐ›๊ธฐ

๊ฐ€์ƒ ๋จธ์‹  ๋กœ๊ทธ์ธ ์‹œ ์ด์šฉํ•˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

sudo -i

(6) MySQL root ๊ถŒํ•œ ์ ‘์†

๊ฐ€์ƒ ๋จธ์‹  ๋กœ๊ทธ์ธ ์‹œ ์ด์šฉํ•˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

mysql -u root -p

(7) DB ์ƒ์„ฑ

create database db01 default character set UTF8;

(8) ์‚ฌ์šฉ์ž ์ƒ์„ฑ

๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” MySQL ์ „์šฉ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

create user '์‚ฌ์šฉ์ž ์ด๋ฆ„'@'%' identified by '๋น„๋ฐ€๋ฒˆํ˜ธ';

(9) ๊ณ„์ • ๊ถŒํ•œ ์„ค์ •

grant all privileges on *.* to '์‚ฌ์šฉ์ž ์ด๋ฆ„'@'%' identified by '๋น„๋ฐ€๋ฒˆํ˜ธ';

๊ถŒํ•œ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

flush privileges;

(10) ํ…Œ์ด๋ธ” ์ƒ์„ฑ

mytable02๋ผ๋Š” ์ด๋ฆ„์˜ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์นผ๋Ÿผ์€ ๋ฌธ์ž์—ด ํƒ€์ž…์˜ id๋กœ๋งŒ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

create table mytable02(id VARCHAR(20)) default character set UTF8;

(11) MySQL ๋‚˜๊ฐ€๊ธฐ

exit

(12) bind address ์ฃผ์„์ฒ˜๋ฆฌ

์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •์ฐฝ์— ์ ‘๊ทผํ•˜์—ฌ bind address๋ฅผ ์ฃผ์„์ฒ˜๋ฆฌ(#)ํ•ฉ๋‹ˆ๋‹ค.

์ €์žฅํ•˜๊ณ  ๋‚˜๊ฐ‘๋‹ˆ๋‹ค.

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

(11) MySQL ์žฌ์‹œ์ž‘

๊ฐ€์ƒ ๋จธ์‹  ๋กœ๊ทธ์ธ ์‹œ ์ด์šฉํ•˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

sudo systemctl restart mysql

8.  MySQL ์„ธํŒ…(์œˆ๋„์šฐ)

์œˆ๋„์šฐ์—์„œ MySQL Workbench๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์—ฐ๊ฒฐ ์„ค์ •์„ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.

ํ•ญ๋ชฉ๋ณ„๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

- Connection name: ์ž์œ ๋กญ๊ฒŒ ์ž‘์„ฑ

- Connection Method: Standard TCP/IP over SSH ์„ ํƒ

- hostname: ip ์ž…๋ ฅ(VM ์ด๋”๋„ท IP์ด ์•„๋‹Œ, ์ผ๋ฐ˜ ์ด๋”๋„ท ํ˜น์€ ๋ฌด์„ ๋žœ IP)

- port: 3306 ์ž…๋ ฅ

- username: ์ƒ์„ฑํ•œ ์‚ฌ์šฉ์ž ์ด๋ฆ„

- show in Valut: ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ

 

์•„๋ž˜์— Test Connection ๋ฒ„ํŠผ ํด๋ฆญ

์ •์ƒ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ์ƒ์„ฑํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค db01 ๋‚ด mytable02 ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•ด ๋ด…๋‹ˆ๋‹ค.

Use db01;
select * from mytable02;

9.  MySQL ์—ฐ๋™ ํ…Œ์ŠคํŠธ

์ด์ œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ „์ฒด์ ์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

(1) Insert Test: ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ์ด๋™

๋จผ์ €, ํšŒ์›๊ฐ€์ž…์„ ํ•˜๊ธฐ ์œ„ํ•ด 'ํšŒ์›๊ฐ€์ž…' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

(2) Insert Test: ํšŒ์›๊ฐ€์ž…์šฉ ID ์ž…๋ ฅ

์•„๋ž˜์™€ ๊ฐ™์ด SignUp.jsp ํŽ˜์ด์ง€๋กœ ์ž˜ ๋„˜์–ด์˜จ ๊ฒƒ์„ ํ™•์ธํ•˜์…จ๋‹ค๋ฉด

์ด์ œ ID์— ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  '๊ฐ€์ž…' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ๋ด…๋‹ˆ๋‹ค.

(3) Insert Test: ID ์ž…๋ ฅ ์™„๋ฃŒ

์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•œ ID๋กœ ๊ฐ€์ž…์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋Š”

๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ ํŽ˜์ด์ง€์ธ SignUpComplete.jsp๋กœ ์ž˜ ๋„˜์–ด๊ฐ”์Šต๋‹ˆ๋‹ค.

(4) Insert Test: ๋ธŒ๋ผ์šฐ์ € ๋‚ด ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ํ™•์ธ

์ด์ œ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ…Œ์ด๋ธ”์— ์ž˜ ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ด…๋‹ˆ๋‹ค.

'ํšŒ์› ๋ชฉ๋ก ํŽ˜์ด์ง€' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ShowList.jsp๋กœ ํŽ˜์ด์ง€๊ฐ€ ์ „ํ™˜๋˜๋ฉฐ ํ‘œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ž˜ ์กฐํšŒ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(4) Insert Test: MySQL Workbench ๋‚ด ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ํ™•์ธ

์œˆ๋„์šฐ MySQL ์›Œํฌ๋ฒค์น˜๋กœ ๋Œ์•„์™€ ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•ด ๋ด…๋‹ˆ๋‹ค.

select * from mytable01;

์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ž˜ ๋„˜์–ด์˜จ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(5) Update Test: '์ˆ˜์ •' ๋ฒ„ํŠผ ํด๋ฆญ

์ด๋ฒˆ์—๋Š” ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ID 'ํ˜ธ๋ž‘์ด' ์šฐ์ธก์— '์ˆ˜์ •' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

(6) Update Test: ๋ณ€๊ฒฝํ•  ID ์ž…๋ ฅ

์•„๋ž˜์™€ ๊ฐ™์ด Update.jsp ํŽ˜์ด์ง€๋กœ ์ „ํ™”๋˜๋ฉฐ id ๊ฐ’์œผ๋กœ 'ํ˜ธ๋ž‘์ด'๊ฐ€ ์ „๋‹ฌ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ€๊ฒฝํ•  ID๋กœ '์‚ฌ์ž'๋ฅผ ์ž…๋ ฅํ•˜๊ณ  '์ˆ˜์ •' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ๋ด…๋‹ˆ๋‹ค.

(7) Update Test: ํ…Œ์ด๋ธ” ์กฐํšŒ ๋ฒ„ํŠผ ํด๋ฆญ

์ด์ œ UpdateComplete.jsp ํŽ˜์ด์ง€๋กœ ์ „ํ™”๋˜๋ฉฐ

๊ธฐ์กด์˜ 'ํ˜ธ๋ž‘์ด' ID๊ฐ€ '์‚ฌ์ž'๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ํ…Œ์ด๋ธ”์—์„œ๋„ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ด…๋‹ˆ๋‹ค.

'ํšŒ์› ๋ชฉ๋ก ํŽ˜์ด์ง€' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

(8) Update Test: ํ…Œ์ด๋ธ” ์—…๋ฐ์ดํŠธ ํ™•์ธ

ShowList.jsp ํŽ˜์ด์ง€๋กœ ์ „ํ™˜๋˜๋ฉฐ ID ๊ฐ’์ด ํ…Œ์ด๋ธ”์—์„œ๋„ ์ •์ƒ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(9) Delete Test: '์‚ญ์ œ' ๋ฒ„ํŠผ ํด๋ฆญ

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐ์ดํ„ฐ ์‚ญ์ œ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด ๋ด…๋‹ˆ๋‹ค.

'์‚ฌ์ž' ID ์šฐ์ธก์— '์‚ญ์ œ' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ๋ด…๋‹ˆ๋‹ค.

(10) Delete Test: ํ…Œ์ด๋ธ” ์กฐํšŒ ๋ฒ„ํŠผ ํด๋ฆญ

์•„๋ž˜์™€ ๊ฐ™์ด Delete.jsp ํŽ˜์ด์ง€๋กœ ์ „ํ™”๋˜๋ฉฐ

id ๊ฐ’์œผ๋กœ '์‚ฌ์ž'๊ฐ€ ์ž˜ ์ „๋‹ฌ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ”์—์„œ๋„ ๋ฐ์ดํ„ฐ ์‚ญ์ œ๊ฐ€ ๋ฐ˜์˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ด…๋‹ˆ๋‹ค.

'ํšŒ์› ๋ชฉ๋ก ํŽ˜์ด์ง€' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

(11) Delete Test: ๋ฐ์ดํ„ฐ ์‚ญ์ œ ํ™•์ธ

์•„๋ž˜์™€ ๊ฐ™์ด ShowList.jsp ํŽ˜์ด์ง€๋กœ ์ „ํ™”๋˜๋ฉฐ

ํ…Œ์ด๋ธ”์— ์‚ญ์ œ๋ฅผ ์š”์ฒญํ•œ '์‚ฌ์ž' ID ๊ฐ’์ด ์ •์ƒ์ ์œผ๋กœ ์‚ญ์ œ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MySQL Workbench์—์„œ๋„ ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์‚ญ์ œ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


ํฌ์ŠคํŒ… ๋‚ด์šฉ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์•„๋ž˜์— ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์„ธ์š”!

๊ทธ๋Ÿผ ์˜ค๋Š˜๋„ ์ฆ๊ฒ๊ณ  ๊ฑด๊ฐ•ํ•œ ํ•˜๋ฃจ ๋ณด๋‚ด์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ณ ๋ง™์Šต๋‹ˆ๋‹ค :)

728x90
๋ฐ˜์‘ํ˜•
Comments