mc.thd 2023. 12. 28. 22:17

JSP(Java Server Page)

  • HTML๋‚ด์— ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ ์›น ์„œ๋ฒ„์—์„œ ๋™์ ์œผ๋กœ ์›น ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋Œ๋ ค์ฃผ๋Š” ์–ธ์–ด
  • ์‹คํ–‰ ์‹œ servlet์œผ๋กœ ๋ณ€ํ™˜๋œ ํ›„ ์‹คํ–‰ ๋จ (์ตœ์ดˆ ํ•œ ๋ฒˆ + JSP์ˆ˜์ • ์‹œ)
    • ๋ณ€ํ™˜์€ WAS๊ฐ€ ํ•ด์ค€๋‹ค.

JSP๊ฐ€ ๋น ๋ฅผ๊นŒ Servlet์ด ๋น ๋ฅผ๊นŒ?
JSP๋Š” Servlet์œผ๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ณผ์ •์ด ์žˆ๊ธด ํ•˜์ง€๋งŒ, ์ตœ์ดˆ ํ•œ ๋ฒˆ๊ณผ ์ˆ˜์ • ์‹œ์—๋งŒ ๋ณ€ํ™˜๋œ๋‹ค.

JSP์—์„œ GET๊ณผ POST๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐฉ๋ฒ•
request.getMethod()

 

JSP ๋ฌธ๋ฒ•

  • ์„ ์–ธ๋ฌธ

๋ฉค๋ฒ„๋ณ€์ˆ˜ ์„ ์–ธ์ด๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์„ ์–ธํ•˜๋Š” ์˜์—ญ

<%! ์—ฌ๊ธฐ์— ๋ณ€์ˆ˜(์ „์—ญ) ๋„๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์„ ์–ธ  %>
<%! 
String name;

public void init(){
	name = "์†ก๋ฏผ์ฒ ";
}
%>

์„ ์–ธ๋ฌธ ์•ˆ์— System.out.println("A"); ๊ณผ ๊ฐ™์€ ๋ช…๋ น์„ ๋„ฃ์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

  • ์ฒ˜๋ฆฌ๋ฌธ
<% req, res์™€ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋ฅผ ์—ฌ๊ธฐ์— ์ž‘์„ฑ %>

- ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์‹œ ๋งค๋ฒˆ ํ˜ธ์ถœ๋˜๋Š” ์˜์—ญ.

- Servlet์œผ๋กœ ๋ณ€ํ™˜ ์‹œ service() ๋ฉ”์†Œ๋“œ์— ํ•ด๋‹นํ•˜๋Š” ์˜์—ญ.

- .java๋กœ ๋ณ€๊ฒฝ๋  ๋•Œ ๊ทธ๋Œ€๋กœ ๋ณต๋ถ™๋จ.

- ์ฒ˜๋ฆฌ๋ฌธ ์•ˆ์— ๋ฉ”์†Œ๋“œ ์„ ์–ธ์„ ๋„ฃ์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค → .java์˜ ํ•จ์ˆ˜ ์•ˆ์— ํ•จ์ˆ˜๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋‹ˆ๊นŒ (์ž๋ฐ”๋Š” ๋ฉ”์†Œ๋“œ ์•ˆ์— ๋ฉ”์†Œ๋“œ๋ฅผ ๋„ฃ์ง€ ๋ชปํ•จ)

- ์—ฌ๊ธฐ ์•ˆ์—์„  System.out.println("A"); ๊ณผ ๊ฐ™์€ ๋ช…๋ น์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

- ; ์ฐ์–ด์ค˜์•ผ ํ•œ๋‹ค.

 

  • ์ถœ๋ ฅ๋ฌธ
<%= ๋ฌธ์ž์—ด %>

- ;์„ ์ฐ์œผ๋ฉด ์•ˆ๋จ! (<%= ๋ฌธ์ž์—ด; %> )

<%= ๋ฌธ์ž์—ด %> == <%out.print(๋ฌธ์ž์—ด);%> : ๊ฐ™์€ ํ‘œํ˜„

 

  • JSP ์ฃผ์„
