6_oHji
6_oHji
ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค☺
GitHub   Gmail
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (62)
    • ๐Ÿ’ก DEEP DIVE (17)
      • PATTERN (17)
    • ๐Ÿ“ ๋„์ ๋„์  (4)
    • ๐ŸŒˆ EXPERIENCE (3)
    • ๐Ÿ’ป PROJECT (3)
    • ๐Ÿ“’ STUDY (34)
      • ALGORITHM (1)
      • JAVA (5)
      • FRONT-END (7)
      • BACK-END (10)
      • SPRING (7)
      • NETWORK (3)
      • CLOUD (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ์Šคํ† ๋ฆฌ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ
hELLO ยท Designed By ์ •์ƒ์šฐ.
6_oHji
6_oHji
๐Ÿ“’ STUDY/BACK-END

์„œ๋ธ”๋ฆฟ(Servlet)๊ณผ JSP(Java Server Pages)์˜ ๊ฐœ๋… ๋ฐ ์ฐจ์ด

2023. 4. 5. 12:47

Servlet๊ณผ JSP๋Š” Java EE์˜ ์—ฌ๋Ÿฌ ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

 

Java EE(Enterprise Edition)๋ž€?
๊ธฐ์—…์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์ ํ•ฉํ•œ ์ž๋ฐ” ๊ฐœ๋ฐœ ๋ฒ„์ „์„ ์˜๋ฏธํ•˜๋ฉฐ, Java EE์˜ ์ŠคํŽ™์—๋Š” Servlet, JSP, EJB(Enterprise Java Beans) ๋“ฑ์ด ์žˆ๋‹ค. 
์ฐธ๊ณ  : https://doozi316.github.io/java/2020/07/01/WEB20/

 

 

1. Servlet

์„œ๋ธ”๋ฆฟ์€ ์„œ๋ฒ„์—์„œ ์›นํŽ˜์ด์ง€ ๋“ฑ์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ์ฆ‰, ์„œ๋ฒ„์—์„œ ๋™์ ์œผ๋กœ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” API๋“ค์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ Java ์ฝ”๋“œ ์•ˆ์— HTML ํƒœ๊ทธ๊ฐ€ ์‚ฝ์ž…๋˜๋ฉฐ, ์ž๋ฐ” ์–ธ์–ด๋กœ ๋˜์–ด์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

์˜ˆ์‹œ)

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public ThreeParams extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        response.setContentType("text/html");
        printWriter out = response.getWriter();
        
        String title = "Reading Three Request Parameters";
        String docType = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
        
        out.println(docType + 
            "<HTML>\n" +
            "<HEAD><TITLE>" + title + "</TITLE></HEAD>\n" +
            "<BODY BGCOLOR=\"#FDF5E6\">\n" +  
            "<H1 ALIGN=\"CENTER\">" + title + "</H1>\n" + 
            "<UL>\n" + 
            "<LI><B>param1</B>: " + request.getParameter("param1") + "\n" +
            "<LI><B>param2</B>: " + request.getParameter("param2") + "\n" +
            "<LI><B>param3</B>: " + request.getParameter("param3") + "\n" +
            "</UL>\n" +
            "</BODY></HTML>");
        )
    }
}

 

์„œ๋ธ”๋ฆฟ์˜ ์‹คํ–‰์€ ํ†ฐ์บฃ๊ณผ ๊ฐ™์ด ์„œ๋ธ”๋ฆฟ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์—์„œ ์ด๋ฃจ์–ด์ง€๋ฉฐ ์ด๋Ÿฌํ•œ ํ™˜๊ฒฝ์„ '์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ(Servlet Container)'๋ผ๊ณ  ํ•œ๋‹ค. ์ผ๋ฐ˜ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ๊ณผ๋Š” ๋‹ฌ๋ฆฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ํ˜ธ์ถœํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋‹Œ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค. ๋˜, ์„œ๋ธ”๋ฆฟ/JSP์˜ ์ฝ”๋“œ ๊ฐœ๋ฐœ์€ ๊ธฐ๋ณธ์ ์ธ ์ž๋ฐ” API์™€ ๋”๋ถˆ์–ด ์„œ๋ธ”๋ฆฟ API๋„ ๊ฐ™์ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„œ๋ธ”๋ฆฟ์„ ๊ด€๋ฆฌํ•˜๋ฉด์„œ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ๋“ค์„ '์„œ๋ธ”๋ฆฟ์˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด'์ด๋ผ๊ณ  ์ผ์ปซ๋Š”๋‹ค.

 

 

2. JSP

