๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’Ž/๋ถ€์ŠคํŠธ์ฝ”์Šค

[๋ถ€์ŠคํŠธ์ฝ”์Šค] ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ BE: JSP ๋ฌธ๋ฒ•, JSP ๋‚ด์žฅ๊ฐ์ฒด

by dar0m! 2020. 3. 26.

 

 

1) JSP ๋ฌธ๋ฒ•

 

[LECTURE] 3) JSP ๋ฌธ๋ฒ• : edwith

๋“ค์–ด๊ฐ€๊ธฐ ์ „์— JSP๋Š” HTMLํƒœ๊ทธ์™€ ์ž๋ฐ”์ฝ”๋“œ๋ฅผ ์„ž์–ด์„œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JSP์—์„œ ์ž๋ฐ”์ฝ”๋“œ๋Š” ์–ด๋–ป๊ฒŒ ์ž…๋ ฅ์„ ํ•˜๋Š”์ง€, ์–ด๋–ค ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋ ค๋ฉด ์–ด๋–ค ๊ฒƒ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ... - ๋ถ€์ŠคํŠธ์ฝ”์Šค

www.edwith.org

JSP๋Š” HTMLํƒœ๊ทธ์™€ ์ž๋ฐ”์ฝ”๋“œ๋ฅผ ์„ž์–ด์„œ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๋‚œ ์‹œ๊ฐ„ JSP ์Šคํฌ๋ฆฝํŠธ ๊ตฌ์„ฑ์š”์†Œ 5๊ฐ€์ง€(์ง€์‹œ์ž, ์Šคํฌ๋ฆฝํŠธ๋ฆฟ, ํ‘œํ˜„์‹, ์„ ์–ธ์‹, ์ฃผ์„)๋ผ๊ณ  ๋งํ–ˆ๋˜ JSP ๋ฌธ๋ฒ•์„ ํ•œ ๋ฒˆ๋” ์ •๋ฆฌํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•™์Šต ๋ชฉํ‘œ

  1. JSP์—์„œ ์„ ์–ธ๋ฌธ์„ ์ด์šฉํ•ด ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. JSP์—์„œ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  3. JSP์—์„œ ๋ณ€์ˆ˜๊ฐ’์„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. JSP์—์„œ ์ฃผ์„๋ฌธ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•ต์‹ฌ ๊ฐœ๋…

  • ์„ ์–ธ๋ฌธ(Declaration)
  • ์Šคํฌ๋ฆฝํŠธ๋ฆฟ(Scriptlet)
  • ํ‘œํ˜„์‹(Expression) 
  • ์ฃผ์„(Comment) 

 

์Šคํฌ๋ฆฝํŠธ ์š”์†Œ์˜ ์ดํ•ด

  • JSP ํŽ˜์ด์ง€์—์„œ๋Š” ํฌ๊ฒŒ ์„ ์–ธ๋ฌธ(Declaration), ์Šคํฌ๋ฆฝํŠธ๋ฆฟ(Scriptlet), ํ‘œํ˜„์‹(Expression) ์ด๋ผ๋Š” 3๊ฐ€์ง€์˜ ์Šคํฌ๋ฆฝํŠธ ์š”์†Œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 

 ์„ ์–ธ๋ฌธ(Declaration)

  • ์„ ์–ธ๋ฌธ : <%! %>
  • ์„ ์–ธ๋ฌธ์€ JSP ํŽ˜์ด์ง€ ๋‚ด์—์„œ ํ•„์š”ํ•œ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋‚˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์„ ์–ธํ•ด ์‚ฌ์šฉํ•˜๋Š” ์š”์†Œ
  • ์„ ์–ธ๋ฌธ์˜ ๋ฌธ๋ฒ•
    • <%! ๋ฌธ์žฅ %>

