์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 31 |
- ๋ฐ์ดํฐ๋ถ์
- github
- nlp
- ์ธ๊ณต์ง๋ฅ
- AWS
- react
- AI
- ์์ฐ์ด์ฒ๋ฆฌ
- ํ์ด์ฌ
- ์๊ณ ๋ฆฌ์ฆ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ํ ์คํธ๋ง์ด๋
- Git
- ๊นํ๋ธ
- ๋น ๋ฐ์ดํฐ
- ๋ฐ์ดํฐ ๋ถ์
- erp
- ๋ฅ๋ฌ๋
- DFS
- ์ฝ๋ฉํ ์คํธ
- ํ๋ธ๋ก
- abap
- ๋ฐฑ์ค
- ํ ์คํธ๋ถ์
- ์ฝํ
- tableau
- ๋ฆฌ์กํธ
- ์๋ง์กด์น์๋น์ค
- sap
- ํ๋ธ๋ฃจ
- Today
- Total
DATA101
[Java] MVC ํจํด์ ํ์ฉํ MySQL ์๋ฒ ์ฐ๋(Tomcat ํ์ฉ) ๋ณธ๋ฌธ
[Java] MVC ํจํด์ ํ์ฉํ MySQL ์๋ฒ ์ฐ๋(Tomcat ํ์ฉ)
DATA101 2021. 12. 9. 09:03๐ก ๋ชฉํ
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
1. Java ์ฝ๋ฉ
(1) MySQL Connector ์ค์น
MySQL ์ปค๋ฅํฐ๋ฅผ ์ค์นํด ์ฃผ์ธ์.
ํ์ผ์ ์๋ฐ ํ๋ก์ ํธ ๋ด src/main/webapp/WEB-INF/lib ํด๋ ์์ผ๋ก ์ฎ๊ฒจ์ค๋๋ค.
https://dev.mysql.com/downloads/connector/j/
(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์์๋ ํ ์ด๋ธ์ ์กฐํํ๋ฉด ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์ญ์ ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
ํฌ์คํ ๋ด์ฉ์ ์ค๋ฅ๊ฐ ์๋ค๋ฉด ์๋์ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์!
๊ทธ๋ผ ์ค๋๋ ์ฆ๊ฒ๊ณ ๊ฑด๊ฐํ ํ๋ฃจ ๋ณด๋ด์๊ธธ ๋ฐ๋๋๋ค.
๊ณ ๋ง์ต๋๋ค :)
'SW ๊ฐ๋ฐ > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Entity ๊ฐ๋ ๋ฐ ๋งตํ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์! (0) | 2021.12.28 |
---|---|
JPA์ ๊ฐ๋ ๊ณผ ์ฌ์ฉ ์ด์ ์ ๋ํด ์์๋ณด์! (0) | 2021.12.27 |
[Java] Servlet ๊ธฐ๋ฐ MySQL ์๋ฒ ์ฐ๋ํ๊ธฐ!(Tomcat ํ์ฉ) (0) | 2021.12.07 |
์ดํด๋ฆฝ์ค ์ฝ์์ฐฝ ํ๊ธ ๊นจ์ง ํด๊ฒฐ๋ฐฉ๋ฒ! (6) | 2021.12.06 |
[Java] JavaFX ์ค์น ๋ฐฉ๋ฒ, ํ๊ฒฝ ์ค์ , ์ฌ์ฉ ๋ฐฉ๋ฒ (8) | 2021.11.24 |