๐์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ณธ ์ํคํ ์ฒ
1. Client(ํด๋ผ์ด์ธํธ)
Web Browser(์น ๋ธ๋ผ์ฐ์ )
์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๊ฑฐ๋ ์์ฒญ(Request)๋ฅผ ๋ณด๋ผ ๋ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก, ํด๋ผ์ด์ธํธ๋ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ณ , ์๋ฒ๋ก๋ถํฐ ์๋ต(Repsonse)๋ฅผ ๋ฐ๋๋ค.
2. Server(์๋ฒ)
์๋ฒ๋ Web Server์ Web Application Server๋ก ๋๋๋ฉฐ, ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ์ญํ ์ ํ๋ค.
(1) Web Server
ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ ์๋ต์ ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค.
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ค, WAS๋ก ์ ๋ฌํ๋ค.
์ฃผ๋ก ์ ์ ๋ฆฌ์์ค(HTML, CSS, JS ํ์ผ)์ ์ฒ๋ฆฌํ๊ณ , ๋์ ์์ฒญ์ WAS๋ก ๋๊ธด๋ค.
(2) Web Application Server
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ํ ์ค์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๊ณณ์ด๋ค.
- Presentation(ํ๋ ์ ํ ์ด์ ): ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ ํด๋ผ์ด์ธํธ๋ก ๋ฐํํ๋ค.
- Business Login(๋น์ฆ๋์ค ๋ก์ง): ์์ฒญ์ ๋ฐ๋ผ ์ํํด์ผ ํ ์์ ์ ์ ์ํ๊ณ ์คํํ๋ค.
- Persistence Login(๋ฐ์ดํฐ ์์์ฑ ๋ก์ง): ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํต์ (JDBC)์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์กฐํํ๋ค.
(3) Database
RDBMS (๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค)
์ ํ๋ฆฌ์ผ์ด์
์๋ฒ์ Persistence Logic์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ๋ถ๋ฌ์ต๋๋ค.
- JDBC(Java Database Connectivity) API๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ์ฐ๊ฒฐ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ฐ์ดํฐ์ ์๊ตฌ ์ ์ฅ ๋ฐ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํฉ๋๋ค.
๐Servlet
Java Servlet์ ์๋ฐ๋ฅผ ์ฌ์ฉํ์ฌ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ์๋ฒ์ธก ํ๋ก๊ทธ๋จ ํน์ ๊ทธ ์ฌ์์ ๋งํ๋ฉฐ, ํํ "์๋ธ๋ฆฟ"์ด๋ผ๊ณ ๋ถ๋ฆฐ๋ค. ์๋ฐ ์๋ธ๋ฆฟ์ ์น ์๋ฒ์ ์ฑ๋ฅ์ ํฅ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์๋ฐ ํด๋์ค์ ์ผ์ข ์ผ๋ก ์๋ธ๋ฆฟ์ JSP์ ๋น์ทํ ์ ์ด ์์ง๋ง, JSP๊ฐ HTML ๋ฌธ์ ์์ Java ์ฝ๋๋ฅผ ํฌํจํ๊ณ ์๋ ๋ฐ๋ฉด, ์๋ธ๋ฆฟ์ ์๋ฐ ์ฝ๋ ์์ HTML์ ํฌํจํ๊ณ ์๋ค๋ ์ฐจ์ด์ ์ด ์๋ค.
Servlet Life-Sycle
Servlet class๋ javaSE์์์ class์ ๋ค๋ฅด๊ฒ main method๊ฐ ์๋ค. ์ฆ, ๊ฐ์ฒด์ ์์ฑ๋ถํฐ ์ฌ์ฉ(method call)์ ์ฃผ์ฒด๊ฐ ์ฌ์ฉ์๊ฐ ์๋ Servlet Container์ ์๋ค. Client๊ฐ ์์ฒญํ๊ฒ ๋๋ฉด Servlet Container๋ Servlet ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , ์ด๊ธฐํํ๋ฉฐ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํ๊ฒ ๋๋ค. ๋ํ Servlet ๊ฐ์ฒด๊ฐ ํ์ ์๊ฒ ๋๋ฉด ์ ๊ฑฐํ๋ ์ผ๊น์ง Container๊ฐ ๋ด๋นํ๊ฒ ๋๋ค.
- Init() : ์๋ธ๋ฆฟ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋ ๋ ํ๋ฒ๋ง ํธ์ถ (์ฝ๋ ์์ ์ ๋ค์ ํธ์ถ) ๐ด
- doGet() : GET๋ฐฉ์์ผ๋ก data์ ์ก ์ ํธ์ถ ๐ก
- doPost() : POST๋ฐฉ์์ผ๋ก data์ ์ก ์ ํธ์ถ ๐ก
- service() : ๋ชจ๋ ์์ฒญ์ service()๋ฅผ ํตํด doXXX()๋ฉ์๋๋ก ์ด๋ ๐ก
- destroy() : ์๋ธ๋ฆฟ์ด ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋๋ฉด ํธ์ถ๐ด
๐ด : ์ต์ด ์์ฒญ ์ ํ๋ฒ๋ง ์คํ / ๐ก : ์์ฒญ์๋ง๋ค ๋ฐ๋ณต ์คํ
*javaSE๋ Java ํ๋ซํผ์ ๊ธฐ๋ณธ ๋ฒ์ ์ผ๋ก, ์ผ๋ฐ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํ์ํ ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ค. JavaSE๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ Java ํ๋ซํผ์ผ๋ก, ๋ชจ๋ Java ๊ฐ๋ฐ์ ๊ธฐ๋ฐ์ด ๋๋ค. ์ด ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ , ์ฝ์ ์ ํ๋ฆฌ์ผ์ด์ , ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ์ ๊ฐ๋ฐํ ์ ์๋ค.
SingleParamServlet.java
package com.ssafy.basic;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
* ์๋
ํ์ธ์ ๋๊ผฌ๋!!!
* ์์ด๋์ ๊ธ์์์ ์์ธ : ํ๋, ๋์ : ์ค๋ ์ง, ๊ตฌ๋ฏธ : ํํฌ, ๊ด์ฃผ : ์ด๋ก, ๋ถ์ธ๊ฒฝ : ๋ณด๋ผ
*/
@WebServlet("/singleparam.ssafy")
public class SingleParamServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet call!!!!");
// 1. data get
String name = request.getParameter("username");
String id = request.getParameter("userid");
int area = Integer.parseInt(request.getParameter("area"));
// 2. logic >> ์ธ์ฌ์ ๊ธ์์์ ์์ธ : ํ๋, ๋์ : ์ค๋ ์ง, ๊ตฌ๋ฏธ : ํํฌ, ๊ด์ฃผ : ์ด๋ก, ๋ถ์ธ๊ฒฝ : ๋ณด๋ผ
String color[] = {"blue", "orange", "pink", "green", "purple"};
// 3. response page
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println(" <body>");
out.println(" <h2 style=\"color:" + color[area] + "\">์๋
ํ์ธ์. " + name + "(" + id + ")๋!!!</h2>");
out.println(" </body>");
out.println("</html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost call!!!!");
// 1. data get
request.setCharacterEncoding("utf-8"); //doGet๋ถ๋ถ์ด๋ ์ ์ผํ๊ฒ ๋ค๋ฅธ ๊ฒ ๋ด๋ถ์ ์ผ๋กio๊ฐ ์ผ์ด๋๊ธฐ๋๋ฌธ์ ์ธ์ฝ๋ฉ์ค์ , get์ url๋ก ๋์ด์ค๊ธฐ ๋๋ฌธ์ ใฑใ
String name = request.getParameter("username"); //name์ผ๋ก ๊ฐ์ ธ์จ๋ค
System.out.println(">>>>>>>>>>>>" + name);
String id = request.getParameter("userid");
int area = Integer.parseInt(request.getParameter("area"));
// 2. logic >> ์ธ์ฌ์ ๊ธ์์์ ์์ธ : ํ๋, ๋์ : ์ค๋ ์ง, ๊ตฌ๋ฏธ : ํํฌ, ๊ด์ฃผ : ์ด๋ก, ๋ถ์ธ๊ฒฝ : ๋ณด๋ผ
String color[] = {"blue", "orange", "pink", "green", "purple"};
// 3. response page
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println(" <body>");
out.println(" <h2 style=\"color:" + color[area] + "\">์๋
ํ์ธ์. " + name + "(" + id + ")๋!!!</h2>");
out.println(" </body>");
out.println("</html>");
}
}
single.html
<!DOCTYPE html>
<html lang="ko">
<head>
<title>SSAFY-ํ๋ผ๋ฏธํฐ์ ๋ฌ</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="col-lg-5">
<h5 class="text-center">Servlet์ ์ด์ฉํ ํ๋ผ๋ฏธํฐ ์ ๋ฌ(Single)</h5>
<form name="paramform" method="post" action="/bw/singleparam.ssafy">
<div class="form-group">
<label for="userid">์์ด๋:</label> <input type="text"
class="form-control" placeholder="์์ด๋ ์
๋ ฅ" name="userid">
</div>
<div class="form-group">
<label for="username">์ด๋ฆ:</label> <input type="text"
class="form-control" placeholder="์ด๋ฆ ์
๋ ฅ" name="username">
</div>
<div class="form-group">
<label for="area">์ง์ญ:</label> <select name="area"
class="custom-select">
<option value="0">์์ธ</option>
<option value="1" selected>๋์ </option>
<option value="2">๊ตฌ๋ฏธ</option>
<option value="3">๊ด์ฃผ</option>
<option value="4">๋ถ์ธ๊ฒฝ</option>
</select>
</div>
<button type="submit" class="btn btn-primary">์ ์ก</button>
</form>
</div>
</div>
</body>
</html>
https://java-is-happy-things.tistory.com/23
'๐ป์น(Web)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Spring (0) | 2024.12.02 |
---|---|
JSP(Jakarta Server Pages), JSTL(JSP Standard Tag Library) (0) | 2024.12.01 |
[๊ณตํตํ๋ก์ ํธ]5์ฃผ์ฐจ: React Openvidu ๊ตฌํ (0) | 2024.08.11 |
[React]์ด๊ธฐ์ธํ (0) | 2024.07.18 |
MVC, MVVM, Flux ํจํด (1) | 2024.07.15 |