JSP๊ฐ€ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ๋ฅผ ๊ธฐ์–ตํ•ด๋ณด๋ฉด ๋ชจ๋‘ Service๋ฉ”์„œ๋“œ ์•ˆ์—์„œ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ๋ฐ”๋€Œ์–ด ์žˆ์—ˆ๋Š”๋ฐ, ์„ ์–ธ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด Service๋ฉ”์„œ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ํด๋ž˜์Šค๋ฐ”๋”” ์ชฝ์— ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

exam1.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 
id : <%=getId() %>
</body>
</html>
 
<%!
    String id = "u001"//๋ฉค๋ฒ„๋ณ€์ˆ˜ ์„ ์–ธ
    public String getId( ) { //๋ฉ”์†Œ๋“œ ์„ ์–ธ
        return id;
    }
%>
cs

๋ฉค๋ฒ„๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•ด๋ด…๋‹ˆ๋‹ค. JSP์ฝ”๋“œ ๋‚ด์˜ ์œ„์น˜๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์œผ๋‹ˆ ์–ด๋Š ์œ„์น˜์— ์ž‘์„ฑํ•˜๋“  ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค.

์‹คํ–‰๊ฒฐ๊ณผ

bodyํƒœ๊ทธ ๋‚ด์—์„œ ์„ ์–ธ๋ฌธ์—์„œ ์ž‘์„ฑํ–ˆ๋˜ id๊ฐ’์„ ์ž˜ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

exam1_jsp.java

