๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[Java] JSP, Directive ๋ณธ๋ฌธ

JSP

 

JSP(Java Server Page)๋Š” Servlet์˜ ํ™•์žฅ๋œ ๊ธฐ์ˆ ๋กœ ๋ธŒ๋ผ์šฐ์ €์— ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ HTML์ฝ”๋“œ์— JAVA ์ฝ”๋“œ๋ฅผ ํ˜ผ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ์ด๋กœ์จ ๋””์ž์ธ๊ณผ ๋กœ์ง ๊ฐœ๋ฐœ์„ ๋ถ„์—…ํ™”์‹œ์ผœ ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ƒ์‚ฐํ•ด ๋‚ผ ์ˆ˜ ์žˆ๊ฒŒํ•œ๋‹ค.

 

JSP ๊ธฐ๋ณธ๋ฌธ๋ฒ• ๋ฐ ์šฉ์–ด

 

  • <%! ์„ ์–ธ๋ถ€ %>  -> ์ „์—ญ๋ณ€์ˆ˜, ํ•จ์ˆ˜
  • <% ์Šคํฌ๋ฆฝ๋ฆฟ %> -> ์ฝ”๋”ฉ, ์ง€์—ญ๋ณ€์ˆ˜
  • <%=์ถœ๋ ฅ๋ถ€ %>  ->๋ฌธ์ž์—ด, ๋ณ€์ˆ˜๊ฐ’, ํ•จ์ˆ˜๋ฆฌํ„ด๊ฐ’ ์ถœ๋ ฅ
  • <%-- JSP์ฃผ์„ --%> 
  • <%@ ์ง€์‹œ์ž >  
  • <%@ page    %> ๋Š” ํ•ด๋‹น jspํŽ˜์ด์ง€์—์„œ ์–ด๋–ค ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑํ•˜๋Š”์ง€, ์–ด๋–ค ์ž๋ฐ” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€, ์„ธ์…˜์— ์ฐธ์—ฌํ•˜๋Š”์ง€, ์ถœ๋ ฅ ๋ฒ„ํผ์˜ ์กด์žฌ์—ฌ๋ถ€๋“ฑ jspํŽ˜์ด์ง€๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.
    • (ex)
    • <%@ page isErrorPage = "true" %> = exception์„ ํ•ธ๋“ค๋งํ•˜๊ธฐ์œ„ํ•ด ๋งŒ๋“  ์—๋ŸฌํŽ˜์ด์ง€์ด๋‹ค ๋ผ๊ณ  ์„ ์–ธ๋ฌธ. ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ์—๋ŸฌํŽ˜์ด์ง€๋ผ๊ณ  ์„ ์–ธํ•˜๊ฒŒ ๋˜๋ฉด์€ exception๊ฐ์ฒด๊ฐ€ ์‚ด๊ณ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ exception.getMessage๋ฅผ ํ˜ธ์ถœํ• ์ˆ˜์žˆ๋‹ค. (500, 404 ์˜ค๋ฅ˜)

 

MIME

Multipurpose Internet Mail Extensions์˜ ์•ฝ์ž๋กœ ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด ํŒŒ์ผ ๋ณ€ํ™˜์„ ์˜๋ฏธํ•œ๋‹ค.ํ˜„์žฌ๋Š” ์›น์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํ˜•ํƒœ์˜ ํŒŒ์ผ์„ ์ „๋‹ฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ด ์šฉ์–ด๊ฐ€ ์ƒ๊ธธ ๋• ์ด๋ฉ”์ผ๊ณผ ํ•จ๊ป˜ ๋™๋ด‰ํ•  ํŒŒ์ผ์„ ํ…์ŠคํŠธ ๋ฌธ์ž๋กœ ์ „ํ™˜ํ•ด์„œ ์ด๋ฉ”์ผ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์–ด Internet Mail Extensions๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค.

 

๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ

๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์€ ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ๊ณผ ์ฒ˜๋ฆฌ๋ฅผ ๋ชฉ์ ์œผ๋กœ 0๊ณผ 1์˜ ์ด์ง„ ํ˜•์‹์œผ๋กœ ์ธ์ฝ”๋”ฉ๋œ ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์ด ํŒŒ์ผ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ธ ๋•Œ๋Š” ๋ฐ์ดํ„ฐ์˜ ์–ด๋– ํ•œ ๋ณ€ํ™˜๋„ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ํ…์ŠคํŠธ ํŒŒ์ผ์€ ์‚ฌ๋žŒ์ด ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

 

 index.jsp

๋‚ด๋ถ€์ ์œผ๋กœ ์ฒ˜์Œ ์„œ๋ฒ„๊ฐ€ ๋Œ๊ฒŒ ๋˜๋ฉฐ ์‹คํ–‰ํ•˜๋Š” ํŒŒ์ผ

JSPํŽ˜์ด์ง€์—์„œ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ํ›„ ์ง€์ •ํ•œ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ if๋ฌธ๊ณผ ํ•จ๊ป˜ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ–ˆ์„ ๋•Œ  response.sendRedirect("main.jsp); ํŠน์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ์—์„  board ์„œ๋ธŒ๋ฆฟ์„ ๋งตํ•‘ํ•˜์—ฌ command์— loginform ๋ฌธ์ž์—ด์„ ๋ณด๋‚ผ ๋•Œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์˜ ์•ก์…˜์ด ์ˆ˜ํ–‰๋˜๋„๋ก ํ•œ๋‹ค. 

 

 

โญ Implicit Object

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋‹จ์ˆœํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋ณ„๋‹ค๋ฅธ ์„ ์–ธ์—†์ด ๋‚ด์žฅ๋œ ๊ฐ์ฒด
  • JSP ์ปจํ…Œ์ด๋„ˆ (catalina) ์ œ๊ณต
  • ๊ฐ์ฒด ์ข…๋ฅ˜
    • request
      • ์‚ฌ์šฉ์ž ์š”์ฒญ์— ๋Œ€ํ•œ ์ •๋ณด ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด
      • javax.servlet.http.HttpServletRequest
    • response
      • ์„œ๋ฒ„์˜ ์‘๋‹ต์— ๋Œ€ํ•œ ์ •๋ณด ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด
      • javax.servlet.http.HttpServletResponse
    • out
      • JSP ํŽ˜์ด์ง€์— ์ถœ๋ ฅํ•  ๋‚ด์šฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ๊ฐ์ฒด
      • javax.servlet.jsp.jsp.jspWriter
      • out.print(), out.println()
    • exception
      • JSP ํŽ˜์ด์ง€์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ฐ์ฒด
      • java.lang.Throwable
    • application
      • ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ Context์˜ ์ •๋ณด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด
      • java.servlet.ServletContext
    • session
      • ํ•˜๋‚˜์˜ ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์„ธ์…˜ ์ •๋ณด ์ €์žฅํ•˜๋Š” ๊ฐ์ฒด
      • javax.servlet.http.HttpSession
    • pageContext
      • JSP ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด
      • javax.servlet.jsp.PageContext
    • page
      • JSP ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•œ ์ž๋ฐ” ํด๋ž˜์Šค ๊ฐ์ฒด
      • java.lang.Object
      • this๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ ๊ฐ€๋Šฅ
    • config
      • JSP ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์„ค์ • ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด
      • javax.servlet.ServletConfig
  • ๊ฐ์ฒด ์˜์—ญ
    • page ์˜์—ญ
      • ํ•œ ๋ฒˆ์˜ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ์˜ค๋ฉด, ํ•˜๋‚˜์˜ JSP ํŽ˜์ด์ง€๊ฐ€ ์‘๋‹ต
      • page ์˜์—ญ์€ ์ด ๋•Œ ํ•˜๋‚˜์˜ JSP ํŽ˜์ด์ง€ ๋‚ด์—์„œ๋งŒ ๊ฐ์ฒด๋ฅผ ๊ณต์œ ํ•˜๋Š” ์˜์—ญ ์˜๋ฏธ ( JSP only )
        • JSP ํŒŒ์ผ์—๋Š” pageContext๊ฐ€ ๋‚ด์žฅ๋จ
        • ์ด ๊ฐ์ฒด๋Š” page ์˜์—ญ์—์„œ๋งŒ ์œ ํšจํ•จ
        • JSP ํŒŒ์ผ์— <% %> ์•ˆ์— ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด ๋ณ€์ˆ˜๋Š” ํ•ด๋‹น JSP ํŒŒ์ผ ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•œ๋ฐ, page ์Šค์ฝ”ํ”„์— ์ •์˜๋œ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ
    • request ์˜์—ญ
      • ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์‘๋‹ตํ•˜๊ธฐ๊นŒ์ง€ ๊ฐ์ฒด๊ฐ€ ์œ ํšจํ•œ ์˜์—ญ
      • Servlet์—์„œ forward ๋˜๋Š” include๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด request ์š”์ฒญ ๊ฐ์ฒด๊ฐ€ ๊ณต์œ ๋˜์–ด์„œ request ์˜์—ญ
      • request ๊ฐ์ฒด ์‚ฌ์šฉ ์˜ˆ์‹œ
        • Servlet์—์„œ๋Š” reqeust.setAttribute("์ด๋ฆ„", ๊ฐ์ฒด); ๋กœ ์ „๋‹ฌํ•˜๊ณ 
        • JSP์—์„œ๋Š” Obejct ob j = request.getAttribute("์ด๋ฆ„"); ์œผ๋กœ ๋ฐ›์Œ
    • session ์˜์—ญ
      • ํ•˜๋‚˜์˜ ๋ธŒ๋ผ์šฐ์ € ๋‹น 1๊ฐœ์˜ session ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋”ค
      • ์ฆ‰, ๊ฐ™์€ ๋ธŒ๋ผ์šฐ์ € ๋‚ด์—์„œ ์š”์ฒญ๋˜๋Š” ํŽ˜์ด์ง€๋“ค์€ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๊ณต์œ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋ฅผ ์„ธ์…˜ ์˜์—ญ์ด๋ผ๊ณ  ํ•จ
      • ์„ธ์…˜์ด ์ข…๋ฃŒ๋˜๋ฉด ๊ฐ์ฒด ๋ฐ˜ํ™˜
      • requset.getSession() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์„ธ์…˜ ์˜์—ญ์˜ ๊ฐ์ฒด๋ฅผ ์–ป์Œ
    • application ์˜์—ญ
      • ํ•˜๋‚˜์˜ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹น 1๊ฐœ์˜ application ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ
      • ์ฆ‰, ๊ฐ™์€ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ์š”์ฒญ๋˜๋Š” ํŽ˜์ด์ง€๋“ค์€ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๊ณต์œ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋ฅผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜์—ญ์ด๋ผ๊ณ  ํ•จ
      • ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฃŒ๋˜๋ฉด ๊ฐ์ฒด๋Š” ๋ฐ˜ํ™˜

login.jsp & session.jsp

 

response.jsp & error.jsp

 

login.jsp & session.jsp

โญ Directive

  • ์ง€์‹œ์ž
  • JSP ํŽ˜์ด์ง€๊ฐ€ ์‹คํ–‰๋  ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ JSP ์ปจํ…Œ์ด๋„ˆ์—๊ฒŒ ์•Œ๋ฆฌ๋Š” ์—ญํ• 
  • ์ข…๋ฅ˜
    • page
      • <%@page... %>
      • ํŽ˜์ด์ง€ ์ •๋ณด๋ฅผ ์•Œ๋ ค์คŒ
      • info
        • ํ˜„์žฌ JSP ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์„ค๋ช…
      • language
        • ํ˜„์žฌ JSP ํŽ˜์ด์ง€๊ฐ€ ์‚ฌ์šฉํ•  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์„ค์ •
        • ๊ธฐ๋ณธ๊ฐ’ - java
      • contentType
        • ํ˜„์žฌ JSP ํŽ˜์ด์ง€๊ฐ€ ์ƒ์„ฑํ•  ๋ฌธ์„œ์˜ ์ฝ˜ํ…์ธ  ์œ ํ˜• ์„ค์ •
        • MIME ํ˜•์‹์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์•Œ๋ฆผ
        • MIME - ์ธํ„ฐ๋„ท ํ‘œ์ค€์˜ ํ•˜๋‚˜๋กœ ์•„์Šคํ‚คํ˜•์‹ ์™ธ์˜ ํ…์ŠคํŠธ ๋ฐ ํ™”์ƒ์ด๋‚˜ ์Œ์„ฑ ๋“ฑ์˜ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์•„์Šคํ‚ค ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•  ํ•„์š”์—†์ด ์ธํ„ฐ๋„ท ์ „์ž์šฐํŽธ์œผ๋กœ ์†ก์‹ ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„์ด ์ „์ž ์šฐํŽธ ์ „์†ก ํ”„๋กœํ† ์ฝœ (SMTP)์˜ ํ™•์žฅ ๊ทœ๊ฒฉ
        • ๊ธฐ๋ณธ๊ฐ’ - text/html
        • text/plain, text/xml ...
        • ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ํด๋ผ์ด์–ธํŠธ (๋ธŒ๋ผ์šฐ์ €)์—๊ฒŒ ์ „๋‹ฌํ•  ๋•Œ ์–ด๋–ค ํ˜•์‹์œผ๋กœ ๋ณด์—ฌ์ค„ ๊ฒƒ์ธ์ง€ ํ˜•์‹ ์ง€์ •
        • meta charset (contentType charset > meta charset)
      • pageEncoding
        • ํ˜„์žฌ JSP ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ์ €์žฅ
        • ๊ธฐ๋ณธ๊ฐ’ - ISO-8859-1
      • import
        • ํ˜„์žฌ JSP ํŽ˜์ด์ง€๊ฐ€ ์‚ฌ์šฉํ•  ์ž๋ฐ” ํด๋ž˜์Šค / ํŒจํ‚ค์ง€ ์ด๋ฆ„
      • session
        • ํ˜„์žฌ JSP ํŽ˜์ด์ง€์˜ ์„ธ์…˜ ์‚ฌ์šฉ ์—ฌ๋ถ€ ์„ค์ •
        • ๊ธฐ๋ณธ๊ฐ’ - true
      • buffer
        • ํ˜„์žฌ JSP ํŽ˜์ด์ง€์˜ ์ถœ๋ ฅ ๋ฒ„ํผ ํฌ๊ธฐ ์„ค์ •
        • ๊ธฐ๋ณธ๊ฐ’- 8KB
      • autoFlush
        • ์ถœ๋ ฅ ๋ฒ„ํผ์˜ ๋™์ž‘ ์ œ์–ด ์„ค์ •
        • ๊ธฐ๋ณธ๊ฐ’ - true
      • isThreadSafe
        • ํ˜„์žฌ JSP ํŽ˜์ด์ง€์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ—ˆ์šฉ ์—ฌ๋ถ€ ์„ค์ •
        • ๊ธฐ๋ณธ๊ฐ’ - true
      • errorPage
        • ํ˜„์žฌ JSP ํŽ˜์ด์ง€์—์„œ ์˜ค๋ฅ˜ ๋ฐœ์ƒ์‹œ error handling ํŽ˜์ด์ง€ ์ง€์ •
      • isErrorPage
        • ํ˜„์žฌ JSP ํŽ˜์ด์ง€๊ฐ€ error handling์„ ์œ„ํ•œ ํŽ˜์ด์ง€์ธ์ง€ ์—ฌ๋ถ€ ์ง€์ •
        • ๊ธฐ๋ณธ๊ฐ’ - false
    • include
      • <%@include file="…"%>
      • ์—ฌ๋Ÿฌ jsp ํŽ˜์ด์ง€์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ํฌํ•จ ๋‚ด์šฉ์ด ์žˆ์œผ๋ฉด ๋ณ„๋„ ํŒŒ์ผ ์ €์žฅํ•˜๊ณ  ํฌํ•จ
      • ์†Œ์Šค์ฝ”๋“œ ์ž์ฒด๊ฐ€ ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€ํ•จ
      • <%@include file="header.jsp"%>
      • <%@include file="footer.jsp"%>
      • ๐Ÿ†š action tag๋ฅผ ํ†ตํ•ด ๋ณ„๋„ ํŒŒ์ผ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ์Œ