JSP ๊ตฌ๋ ์๋ฆฌ
JSP๋ฅผ ์คํํ๋ฉด ์ค์ ๋ก๋ JSP๋ก๋ถํฐ ์์ฑ๋ ์๋ธ๋ฆฟ์ด ์คํ๋๋ค.
โ ํด๋ผ์ด์ธํธ๊ฐ JSP๋ฅผ ์คํ์ ์์ฒญํ๋ฉด ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ JSP ํ์ผ์ ๋์ํ๋ ์๋ฐ ์๋ธ๋ฆฟ์ ์ฐพ์์ ์คํํ๋ค.
โก ๋์ํ๋ ์๋ธ๋ฆฟ์ด ์๊ฑฐ๋ JSP ํ์ผ์ด ๋ณ๊ฒฝ๋์ผ๋ฉด JSP ์์ง์ ํตํด ์๋ธ๋ฆฟ ์๋ฐ ์์ค๋ฅผ ์์ฑํ๋ค.
โข ์๋ฐ ์ปดํ์ผ๋ฌ๊ฐ ์๋ธ๋ฆฟ ์๋ฐ ์์ค๋ฅผ ํด๋์ค ํ์ผ๋ก ์ปดํ์ผํ๋ค. (JSP ํ์ผ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋ฐ๋ณต)
โฃ JSP๋ก๋ถํฐ ์์ฑ๋ ์๋ธ๋ฆฟ์ ์๋ธ๋ฆฟ ๊ตฌ๋ ๋ฐฉ์์ ์ํด service() ๋ฉ์๋๊ฐ ํธ์ถ๋๊ณ ์๋ธ๋ฆฟ์ด ์์ฑํ HTML ํ๋ฉด์ ์น ๋ธ๋ผ์ฐ์ ๋ก ๋ณด๋ธ๋ค.
๊ฐ๋จํ JSP ํ์ผ์ ๋ง๋ค๊ณ ์ค์ ๋ก ์๋ฐ ํ์ผ๋ก ๋ณ๊ฒฝ๋๋ ๊ฒ์ ํ์ธํด๋ณด๊ฒ ๋ค.
HelloWorld.jsp
1
2
3
4
5
6
7
8
9
|
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
Hello World
</body>
</html>
|
cs |
JSP ์์ง์ JSP๊ฐ ์คํ๋ ๋ ์๋ธ๋ฆฟ์ ๋ง๋ ๋ค. ์๋ธ๋ฆฟ ์์ค๋ฅผ ํ์ธํ ๊ฒ์ด๋ฏ๋ก ๋จผ์ JSP๋ฅผ ์คํํ๋ค.
์ด์ ์ด HelloWorld.jsp ํ์ผ์ ๋์ํ๋ ์๋ธ๋ฆฟ์ด ์์ฑ๋์๊ฒ์ด๋ค.
ํ์๊ธฐ๋ฅผ ์ผ๊ณ IDE์ ์์ ๋ฐฐํฌ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ๋ค.
์์ ๊ฐ์ด HelloWorld.jsp๋ก๋ถํฐ ์๋ฐ ์์คํ์ผ HelloWorld_jsp.java์ ์ปดํ์ผ๋ ํด๋์คํ์ผ HelloWorld_jsp.class๊ฐ ์์ฑ๋์๋ค.
์์ฑ๋ ์๋ฐ ํ์ผ์ ์ด์ด๋ณด์.
์์ฑ๋ HelloWorld_jsp ํด๋์ค๋ HttpJspBase๋ฅผ ์์๋ฐ๋๋ค. HttpJspBase๋ ํฐ์บฃ์ ํฌํจ๋ ํด๋์ค์ด๋ฉฐ ํฐ์บฃ์ JSP ์์ง์ ์๋ธ๋ฆฟ ์์ค๋ฅผ ์์ฑํ ๋ ์ด ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ค. (์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ง๋ค ๋ค๋ฅด๋ค.)
๋ค์ HttpJspBase๋ฅผ ์ด์ด๋ณด๋ฉด
HttpJspBase๋ javax.servlet.jsp.HttpJspPage ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ค.
HttpJspPage๋ Servlet -> JspPage -> HttpJspPage ์์ผ๋ก ์์๋๊ธฐ ๋๋ฌธ์ HttpJspPage๋ฅผ ๊ตฌํํ๋ ํด๋์ค๋ ์๋ธ๋ฆฟ ํด๋์ค์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก HttpJspBase๋ฅผ ์์๋ฐ๋ HelloWorld_jsp ์ญ์ ์๋ธ๋ฆฟ์ด ๋๋ค.
HttpJspBase.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public final void init(ServletConfig config) throws ServletException {
super.init(config);
this.jspInit();
this._jspInit();
}
public final void destroy() {
this.jspDestroy();
this._jspDestroy();
}
public final void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this._jspService(request, response);
}
|
cs |
HttpJspBase ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด, init()์ jspInit()์, destroy()๋ jspDestroy()๋ฅผ, service๋ _jspService๋ฅผ ํธ์ถํ๋ค.
๋ง์ฝ JSP์์ init()์ด๋ destroy()๋ฅผ overrideํ ์ผ์ด ์๋ค๋ฉด ํด๋น ๋ฉ์๋ ๋์ jspInit()๊ณผ jspDestroy()๋ฅผ overrideํ๋ค.
HelloWorld_jsp.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
public void _jspService(final HttpServletRequest request, final HttpServletResponse response)
throws java.io.IOException, ServletException {
// ์ค๋ต
final PageContext pageContext;
HttpSession session = null;
final ServletContext application;
final ServletConfig config;
JspWriter out = null;
final Object page = this;
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("\r\n");
out.write("<html>\r\n");
out.write("<head>\r\n");
out.write(" <title>Title</title>\r\n");
out.write("</head>\r\n");
out.write("<body>\r\n");
out.write("Hello World\r\n");
out.write("</body>\r\n");
out.write("</html>\r\n");
out.write("\r\n");
// ์ค๋ต
}
|
cs |
์์ฑ๋ ์๋ฐ ํ์ผ์ _jspService()์ JSP๊ฐ ์ํํ ์์ ์ด ๋ค์ด๊ฐ๋ค.
JSP ํ์ผ์ ๊ฐ๋จํ Hello World๋ผ๊ณ ์์ฑํ ๊ฒ์ด JSP ์์ง์ ์ํด ์์ ๊ฐ์ด ๋ณํ๋๊ฒ์ด๋ค.
์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ service()๋ฅผ ํธ์ถํ๋ฉด service() ๋ด๋ถ์์ _jspService()๋ฅผ ํธ์ถํจ์ผ๋ก์จ JSP ํ์ด์ง์ ์์ฑํ๋ ์ฝ๋๋ค์ด ์คํ๋๋ ๊ฒ์ด๋ค.
JSP ๋ด์ฅ ๊ฐ์ฒด(JSP Implicit Objects)
request, response, pageContext, session, application, config, out, page
_jspService()์ ๋งค๊ฐ๋ณ์๋ HttpServlet์ doGet(), doPost()์ ๋์ผํ HttpServletRequest์ HttpServletResponse ๊ฐ์ฒด์ด๋ค. ๋จ ๋งค๊ฐ๋ณ์์ ์ด๋ฆ์ ๋ฐ๋์ request, response์ฌ์ผ ํ๋ค.
_jspService()์ ๋ก์ปฌ ๋ณ์ ์ค pageContext, session, application, config, out, page๋ ๋ฐ๋์ ์ด ์ด๋ฆ์ผ๋ก ์กด์ฌํด์ผ ํ๋ค.
์ด๋ ๊ฒ _jspServce()์ ์ ์ธ๋ request, response, pageContext, session, application, config, out, page ๊ฐ์ฒด๋ค์ ์ด ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋ ๋ฐ๋์ ์ค๋น๋๋ ๊ฐ์ฒด๋ค์ด๊ธฐ ๋๋ฌธ์ 'JSP ๋ด์ฅ ๊ฐ์ฒด(Implicit Objects)'๋ผ ํ๋ค.
์ด ๊ฐ์ฒด๋ค์ ๋ณ๋์ ์ ์ธ ์์ด JSP์์ ์ฌ์ฉํ ์ ์๋ค.
๋๊ธ