public final class exam1_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent,
                 org.apache.jasper.runtime.JspSourceImports {


    String id = "u001"; //๋ฉค๋ฒ„๋ณ€์ˆ˜ ์„ ์–ธ
    public String getId( ) { //๋ฉ”์†Œ๋“œ ์„ ์–ธ
        return id;
    }
    ....
    
    public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
      throws java.io.IOException, javax.servlet.ServletException {

    ....

    try {
      ....
      out.write("\r\n");
      out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
      out.write("<html>\r\n");
      out.write("<head>\r\n");
      out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
      out.write("<title>Insert title here</title>\r\n");
      out.write("</head>\r\n");
      out.write("<body>\r\n");
      out.write("\r\n");
      out.write("id : ");
      out.print(getId() );
      out.write("\r\n");
      out.write("</body>\r\n");
      out.write("</html>\r\n");
      out.write("\r\n");
    } catch (java.lang.Throwable t) {
      ....
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}

์‹ค์ œ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ณ€ํ™˜๋œ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ํด๋ž˜์Šค๋ฐ”๋””์— ์„ ์–ธ์‹ ๋‚ด์— ์ž‘์„ฑํ–ˆ๋˜ ๋ฉค๋ฒ„๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ๊ฐ€ ๋ณด์ด๊ณ , ๊ทธ ์•„๋ž˜ ์„œ๋น„์Šค ๋ฉ”์„œ๋“œ์— ์‹ค์ œ๋กœ ์„ ์–ธ์‹์— ์ž‘์„ฑํ–ˆ๋˜ ๋ฉค๋ฒ„๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋˜ ํ‘œํ˜„์‹ ๋ถ€๋ถ„์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ฑฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•  ๋•Œ 

 

์Šคํฌ๋ฆฝํŠธ๋ฆฟ(Scriptlet)

  • ์Šคํฌ๋ฆฝํŠธ๋ฆฟ : <% %>
  • ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์ด ์“ฐ์ด๋Š” ์Šคํฌ๋ฆฝํŠธ ์š”์†Œ
  • ์ฃผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋กœ์ง์„ ๊ธฐ์ˆ ํ•  ๋•Œ ์‚ฌ์šฉ
  • ์Šคํฌ๋ฆฝํŠธ๋ฆฟ์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ง€์—ญ๋ณ€์ˆ˜
  • ์Šคํฌ๋ฆฝํŠธ๋ฆฟ์˜ ๋ฌธ๋ฒ•
    • <% ๋ฌธ์žฅ%>

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

exam2.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 
<%
for(int i = 1; i <= 5; i++){
%>
<H<%=%>> ์•„๋ฆ„๋‹ค์šด ํ•œ๊ธ€ </H<%=%>>
<%
}
%>
</body>
</html>
cs

๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋˜‘๊ฐ™์€ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ๋ฆฟ๋‚ด์— html์ฝ”๋“œ๋ฅผ ์“ฐ๊ณ  ์‹ถ์ง€๋งŒ ์Šคํฌ๋ฆฝํŠธ๋ฆฟ๋‚ด์— ์žˆ๋Š” ๊ฒƒ๋“ค์€ ์‘๋‹ต ๊ฒฐ๊ณผ์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์Šคํฌ๋ฆฝํŠธ๋ฆฟ์„ ์ชผ๊ฐœ์„œ for๋ฌธ์ด 11๋ฒˆ์งธ ์ค„์—์„œ ์‹œ์ž‘๋์ง€๋งŒ ๋๋‚˜๋Š” ๊ฒƒ์€ 15๋ฒˆ์งธ ์ค„ ์Šคํฌ๋ฆฝํŠธ๋ฆฟ์—์„œ ๋๋‚˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ทธ ์‚ฌ์ด 14๋ฒˆ์งธ ์ค„์— ์ผ๋˜ ๊ตฌ๋ฌธ์ด ๋ฐ˜๋ณต์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ฒฐ๊ณผ

์ด๋ ‡๊ฒŒ ์Šคํฌ๋ฆฝํŠธ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๋ฉด ํƒœ๊ทธ๊ฐ€ ๋™์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ์„œ ์ถ”๊ฐ€๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

html ์†Œ์Šค๋ณด๊ธฐ ๊ฒฐ๊ณผ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 
 
<H1> ์•„๋ฆ„๋‹ค์šด ํ•œ๊ธ€ </H1>
 
<H2> ์•„๋ฆ„๋‹ค์šด ํ•œ๊ธ€ </H2>
 
<H3> ์•„๋ฆ„๋‹ค์šด ํ•œ๊ธ€ </H3>
 
<H4> ์•„๋ฆ„๋‹ค์šด ํ•œ๊ธ€ </H4>
 
<H5> ์•„๋ฆ„๋‹ค์šด ํ•œ๊ธ€ </H5>
 
</body>
</html>
cs

exam2_jsp.java

public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
      throws java.io.IOException, javax.servlet.ServletException {

   ....

    try {
      ....
      out.write("\r\n");
      out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
      out.write("<html>\r\n");
      out.write("<head>\r\n");
      out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
      out.write("<title>Insert title here</title>\r\n");
      out.write("</head>\r\n");
      out.write("<body>\r\n");
      out.write("\r\n");

for(int i = 1; i <= 5; i++){

      out.write("\r\n");
      out.write("<H");
      out.print(i );
      out.write("> ์•„๋ฆ„๋‹ค์šด ํ•œ๊ธ€ </H");
      out.print(i );
      out.write('>');
      out.write('\r');
      out.write('\n');

}

      out.write("\r\n");
      out.write("</body>\r\n");
      out.write("</html>");
    } catch (java.lang.Throwable t) {
      ....
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}

๋ฐ˜๋ณต๋ฌธ์ด ๋‹ค์„ฏ ๋ฒˆ ๋Œ๋ฉด์„œ ์œ„์˜ html๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด๋ƒˆ๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์‘๋‹ต์œผ๋กœ ๋ณด๋ƒˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ์ถœ๋ ฅ์€ ์šฐ๋ฆฌ๊ฐ€ ๋ดค๋˜ ์‹คํ–‰ ๊ฒฐ๊ณผ์™€ ๊ฐ™์€ ๋ชจ์Šต์ด ๋ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฐ•์กฐํ•˜๊ณ  ์žˆ๋Š” JSP์˜ ๊ฐ€์žฅ ํ•ต์‹ฌ์€ 'JSP๊ฐ€ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ฐ”๋€” ๋•Œ ์–ด๋–ป๊ฒŒ ๋ฐ”๋€”๊นŒ?'์ž…๋‹ˆ๋‹ค.

 

ํ‘œํ˜„์‹(Expression)

  • ํ‘œํ˜„์‹ : <%=%>
  • JSP ํŽ˜์ด์ง€์—์„œ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ถœ๋ ฅํ•  ๋ถ€๋ถ„์„ ํ‘œํ˜„ (์ฆ‰, ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ)
  • ์Šคํฌ๋ฆฝํŠธ๋ฆฟ๋‚ด์—์„œ ์ถœ๋ ฅํ•  ๋ถ€๋ถ„์€ ๋‚ด์žฅ๊ฐ์ฒด์ธ out ๊ฐ์ฒด์˜ print() ๋˜๋Š” println() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ถœ๋ ฅ
  • ํ‘œํ˜„์‹์˜ ๋ฌธ๋ฒ•
    • <%=๋ฌธ์žฅ%>

์‘๋‹ต ๊ฒฐ๊ณผ์— ๋ญ”๊ฐ€๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ํ‘œํ˜„์‹์—๋‹ค๊ฐ€ ๋„ฃ์–ด์•ผ์ง€๋งŒ ์ถœ๋ ฅ์ด ๋ฉ๋‹ˆ๋‹ค.

 

์ฃผ์„(Comment)

  • JSPํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์„
    • HTML์ฃผ์„, ์ž๋ฐ”์ฃผ์„, JSP์ฃผ์„

1. HTML ์ฃผ์„

  • HTML ์ฃผ์„์€ <!--๋กœ ์‹œ์ž‘ํ•ด์„œ -->๋กœ ๋๋‚˜๋Š” ํ˜•ํƒœ
  • HTML ์ฃผ์„์€ HTML์ฃผ์„์„ ์‚ฌ์šฉํ•œ ํŽ˜์ด์ง€๋ฅผ ์›น์—์„œ ์„œ๋น„์Šคํ•  ๋•Œ ํ™”๋ฉด์— ์ฃผ์„์ด ๋‚ด์šฉ์ด ํ‘œ์‹œ๋˜์ง€๋Š” ์•Š์œผ๋‚˜ , [์†Œ์Šค๋ณด๊ธฐ]์ˆ˜ํ–‰ํ•˜๋ฉด HTML์ฃผ์„์˜ ๋‚ด์šฉ์ด ํ™”๋ฉด์— ํ‘œ์‹œ.
  • HTML์ฃผ์„์˜ ์˜ˆ์‹œ
<!-- html ์ฃผ์„์ž…๋‹ˆ๋‹ค. -->

2. JSP์ฃผ์„

  • JSP ํŽ˜์ด์ง€์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ <%--๋กœ ์‹œ์ž‘ํ•ด์„œ --%>๋กœ ๋๋‚˜๋Š” ํ˜•ํƒœ
  • JSP ์ฃผ์„์€ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ, ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋กœ์„œ ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜, ์›น ๋ธŒ๋ผ์šฐ์ € ์ƒ์—์„œ ์†Œ์Šค ๋ณด๊ธฐ๋ฅผ ํ•ด๋„ ํ‘œ์‹œ ๋˜์ง€ ์•Š์Œ. ๋˜ํ•œ JSP์ฃผ์„ ๋‚ด์— ์‹คํ–‰์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด๋„ ๊ทธ ์ฝ”๋“œ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์Œ.
  • JSP์ฃผ์„์˜ ์˜ˆ์‹œ
<%-- JSP ์ฃผ์„์ž…๋‹ˆ๋‹ค. --%>

3. ์ž๋ฐ”์ฃผ์„

  • ์ž๋ฐ” ์ฃผ์„์€ //, /**/์„ ์‚ฌ์šฉํ•ด์„œ ์ž‘์„ฑ.
  • //์€ ํ•œ ์ค„์งœ๋ฆฌ ์ฃผ์„์„ ์ž‘์„ฑํ•  ๋•Œ ์‚ฌ์šฉ๋˜๊ณ , /**/์€ ์—ฌ๋Ÿฌ ์ค„์˜ ์ฃผ์„์„ ์ž‘์„ฑํ•  ๋•Œ ์‚ฌ์šฉ
  • ์Šคํฌ๋ฆฝํŠธ๋ฆฟ์ด๋‚˜ ์„ ์–ธ๋ฌธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์„์œผ๋กœ, ์ž๋ฐ”์™€ ์ฃผ์„ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์ด ๊ฐ™์Œ
  • ์ž๋ฐ”์ฃผ์„์˜ ์˜ˆ์‹œ
//์ฃผ์„

/*์ฃผ์„

์—ฌ๋Ÿฌ ์ค„์— ๊ฑธ์นœ ์ฃผ์„์ด๋‹ค.

*/

์–ธ์ œ ์ฃผ์„์œผ๋กœ์จ์˜ ์—ญํ• ์„ ํ• ๊นŒ?

  • JSP์ฃผ์„์ธ ๊ฒฝ์šฐ ์ฃผ์„ ์ž์ฒด๊ฐ€ JSP์˜ ์ฃผ์„์ด๊ธฐ ๋•Œ๋ฌธ์— ์•„์˜ˆ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ž๋ฐ” ์ฃผ์„์ธ ๊ฒฝ์šฐ์—๋Š” ์ž๋ฐ”๋กœ ๋‹ค ๋ฐ”๋€๋‹ˆ๋‹ค. ๋ฐ”๋€Œ๋Š”๋ฐ ์‹ค์ œ ์ž๋ฐ” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์ฃผ์„์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰์€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • HTML ์ฃผ์„์€ ์ž๋ฐ”๋กœ๋„ ๋ฐ”๋€Œ๊ณ  ์ž๋ฐ”์—์„œ ์‹คํ–‰๋„ ๋˜๊ณ  ์‘๋‹ต ๊ฒฐ๊ณผ์— ํฌํ•จ๋„ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์‹ค์ œ ์‘๋‹ต ๊ฒฐ๊ณผ๊ฐ€ ๋„˜์–ด์™”์„ ๋•Œ(๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML์„ ๋ณด์—ฌ์ค„ ๋•Œ) ์ฃผ์„์ž„์„ ์ธ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ™”๋ฉด์— ๋ณด์ด์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

2) JSP ๋‚ด์žฅ๊ฐ์ฒด

 

[LECTURE] 4) JSP ๋‚ด์žฅ๊ฐ์ฒด : edwith

๋“ค์–ด๊ฐ€๊ธฐ ์ „์— JSP์—์„œ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„, ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋ฆฌ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‚ด์žฅ๊ฐ์ฒด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ ์–ธํ•˜์ง€ ์•Š์•˜์Œ์—๋„ ์–ด๋–ป๊ฒŒ JSP์—์„œ ๋‚ด์žฅ... - ๋ถ€์ŠคํŠธ์ฝ”์Šค

www.edwith.org

JSP์—์„œ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„, ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋ฆฌ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋‚ด์žฅ๊ฐ์ฒด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ ์„ ์–ธํ•˜์ง€ ์•Š์•˜์Œ์—๋„ ์–ด๋–ป๊ฒŒ JSP์—์„œ ๋‚ด์žฅ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์ด ๋‚ด์žฅ ๊ฐ์ฒด๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•™์Šต ๋ชฉํ‘œ

  1. ๋‚ด์žฅ๊ฐ์ฒด๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•œ๋‹ค. 
  2. ๋‚ด์žฅ๊ฐ์ฒด ์ข…๋ฅ˜๋ฅผ ์•Œ๊ณ  ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

ํ•ต์‹ฌ ๊ฐœ๋…

  • request
  • response
  • out
  • application
  • page
  • session

JSP ๋‚ด์žฅ ๊ฐ์ฒด๋ž€?

  • JSP๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์„œ๋ธ”๋ฆฟ ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์‹คํ–‰๋œ๋‹ค.
  • JSP์— ์ž…๋ ฅํ•œ ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋Š” ์ƒ์„ฑ๋˜๋Š” ์„œ๋ธ”๋ฆฟ ์†Œ์Šค์˜ _jspService() ๋ฉ”์†Œ๋“œ ์•ˆ์— ์‚ฝ์ž…๋˜๋Š” ์ฝ”๋“œ๋กœ ์ƒ์„ฑ๋œ๋‹ค.
  • _jspService()์— ์‚ฝ์ž…๋œ ์ฝ”๋“œ์˜ ์œ—๋ถ€๋ถ„์— ๋ฏธ๋ฆฌ ์„ ์–ธ๋œ ๊ฐ์ฒด๋“ค์ด ์žˆ๋Š”๋ฐ, ํ•ด๋‹น ๊ฐ์ฒด๋“ค์€ jsp์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • response, request, application, session, out๊ณผ ๊ฐ™์€ ๋ณ€์ˆ˜๋ฅผ ๋‚ด์žฅ๊ฐ์ฒด๋ผ๊ณ  ํ•œ๋‹ค.

๋‚ด์žฅ ๊ฐ์ฒด์˜ ์ข…๋ฅ˜

request, out ๊ฐ™์€ ๋‚ด์žฅ ๊ฐ์ฒด๋“ค์ด ์ด๋ฏธ JSP๊ฐ€ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ฐ”๋€” ๋•Œ ๋งŒ๋“ค์–ด์„œ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ์ด๋Ÿฐ ๊ฐ์ฒด๋“ค์€ ๋”ฐ๋กœ ์„ ์–ธํ•˜๊ฑฐ๋‚˜ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  scope๋ผ๋Š” ๊ฒƒ๋„ ์žˆ๋Š”๋ฐ ๋‚˜์ค‘์— ์Šค์ฝ”ํ”„์— ๋Œ€ํ•ด ๋ฐฐ์šธ ๋•Œ ์ž์„ธํžˆ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

exam2_jsp.java

public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
      throws java.io.IOException, javax.servlet.ServletException {

    final java.lang.String _jspx_method = request.getMethod();
    if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
      response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD");
      return;
    }

    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;


    try {
      response.setContentType("text/html; charset=UTF-8");
      pageContext = _jspxFactory.getPageContext(this, request, response,
      			null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;

      out.write("\r\n");
      out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
      out.write("<html>\r\n");
      out.write("<head>\r\n");
      out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
      out.write("<title>Insert title here</title>\r\n");
      out.write("</head>\r\n");
      out.write("<body>\r\n");
      out.write("\r\n");

for(int i = 1; i <= 5; i++){

      out.write("\r\n");
      out.write("<H");
      out.print(i );
      out.write("> ์•„๋ฆ„๋‹ค์šด ํ•œ๊ธ€ </H");
      out.print(i );
      out.write('>');
      out.write('\r');
      out.write('\n');

}

      out.write("\r\n");
      out.write("</body>\r\n");
      out.write("</html>");
    } catch (java.lang.Throwable t) {
     ....
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}

์Šคํฌ๋ฆฝํ‹€๋ฆฟ์„ ์•Œ์•„๋ณด๋ฉด์„œ ์ž‘์„ฑํ–ˆ๋˜ JSP๊ฐ€ ์ž๋ฐ”๋กœ ๋ณ€ํ™˜๋œ ๊ฒƒ์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์‚ดํŽด๋ณด๋ฉด,

์„œ๋น„์Šค๋ฉ”์†Œ๋“œ์˜ ์ธ์ž๋กœ request์™€ response๊ฐ€ ์กด์žฌํ•˜๊ณ  ๊ทธ ์•„๋ž˜ ๋ฉค๋ฒ„๋ณ€์ˆ˜๋กœ session, out, page ๋“ฑ ๋‚ด์žฅ๊ฐ์ฒด๋“ค์ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

์ด๋ ‡๊ฒŒ ํ•ญ์ƒ JSP๊ฐ€ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด์žฅ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์„œ๋น„์Šค๋ฉ”์†Œ๋“œ ๋‚ด์— ๋‚ด์žฅ๊ฐ์ฒด๊ฐ€ ์„ ์–ธ๋˜๋Š” ํŠน์„ฑ๋•Œ๋ฌธ์— JSP ์„ ์–ธ๋ฌธ์—์„œ๋Š” ๋‚ด์žฅ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ JSP ๋ฌธ๋ฒ•์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ •๋ฆฌํ•˜๊ณ  JSP ๋‚ด์žฅ๊ฐ์ฒด๊นŒ์ง€ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค.

 

ํ›„๊ธฐ

๋ฒŒ์จ ๋‚ด์ผ์ด 3์›” ๋งˆ์ง€๋ง‰ ์ฃผ๋กœ ๋ถ€์ŠคํŠธ์ฝ”์Šค ๋Œ€ํ•™์ƒ ์„œํฌํ„ฐ์ฆˆ 2๊ธฐ ํ™œ๋™์ด ๋๋‚˜๋Š”๋ฐ์š”... ๋„ˆ๋ฌด ์—ด์‹ฌํžˆ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์•„ ์•„์‰ฌ์šฐ๋ฉด์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ์™„์ฃผ๊ฐ€ ๋ชฉํ‘œ์˜€๊ธฐ ๋•Œ๋ฌธ์—๐Ÿ˜‚ ํ›„๋ จํ•˜๊ธฐ๋„ ํ•˜๊ณ  ์‹œ์›์„ญ์„ญํ•˜๋„ค์š”ใ…Ž. ๊ทธ๋ž˜๋„ ์•ž์œผ๋กœ ๋‚จ์€ ๊ฐ•์˜๋„ ๋งŽ์œผ๋‹ˆ๊นŒ ๋‚จ์€ ๊ฐ•์˜๋„ ์—ด์‹ฌํžˆ ๋“ฃ๊ณ  ์ •๋ฆฌํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ์ด ์ƒ๊ธฐ๋ฉด ๋˜ ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฌํƒœ๊นŒ์ง€ ์ œ ๊ธ€์„ ํ•œ ๋ฒˆ์ด๋ผ๋„ ๋ด์ฃผ์…จ๋˜ ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฌ๊ณ  ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ๊ธ€์„ ๊ณ„์† ํ™•์ธํ•ด์ฃผ์…จ๋˜ ๋ฉ˜ํ† ๋‹˜๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋ฅผ ํฌํ•จํ•˜์—ฌ 2์›” ๋ถ€ํ„ฐ ์—ด์‹ฌํžˆ ๋‹ฌ๋ ค์˜จ ์ˆ˜๊ฐ•์ƒ๋“ค์—๊ฒŒ๋„ ์ˆ˜๊ณ ํ–ˆ๋‹ค๋Š” ๋ง์„ ์ „ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!!

๊ทธ๋Ÿผ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ค‘์š”ํ•œ ํ•œ ๊ฐ€์ง€๋งŒ ์ƒ๊ธฐ์‹œํ‚ค๊ณ  ๋งˆ๋ฌด๋ฆฌ ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

JSP๋Š” ํ•ญ์ƒ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ฐ”๋€Œ์–ด์„œ ์‹คํ–‰๋œ๋‹ค!

 

๋Œ“๊ธ€