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);
}
'๐๋ฐฑ์๋ : BackEnd' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SpringFramework - DI (2) | 2024.01.01 |
---|---|
MVC Pattern, Session, Cookie (1) | 2024.01.01 |
[Servlet] (0) | 2023.12.27 |
[SpringBoot ํ๋ฉฐ ๋ง์ฃผ์น ์ค๋ฅ] Transaction silently rolled back because it has been marked as rollback-only (0) | 2023.10.09 |
[SpringBoot] dto์ ์์น (0) | 2023.07.31 |