<%-- ์ฃผ์„ ํ•  code --%>
html์ฃผ์„ ๊ณผ jsp์ฃผ์„ ์˜ ์ฐจ์ด์  
html์ฃผ์„์€ ํด๋ผ์ด์–ธํŠธ์— ํฌํ•จ๋˜์–ด ๋ณด๋‚ด์ง€๊ณ ,
jsp ์ฃผ์„ ์€ ํด๋ผ์ด์–ธํŠธ์— ํฌํ•จ๋˜์ง€ ์•Š๊ณ  ๋ณด๋‚ธ๋‹ค.
๋”ฐ๋ผ์„œ html ์ฃผ์„ ์•ˆ์— jsp์ฝ”๋“œ๋ฅผ ๋„ฃ๊ฒŒ ๋˜๋ฉด ์‹คํ–‰์ด ๋˜์–ด๋ฒ„๋ฆฐ๋‹ค..( html ์ฃผ์„์€ ์ž๋ฐ”์ฝ”๋“œ์˜ ์‹คํ–‰๊ถŒํ•œ์„ ๋ง‰์„ ์ˆ˜ ์—†๋‹ค → jsp์ฃผ์„ ์„ ํ†ตํ•ด ์ฃผ์„์ฒ˜๋ฆฌ ํ•ด์•ผํ•œ๋‹ค)

 

JSP ์ง€์‹œ์ž (Directive)

  • page Directive

์ปจํ…Œ์ด๋„ˆ์—๊ฒŒ ํ˜„์žฌ jsp ํŽ˜์ด์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณต.

<%@ page attr1="val1" attr2="val2" ... %>

ex) import : ํ˜„์žฌ jspํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•  javaํŒจํ‚ค์ง€๋‚˜ ํด๋ž˜์Šค๋ฅผ ์ง€์ •

<%@ import="java.util.list, java.io.*"%> ํ˜น์€

<%@ import="java.util.list" import="java.io.*" %>

์†์„ฑ๊ณผ ์†์„ฑ ์‚ฌ์ด์—๋Š” ๋ฐ˜๋“œ์‹œ ๊ณต๋ฐฑ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค!

  • include Directive

ํŠน์ • jsp file์„ ํŽ˜์ด์ง€์— ํฌํ•จ.

์—ฌ๋Ÿฌ jsp์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„์„ jsp file๋กœ ๋งŒ๋“  ํ›„ ๋ฐ˜๋ณต ์˜์—ญ์— include ์‹œ์ผœ ๋ฐ˜๋ณต ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

<%@ include file="/common/confirm.jsp" %>
  • taglib Directive

JSTL ๋˜๋Š” ์‚ฌ์šฉ์ž์— ์˜ํ•ด์„œ ๋งŒ๋“  ์ปค์Šคํ…€ ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ

JSP ํŽ˜์ด์ง€ ๋‚ด์— ๋ถˆํ•„์š”ํ•œ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

๊ธฐ๋ณธ๊ฐ์ฒด

๋‚ด์žฅ๊ฐ์ฒด๋ฅผ JSP ์„ ์–ธ๋ฌธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ? ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์™œ ๊ทธ๋Ÿด๊นŒ?
> ๋‚ด์žฅ๊ฐ์ฒด๋Š” Service() ์•ˆ์— ์„ ์–ธ๋˜๋Š”๋ฐ, JSP ์„ ์–ธ๋ฌธ์€ Service() ๋ฐ–์—์„œ ์ž‘์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด์žฅ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
  • request : HTML ํผ ์š”์†Œ์˜ ์„ ํƒ ๊ฐ’ ๋“ฑ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ •๋ณด๋ฅผ ์ฝ์–ด์˜ฌ ๋•Œ ์‚ฌ์šฉ
  • response : ์‚ฌ์šฉ์ž ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  • pageContext(๊ฑฐ์˜ ์“ธ ์ผ์ด ์—†์Œ) : ํ˜„์žฌ jsp ํŽ˜์ด์ง€ (์ž๋ฐ”์—์„œ this์™€ ์œ ์‚ฌํ•˜๋‹ค๊ณ  ์ƒ๊ฐ.. ํ•˜์ง€๋งŒ ๋‹ค๋ฅด๋‹ค..)
  • session : ์‚ฌ์šฉ์ž ์ธ์ฆ์ฒ˜๋ฆฌ ํ•  ๋•Œ ์‚ฌ์šฉํ•จ.. ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ์„ธ์…˜ ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ. ( session = true ๊ฐ€ default์ด๋‹ค)
  • application : ํ”„๋กœ์ ํŠธ ์ „์ฒด
  • out : ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ output์ŠคํŠธ๋ฆผ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ
  • config : ํ˜„์žฌ JSP์— ๋Œ€ํ•œ ์ดˆ๊ธฐํ™” ํ™˜๊ฒฝ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ
  • page : ํ˜„์žฌ JSPํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋ณ€์ˆ˜์— ํ•ด๋‹น๋จ
  • exception : error์„ ์ฒ˜๋ฆฌํ•˜๋Š” jsp์—์„œ isErrorPage์†์„ฑ์„ true๋กœ ์„ค์ •ํ•˜๋ฉด exception ๋‚ด์žฅ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์ž‡๊ณ  ๊ธฐ๋ณธ์€ false๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค. ์ „๋‹ฌ๋œ ์˜ค๋ฅ˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋‚ด์žฅ ๊ฐ์ฒด