JSP๋Š” ์„œ๋ธ”๋ฆฟ์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ณ ์ž ๋งŒ๋“  ์„œ๋ธ”๋ฆฟ ๊ธฐ๋ฐ˜์˜ ์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ˆ ๋กœ, ์„œ๋ธ”๋ฆฟ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์›นํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๊ธฐ์ˆ ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ˆ ์ด๋ž€, ASP๋‚˜ PHP์ฒ˜๋Ÿผ ๋ฏธ๋ฆฌ ์•ฝ์†๋œ ๊ทœ์ •์— ๋”ฐ๋ผ ๊ฐ„๋‹จํ•œ ํ‚ค์›Œ๋“œ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ž…๋ ฅํ•˜๋ฉด ์‹คํ–‰ ์‹œ์ ์— ๊ฐ๊ฐ ๋งคํ•‘๋˜์–ด์žˆ๋Š” ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ ํ›„์— ์‹คํ–‰๋˜๋Š” ํ˜•ํƒœ์ด๋‹ค. JSP๋Š” ์„œ๋ธ”๋ฆฟ๊ณผ ๋ฐ˜๋Œ€๋กœ HTML ์ฝ”๋“œ ์•ˆ์— Java ์ฝ”๋“œ๊ฐ€ ์‚ฝ์ž…๋˜์–ด ์žˆ๋‹ค.

 

์˜ˆ์‹œ)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Reading Three Request Parameters</TITLE>
<LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css">
</HEAD>

<BODY>
<H1>Reading Three Request Parameters</H1>
<UL>
    <LI><B>param1</B>: <%= request.getParameter("param1") %>
    <LI><B>param2</B>: <%= request.getParameter("param2") %>
    <LI><B>param3</B>: <%= request.getParameter("param3") %>
</UL>
</BODY>
</HTML>

 

 

 

3. Servlet๊ณผ JSP์˜ ์ฐจ์ด

์ผ๋ฐ˜์ ์œผ๋กœ '์„œ๋ธ”๋ฆฟ์œผ๋กœ๋Š” ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•œ ์ฒ˜๋ฆฌ, JSP๋กœ๋Š” ํ™”๋ฉด ๊ฐœ๋ฐœ'๋กœ ์—ญํ• ์„ ๋ถ„๋‹ดํ•œ๋‹ค.

Servlet JSP
- Java ์ฝ”๋“œ ์•ˆ์— HTML ์ฝ”๋“œ
- ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ(Controller)์— ์œ ์šฉ
- ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ์ €ํ•˜ : ์ฝ”๋“œ ์ˆ˜์ • ์‹œ ๋‹ค์‹œ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผ(.class ํŒŒ์ผ ์ƒ์„ฑ)๊ณผ ๋ฐฐํฌํ•˜๋Š” ์ž‘์—… ํ•„์š”
- HTML ์ฝ”๋“œ ์•ˆ์— Java ์ฝ”๋“œ
- ํ™”๋ฉด ๊ฐœ๋ฐœ(View)์— ์œ ์šฉ
- ์‰ฌ์šด ๋ฐฐํฌ : ์ฝ”๋“œ ์ˆ˜์ • ์‹œ WAS๊ฐ€ ์ฒ˜๋ฆฌํ•˜์—ฌ ์žฌ๋ฐฐํฌํ•  ํ•„์š” X

 

 

4. ์š”์•ฝ

1. ์„œ๋ธ”๋ฆฟ/JSP ๋ชจ๋‘ Java EE ์ŠคํŽ™์˜ ์ผ๋ถ€์ด๋‹ค.
2. ์„œ๋ธ”๋ฆฟ/JSP๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
3. ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„œ๋ธ”๋ฆฟ/JSP ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
4. JSP๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์„œ๋ธ”๋ฆฟ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์˜ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.
5. JSP๋Š” HTML ๋‚ด์— ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์ด๊ณ , ์„œ๋ธ”๋ฆฟ์€ ์ž๋ฐ” ์ฝ”๋“œ ์•ˆ์— HTML ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

 

 

๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋™์ผ์กฐ๊ฑด (์ƒˆ์ฐฝ์—ด๋ฆผ)
    '๐Ÿ“’ STUDY/BACK-END' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • PRG(POST-Redirect-GET) ํŒจํ„ด
    • HTTP์™€ HTTPS
    • ๋ธŒ๋ผ์šฐ์ €์™€ ์„œ๋ฒ„์˜ ๊ด€๊ณ„ - ์š”์ฒญ๊ณผ ์‘๋‹ต, GET/POST ๋ฐฉ์‹, ์ •์ /๋™์  ๋ฐ์ดํ„ฐ
    • JWT(JSON Web Token)
    6_oHji
    6_oHji
    ๋„์ ๋„์ 

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”