JSP ํต์ฌ ๊ธฐ์ ์์
์๋ธ๋ฆฟ(Servlet)๊ณผ JSP(JavaServer Pages)๋ ์๋ฐ ๊ธฐ๋ฐ ์น ๊ฐ๋ฐ์ ํต์ฌ ๊ธฐ์ ์
๋๋ค.
โข
HTTP
โข
Servlet
โข
JSP
โฆ
JSP ํ๊ทธ
โช
์คํฌ๋ฆฝํธ ํ๊ทธ
โข
์ ์ธ๋ฌธ
โข
์คํฌ๋ฆฝํ๋ฆฟ
โข
ํํ๋ฌธ
โช
๋๋ ํฐ๋ธ ํ๊ทธ
โช
์ก์
ํ๊ทธ
โฆ
๋ด์ฅ ๊ฐ์ฒด
โช
request
โช
response
โช
out
โฆ
JSTL
โฆ
EL
โข
Filter
โข
Session
โข
Cookie
โข
Listener
โข
MVC
ํต์ฌ ๊ธฐ์ ์์ ์ ๋ฆฌ
HTTP
์น์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ฝ์
HTTP์ ์ฃผ์ ๊ตฌ์ฑ ์์
โข
URL (Uniform Resource Locator)
โฆ
์น์์ ์์์ ์์น๋ฅผ ๋ํ๋ด๋ ์ฃผ์
โฆ
๊ตฌ์กฐ: ํ๋กํ ์ฝ://ํธ์คํธ:ํฌํธ/๊ฒฝ๋ก?์ฟผ๋ฆฌ์คํธ๋ง#ํ๋๊ทธ๋จผํธ
โฆ
์: https://example.com:8080/user?id=123
โข
HTTP ์์ฒญ ๋ฉ์์ง
โฆ
์์ฒญ ๋ผ์ธ: ๋ฉ์๋(GET, POST ๋ฑ) + URL + HTTP ๋ฒ์
โฆ
ํค๋: Host, Content-Type, User-Agent ๋ฑ์ ๋ฉํ์ ๋ณด
โฆ
๋ฐ๋: POST/PUT ์์ฒญ ์ ์ ์กํ ๋ฐ์ดํฐ (GET์ ๋ฐ๋ ์์)
โข
HTTP ์๋ต ๋ฉ์์ง
โฆ
์ํ ๋ผ์ธ: HTTP ๋ฒ์ + ์ํ ์ฝ๋(200, 404, 500 ๋ฑ) + ์ํ ๋ฉ์์ง
โฆ
ํค๋: Content-Type, Set-Cookie, Cache-Control ๋ฑ
โฆ
๋ฐ๋: ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ ์ค์ ๋ฐ์ดํฐ (HTML, JSON ๋ฑ)
โข
๋ฐ์ดํฐ ์ ์ก ๋ฐฉ์
โฆ
GET ๋ฐฉ์: (์กฐํ์ฉ) URL ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฌ์ ์ ์กํ๋ ๋ฐฉ์
โช
URL์ ์ฟผ๋ฆฌ์คํธ๋ง์ผ๋ก ๋ฐ์ดํฐ ์ ๋ฌ (์: ?name=ํ๊ธธ๋&age=25)
โฆ
POST ๋ฐฉ์: (๋ฑ๋ก์ฉ) ์์ฒญ ๋ณธ๋ฌธ(Body) ์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ ์กํ๋ ๋ฐฉ์
โช
HTTP ๋ฐ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ ์ก (๋ณด์์ฑ ๋์)
โฆ
๋ฐ์ดํฐ ํ์: application/x-www-form-urlencoded, multipart/form-data, application/json ๋ฑ
Servlet
HttpServlet ํด๋์ค๋ฅผ ์์๋ฐ์ HTTP ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ๋ ์๋ฐ ํด๋์ค
โข
์๋ฐ ๊ธฐ๋ฐ์ ์น ์์ฒญ/์๋ต์ ์ฒ๋ฆฌํ๋ ํด๋์ค
โข
HTTP ์์ฒญ์ ๋ฐ๊ณ , ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ ํ ์๋ต์ ๋ฐํ
โข
doGet(), doPost() ๋ฑ ๋ฉ์๋๋ก HTTP ๋ฉ์๋ ์ฒ๋ฆฌ
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.getWriter().write("Hello, Servlet!");
}
}
Java
๋ณต์ฌ
JSP (JavaServer Pages)
HTML + Java
โข
HTML์ ์๋ฐ ์ฝ๋๋ฅผ ์ฝ์
ํ์ฌ ๋์ ์ธ ์น ํ์ด์ง ์์ฑ
โข
JSP ํ์ผ์ ์ต์ด ์์ฒญ ์ ์๋ธ๋ฆฟ ์ฝ๋๋ก ์๋ ๋ณํ๋๊ณ ์ปดํ์ผ๋จ
โข
์ดํ ์์ฒญ๋ถํฐ๋ ์ปดํ์ผ๋ ์๋ธ๋ฆฟ์ ์ฌ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ฒ ์๋ต
โข
๋ทฐ(View) = ํ๋ฉด ์ญํ ๋ก ์ฌ์ฉ
<%@ page language="java" %>
<html>
<body>
<h1>Hello, <%= request.getParameter("name") %></h1>
</body>
</html>
HTML
๋ณต์ฌ
JSTL (JSP Standard Tag Library)
JSP ์์ ํ๊ทธ ํ์์ผ๋ก ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ์ ์ฒ๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:forEach var="item" items="${list}">
<p>${item}</p>
</c:forEach>
HTML
๋ณต์ฌ
<c:if test="${age >= 20}">
<p>์ฑ์ธ์
๋๋ค.</p>
</c:if>
HTML
๋ณต์ฌ
EL (Expression Language)
JSP ์์ ${ } ๊ธฐํธ๋ก ์๋ฐ ๊ฐ์ฒด ๋ฐ ๋ณ์๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ๋๋ก ๋ง๋ ํํ์
โข
ํํ์ <%= %>, ์คํฌ๋ฆฝํ๋ฆฟ <% %> ๋ฑ์ผ๋ก ๋ณต์กํ๊ฒ ์ผ๋ ์๋ฐ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํํํ ์ ์์.
Filter
์๋ธ๋ฆฟ์ด๋ JSP ์คํ ์ ํ์ ์์ฒญ์ ๊ฐ๋ก์ฑ์ ๊ณตํต ์์
์ ์ฒ๋ฆฌํ๋ ๋๊ตฌ
โข
ํด๋ผ์ด์ธํธ ์์ฒญ์ด ์๋ธ๋ฆฟ์ด๋ JSP์ ๋๋ฌํ๊ธฐ ์ /ํ์ ์ฒ๋ฆฌํ ์ ์๋ ์ปดํฌ๋ํธ
โข
๋ก๊ทธ์ธ ์ฒดํฌ, ์ธ์ฝ๋ฉ ์ฒ๋ฆฌ, ๋ก๊น
๋ฑ์ ์ฌ์ฉ
@WebFilter("/secure/*")
public class AuthFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
if (request.getSession().getAttribute("user") == null) {
((HttpServletResponse) res).sendRedirect("/login.jsp");
} else {
chain.doFilter(req, res); // ๊ณ์ ์งํ
}
}
}
Java
๋ณต์ฌ
Session
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด, ์๋ฒ์ ๊ธฐ์ตํ๋ ์ํ ์ ๋ณด
โข
JSESSIONID ์ฟ ํค๋ก ์ฌ์ฉ์๋ฅผ ์๋ณ
Cookie
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด, ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋๋ ์์ ๋ฐ์ดํฐ
Listener
์น ์ฑ์์ ํน์ ์ด๋ฒคํธ(์ธ์
์์ฑ, ์ข
๋ฃ ๋ฑ)๊ฐ ๋ฐ์ํ๋ฉด ์๋์ผ๋ก ์คํ๋๋ ๊ฐ์์
โข
์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ด๋ฒคํธ(์๋ช
์ฃผ๊ธฐ, ์ธ์
, ์์ฒญ ๋ฑ)๋ฅผ ๊ฐ์งํ๊ณ ์ฒ๋ฆฌํ๋ ๊ตฌ์ฑ ์์
โข
์ด๋ฒคํธ ๊ธฐ๋ฐ ์ฒ๋ฆฌ (์: ์ธ์
์์ฑ/์๋ฉธ ๊ฐ์ง, ์ปจํ
์คํธ ์ด๊ธฐํ ๋ฑ)
์: ์ธ์ ์์ฑ/์๋ฉธ ๊ฐ์ง
@WebListener
public class SessionListener implements HttpSessionListener {
public void sessionCreated(HttpSessionEvent se) {
System.out.println("์ธ์
์์ฑ: " + se.getSession().getId());
}
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("์ธ์
์ข
๋ฃ: " + se.getSession().getId());
}
}
Java
๋ณต์ฌ
MVC (Model View Contrller)
์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ชจ๋ธ, ๋ทฐ, ์ปจํธ๋กค๋ฌ ์ญํ ๋ก ๋๋์ด์ ๊ฐ๋ฐํ๋ ๊ตฌ์กฐ
โข
๋ชจ๋ธ : ๋ฐ์ดํฐ์ ๋ก์ง์ ๋ด๋นํ๋ ์ญํ (Java : Service, DTO, DAO)
โข
๋ทฐ : ํ๋ฉด์ ๋ด๋นํ๋ ์ญํ (JSP)
โข
์ปจํธ๋กค๋ฌ : ํ๋ฆ์ ์ ์ดํ๋ ์ญํ (Servlet)
1.
ํด๋ผ์ด์ธํธ๊ฐ Controller(Servlet) ์ ์์ฒญ
2.
Controller ๋ ์์ฒญ์ ๋ถ์ํ๊ณ Model ํธ์ถ
3.
Model ์ด DB ์ฒ๋ฆฌ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ
4.
Controller ๋ ๊ฒฐ๊ณผ๋ฅผ request(์์ฒญ ๊ฐ์ฒด)์ ๋ด๊ณ View(JSP) ๋ก ์ ๋ฌ
5.
View(JSP) ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ํ๋ฉด์ ์ถ๋ ฅ
๊ทธ ์ธ ๊ธฐ์ ์์ (JSP ๊ธฐ๋ฐ ๊ฐ๋ฐ ์ ์์ฃผ ๋ฑ์ฅ)
๊ธฐ์ ์์ | ์ค๋ช
|
EL(Expression Language) | ${user.name} ํํ๋ก ์๋ฐ ๊ฐ์ฒด์ ์์ฑ ์ ๊ทผ |
JSTL (JSP Standard Tag Library) | <c:forEach>, <c:if> ๋ฑ ๋ฐ๋ณต, ์กฐ๊ฑด ํํ์ ํ๊ทธ๋ก ์ฒ๋ฆฌ |
Web.xml | ์๋ธ๋ฆฟ/ํํฐ/๋ฆฌ์ค๋ ๋ฑ์ ๋ฑ๋กํ๋ ์ค์ ํ์ผ |
RequestDispatcher | JSP ๋๋ ๋ค๋ฅธ ์๋ธ๋ฆฟ์ผ๋ก ์์ฒญ ์ ๋ฌ (forward, include) |
Cookie, Session API | ์ฌ์ฉ์ ์ํ ๊ด๋ฆฌ (๋ก๊ทธ์ธ ์ํ ๋ฑ) |
์์ฝ
๋ถ๋ฅ | ์ญํ |
Servlet | ์์ฒญ ์ฒ๋ฆฌ ๋ก์ง (์ปจํธ๋กค๋ฌ) |
JSP | ํ๋ฉด ์ถ๋ ฅ (๋ทฐ) |
Filter | ์์ฒญ/์๋ต ์ ํ์ ๊ฐ๋ก์ฑ์ ๋ก์ง ์ฝ์
|
Listener | ์๋ช
์ฃผ๊ธฐ๋ ์ด๋ฒคํธ ๊ฐ์ง ๋ฐ ์ฒ๋ฆฌ |