pageContext : ๊ฐ€์žฅ ์ข์€๋ฒ”์œ„
application : ๊ฐ€์žฅ ๋„“์€ ๋ฒ”์œ„
pageContext < request < session < application

 

JSP ๊ธฐ๋ณธ๊ฐ์ฒด์˜ ์˜์—ญ(scope)

  • pageContext: ํ˜„์žฌ jsp ์•ˆ์—์„œ๋งŒ (์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ)
  • request : ๋‹ค์Œ ํŽ˜์ด์ง€ ๊นŒ์ง€
    • request ๋Š” ๋‹ค์Œ ํŽ˜์—์ง€๊นŒ์ง€ ์ „๋‹ฌํ•˜๊ณ  ์ž๋™์œผ๋กœ remove๋˜์–ด์„œ removeAttribute๋ฅผ ์ƒ๊ฐํ•˜์ง€ ์•Š์•„๋„ ๋จ
  • session : ํŠน์ • ์กฐ๊ฑด ๊ธฐ๊ฐ„๋™์•ˆ
  • application : ๊ฐ€์žฅ ํฐ ๋ฒ”์œ„ (๋ธŒ๋ผ์šฐ์ €๋ž‘ ์ƒ๊ด€์—†์ด, ์„œ๋ฒ„๋งŒ ๊ฐ™์œผ๋ฉด ๋œ๋‹ค)
    • application์— ๋‹ด๊ฒŒ ๋˜๋ฉด ๋‹น์žฅ ํŽธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ removeAttribute๋ฅผ ํ•ญ์ƒ ์ƒ๊ฐํ•ด์•ผ ํ•จ

 

Web Page ์ด๋™

  • forward(request, response)
String path = "./c.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(path);
dispatcher.forward(request, response);
  • ์ด๋™๋ฒ”์œ„ : ๋™์ผ ์„œ๋ฒ„(project) ๋‚ด ๊ฒฝ๋กœ์—์„œ ์ด๋™๊ฐ€๋Šฅ.
    • path ๋Š” ๋‚ด ํ”„๋กœ์ ํŠธ ์•ˆ์—์„œ๋งŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ www.naver.com๊ณผ ๊ฐ™์€ url์„ ๋„ฃ์„ ์ˆ˜ ์—†์Œ
  • location bar : ๊ธฐ์กด URL ์œ ์ง€ (์‹ค์ œ ์ด๋™๋˜๋Š” ์ฃผ์†Œ ํ™•์ธ ๋ถˆ๊ฐ€).
  • ๊ฐ์ฒด : ๊ธฐ์กด์˜ request์™€ response๊ฐ€ ๊ทธ๋Œ€๋กœ ์ „๋‹ฌ.
  • ์†๋„ : ๋น„๊ต์  ๋น ๋ฆ„.
  • ๋ฐ์ดํ„ฐ ์œ ์ง€ : request์˜ setAttribute(name,value)๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์ „๋‹ฌ๊ฐ€๋Šฅ.
  • request๊ฐ€ ํ•œ ๋ฒˆ ์ƒ๊ธด๋‹ค
  • sendRedirect(location)
response.sendRedirect(loaction)
  • ์ด๋™๋ฒ”์œ„ : ๋™์ผ์„œ๋ฒ„ ํฌํ•จ ํƒ€ URL ๊ฐ€๋Šฅ
  • location bar : ์ด๋™ํ•˜๋Š” page๋กœ ๋ณ€๊ฒฝ
  • ๊ฐ์ฒด : ๊ธฐ์กด์˜ request์™€ response๊ฐ€ ์†Œ๋ฉธ๋˜๊ณ , ์ƒˆ๋กœ์šด request์™€ resposne๊ฐ€ ์ƒ์„ฑ.
  • ์†๋„ : forward()์— ๋น„ํ•ด ๋А๋ฆผ
  • ๋ฐ์ดํ„ฐ ์œ ์ง€ : request๋กœ๋Š” data ์ €์žฅ ๋ถˆ๊ฐ€๋Šฅ. session์ด๋‚˜ cookie๋ฅผ ์ด์šฉ.
  • request๊ฐ€ ๋‘ ๋ฒˆ ์ƒ๊ธด๋‹ค
  • location ์€ URL์ด๋‹ค. ๋”ฐ๋ผ์„œ ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณตํ•˜๋ฉด www.naver.com์œผ๋กœ sendRedirectํ•  ์ˆ˜ ์žˆ์Œ
  • url์ด๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•จ
private void redirect(HttpServletRequest request, HttpServletResponse response, String path) throws IOException {
		response.sendRedirect(request.getContextPath() + path);
}