๐ท JSP 2.3 & Servlet3.1 - response, pageContext,session, application, ์ก์
โ respones ๊ฐ์ฒด
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ํ HTTP ์๋ต์ ๋ํ๋ด๋ ๊ฐ์ฒด
๐ก response ๊ฐ์ฒด์ ์ฃผ์ ๋ฉ์๋๋ค
๐ response ์์ )
- ํ๋ฉด์์ฑ ๋ฐ ์ก์
์ฐ๊ฒฐ ์ฝ๋
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>response ๊ฐ์ฒด</title> </head> <body> JSP ํ๊ฒฝ ์ค์ ์ ์ํ ๋ค์ด๋ก๋ ํ์ด์ง ์ ๋๋ค. /* response2์ก์ ์์ฉ, get๋ฐฉ์ ์ด์ฉ */ <form action="response2.jsp" method="get"> /* select ์ด๋ฆ : downLoad */ <select name="download"> <%-- selectํ์ ์ต์ ์ฌ์ฉ */ <option selected value="1">JDK</option> <option value="2">Tomcat</option> <option value="3">eclipes</option> <option vlaue="4">oracle</option> </select> /* submit ํ์ ๋ฒํผ ์์ฑ, ๋ฒํผ ์ด๋ฆ : ์ด๋ */ <input type="submit" value="์ด๋"> </form> </body> </html>
โถ ์ถ๋ ฅ๊ฒฐ๊ณผ
- ์ก์
์ฝ๋
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>response ๊ฐ์ฒด </title> </head> <body> <% /* // Stringํ์ ๋ณ์ strsite ์ ์ธํ download ํ๋ผ๋ฏธํฐ ๋์ */ String strSite=request.getParameter("download"); switch(strSite) /* 1 ์ ํ์ http://java.sun.com ๋ก ์ด๋ response.sendRedirect ์ ๋์ผํ๋ค */ { case "1" : out.print("<script>" +"location.href='http://java.sun.com'"+ "</script>" ); break; /* 2์ ํ์ ๋ฐ๋ก "http://tomcat.apache.org" ํ์ด์ง๋ก ์ด๋ */ case "2" : response.sendRedirect("http://tomcat.apache.org"); break; /* 3์ ํ์ ๋ฐ๋ก "http://www.eclipse.org" ํ์ด์ง๋ก ์ด๋ */ case "3": response.sendRedirect("http://www.eclipse.org"); break; /* ๊ธฐ๋ณธ "http://www.oracle.com" ํ์ด์ง๋ก ์ด๋ */ default: response.sendRedirect("http://www.oracle.com"); break; } %> </body> </html>
โถ ์ถ๋ ฅ๊ฒฐ๊ณผ (JDK ์ ํ์)
โ pageContext ๊ฐ์ฒด
- ๋ค๋ฅธ ๋ด์ฅ ๊ฐ์ฒด๋ฅผ ์ป์ด๋ด๊ฑฐ๋ ํ์ฌ ํ์ด์ง์ ์์ฒญ,์๋ต์ ์ ์ด๊ถ์ ๋ค๋ฅธ ํ์ด์ง๋ก ๋๊ฒจ์ฃผ๋ ๊ฐ์ฒด
- ๋ด์ฅ ๊ฐ์ฒด์ ์์ฑ์ ์ ์ดํ๋ค
๐ก pageContext ๊ฐ์ฒด์ ์ฃผ์ ๋ฉ์๋๋ค
๐ pageContext ์์ )
- getOut ํ์ฉ
<%@ page language="java" contentType="text/html; charset=UTF-8" %> <!DOCTYPE HTML> <HTML lang="ko"> <HEAD> <TITLE> pageContext ๊ฐ์ฒด </TITLE> </HEAD> <BODY> <% // out. / getOut() : ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋ค out.println("ํ์๋ ํ์ํฉ๋๋ค.<BR>"); pageContext.getOut().print("๋ง์ผ๋ฆฌ์ง๋ฅผ ๋๋ฆฝ๋๋ค<br>"); pageContext.getOut().println("๋ง์ผ๋ฆฌ์ง 100์ ์ด ์ง๊ธ๋์์ต๋๋ค.<BR>"); out.println("์ ํฌ ์ฌ์ดํธ๋ฅผ ์ ์ฉํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค."); %> </BODY> </HTML>
โถ ์ถ๋ ฅ๊ฒฐ๊ณผ
- include,flush ํ์ฉ
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>pageContext ๊ฐ์ฒด</title> </head> <body> <% out.print("ํ์๋ ํ์ํฉ๋๋ค.<br>"); out.flush(); // ์ถ๋ ฅ๋ฒํผ ๋ด์ฉ์ ๋น์ด๋ค // include : ์์์ ์ผ๋ก ์ง์ ๋ ํ์ด์ง๋ก ์ ์ด๊ถ์ ๋๊ธด๋ค, ์ ์ด์ฒ๋ฆฌ๊ฐ ๊ธ๋๋ฉด ์๋ ํ์ด์ง๋ก ์ ์ด๊ถ์ด ๋์ด์จ๋ค pageContext.include("pageContext3.jsp"); out.println("์ ํฌ ์ฌ์ดํธ๋ฅผ ์ ์ฉํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค."); %> </body> </html>
- pageContext3 ์ฝ๋
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>pageContext ๊ฐ์ฒด</title> </head> <body> <% out.println("๋ง์ผ๋ฆฌ์ง 100์ ์ ์ง๊ธํด ๋๋ฆฝ๋๋ค.(pageContext3)<BR>"); out.flush(); %> </body> </html>
โถ ์ถ๋ ฅ๊ฒฐ๊ณผ
- setAttribute, getAttribute ์ฌ์ฉ (null ์๋๊ฒฝ์ฐ)
<%@ page language="java" contentType="text/html; charset=UTF-8" %> <!DOCTYPE HTML> <HTML lang="ko"> <HEAD> <TITLE> pageContext ๊ฐ์ฒด </TITLE> </HEAD> <BODY> <% // setAttribute(String name, Object value) : ์ด๋ฆ์ด name์ธ ์์ฑ์ ๊ฐ์ value๋ก ์ง์ ํ๋ค // setAttribute("pageValue","pageContext Example") : ์ด๋ฆ์ด pageValue์ธ ์์ฑ์ ๊ฐ์ pageContext Example๋ก ์ง์ ํ๋ค pageContext.setAttribute("pageValue","pageContext Example"); Object code=pageContext.getAttribute("pageValue"); // code๊ฐnull์ด ์๋๋ผ๋ฉด if (code != null){ /*์ฝ์ด๋๋ฆฐ ์์ฑ์ object์ด๋ฏ๋ก ํ๋ณํ์ ํด์ผํ๋ค : (String)code : ๋ฌธ์์ด๋ก ํ๋ณํ */ // code๋ฅผ String์ผ๋ก ํ๋ณํํ์ฌ ๋ฌธ์์ด๋ณ์ strValue์ ์ ์ฅํ๋ค String strValue=(String)code; // strValue๋ฅผ ์ถ๋ ฅํ๋ค out.println("page Value=" + strValue + "<BR>"); } else{ // null ์ด๋ผ๋ฉด // ์ถ๋ ฅํ๋ค out.println("Not found!!"); } %> </BODY> </HTML>
โถ ์ถ๋ ฅ๊ฒฐ๊ณผ
- setAttribute, getAttribute ์ฌ์ฉ (null ์ผ๊ฒฝ์ฐ)
<%@ page language="java" contentType="text/html; charset=UTF-8" %> <!DOCTYPE HTML> <HTML lang="ko"> <HEAD> <TITLE> pageContext ๊ฐ์ฒด </TITLE> </HEAD> <BODY> <% // setAttribute(String name, Object value) : ์ด๋ฆ์ด name์ธ ์์ฑ์ ๊ฐ์ value๋ก ์ง์ ํ๋ค // setAttribute("pageValue","pageContext Example") : ์ด๋ฆ์ด pageValue์ธ ์์ฑ์ ๊ฐ์ pageContext Example๋ก ์ง์ ํ๋ค pageContext.setAttribute("pageValue",null); Object code=pageContext.getAttribute("pageValue"); // code๊ฐnull์ด ์๋๋ผ๋ฉด if (code != null){ /*์ฝ์ด๋๋ฆฐ ์์ฑ์ object์ด๋ฏ๋ก ํ๋ณํ์ ํด์ผํ๋ค : (String)code : ๋ฌธ์์ด๋ก ํ๋ณํ */ // code๋ฅผ String์ผ๋ก ํ๋ณํํ์ฌ ๋ฌธ์์ด๋ณ์ strValue์ ์ ์ฅํ๋ค String strValue=(String)code; // strValue๋ฅผ ์ถ๋ ฅํ๋ค out.println("page Value=" + strValue + "<BR>"); } else{ // null ์ด๋ผ๋ฉด // ์ถ๋ ฅํ๋ค out.println("Not found!!"); } %> </BODY> </HTML>
โถ ์ถ๋ ฅ๊ฒฐ๊ณผ
โ session ๊ฐ์ฒด
- ์๋ฒ์ ์ฐ๊ฒฐ์ด ๋์ด์ ธ๋ ๊ฐ์ ์ฐ๊ฒฐ์ ํตํด ํด๋ผ์ด์ธํธ์ ์ ๋ณด๋ฅผ ์ ์งํ๋๋ก ํ๋ ๊ฐ์ฒด
๐ก session ๊ฐ์ฒด์ ์ฃผ์ ๋ฉ์๋๋ค
๐ session ์์ )
- ์ธ์
๋ชจ์ ์ฝ๋
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>session ๊ฐ์ฒด</title> </head> <body> // session.invalidate() : ์ธ์ ์ด๊ธฐํ <% session.invalidate(); %> // session2์ ์ก์ ์ฌ์ฉ, post ๋ฉ์๋ ์ฌ์ฉ <FORM action="session2.jsp" Method="post"> ์์ด๋ : <input type="text" name="strId"> <BR> ๋น๋ฐ๋ฒํธ : <input type="password" name="strPwd"> <BR><BR> <input type="submit" Value="๋ก๊ทธ์ธ"> <input type="reset" Value="์ทจ์"> </Form> </body> </html>
- ์ธ์
์ค์ ์ฝ๋
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>session ๊ฐ์ฒด</title> </head> <body> <% // ๋ฌธ์์ด ๋ณ์ Id ์ ์ธํ strID๋ฅผ ํ๋ผ๋ฏธํฐ ์ธ์๋ก ๋ฐ๋๋ค String Id = request.getParameter("strId"); // ์ธ์ ์ ์ ์ฅ๋ ์๋ฃ๋ ๋ค์ getAttribute()๋ฉ์๋๋ฅผ ์ด์ฉํด ์กฐํํ๋ค // ์ธ์ ์ ์ ์ฅ๋ id๋ฅผ ์กฐํํด์ ๊ทธ ๊ฐ์ด null์ด๋ผ๋ฉด if (session.getAttribute("sessId") == null){ // ์ธ์ ์ id๋ฅผ ์์์ ์ ๋ฌ๋ฐ์ ์ธ์๊ฐ : ๋ณ์Id ๊ฐ์ผ๋ก ์ค์ ํ๋ค session.setAttribute("sessId", Id); } //์ธ์ ์ ์ง์๊ฐ์ 5์ด๋ก ์ค์ session.setMaxInactiveInterval(5); // ๋ฌธ์์ด ๋ณ์ sessId์ ์ธํ ์ธ์ ์์ ๋ฐ์ sessId๊ฐ์ ๋ฌธ์ํ์ผ๋ก ํ๋ณํํ์ฌ ํ ๋นํ๋ค String sessId=(String)session.getAttribute("sessId"); // ๋ฌธ์์ด ๋ณ์ strSessionId ์ ์ธํ ์ธ์ ์์ ์ป์ Id๊ฐ์ ํ ๋นํ๋ค String strSessionId = session.getId(); // ์ ์ํ ๋ณ์ intTime์ ์ธ ํ ์ธ์ ์ ์ง์๊ฐ์ ํ ๋นํ๋ค int intTime=session.getMaxInactiveInterval(); %> // sessId๊ฐ ์ถ๋ ฅ <B> <%=sessId %> ๋ ํ์ํฉ๋๋ค. </B> <P> ์ธ์ ID : <%=strSessionId %> <BR> ์ธ์ ์๊ฐ : <%=intTime %> </body> </html>
โถ ์ถ๋ ฅ๊ฒฐ๊ณผ
โถ ์ถ๋ ฅ๊ฒฐ๊ณผ
- ์ธ์
์๊ฐ ์ถ๋ ฅ
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- text ๊ฐ์ฒด import --> <%@ page import="java.text.*" %> <!-- SimpleDateFormat ๊ฐ์ฒด ์์ฑ --> <% SimpleDateFormat f = new SimpleDateFormat("yyyy-M-d hh:mm:ss"); %> <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>session ๊ฐ์ฒด</title> </head> <body> <% /* longํ์ lastTime ๋ณ์ ์์ฑ, ์ธ์ ์์ ๋ง์ง๋ง์ผ๋ก ์ ์ํ ์๊ฐ ํ ๋น */ long lastTime=session.getLastAccessedTime(); /* longํ์ createTime ๋ณ์ ์์ฑ, ์ธ์ ์์ฑ์๊ฐ ํ ๋น */ long createTime=session.getCreationTime(); /* longํ์ useTime ๋ณ์ ์์ฑ, (์ธ์ ๋ง์ง๋ง ์ ์์๊ฐ - ์ธ์ ์์ฑ์๊ฐ) / 1000 ๊ฐ ํ ๋น */ long useTime=(lastTime - createTime) / 1000; %> <!-- ๋งจ ์ ์์ฑํ ํ์์ผ๋ก lastTime,createTime ๊ฐ ์ถ๋ ฅ --> <%=f.format(lastTime) %><br> <%=f.format(createTime) %><br> <!-- useTime ๋ณ์ ๊ฐ ์ถ๋ ฅ --> <%=useTime %>์ด ๋์ ์ฌ์ดํธ์ ์ ์๋์ด ์์ต๋๋ค. </body> </html>
โถ ์ถ๋ ฅ๊ฒฐ๊ณผ
โ application ๊ฐ์ฒด
- ํด๋น ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์คํ ํ๊ฒฝ์ ์ ๊ณตํ๋ ์๋ฒ์ ์๋ฒ ์ธก ์์์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๋ฉ์๋
๐ก application ๊ฐ์ฒด์ ์ฃผ์ ๋ฉ์๋๋ค
๐ application ์์ )
- application ์ ๋ณด์ถ๋ ฅ
<%@ page language="java" contentType="text/html; charset=UTF-8" %> <!DOCTYPE HTML> <HTML lang="ko"> <HEAD> <TITLE> application ๊ฐ์ฒด </TITLE> </HEAD> <BODY> <TABLE border=1> <TR> <TD><B> Server Information </B></TD> <TD><B> ๊ฐ </B></TD> </TR> <% // getServletInfo() : JSP / ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ์ด๋ฆ๊ณผ ๋ฒ์ ๋ฐํ out.println ("<TR><TD>์๋ฒ์ ๋ณด</TD><TD>" + application.getServerInfo() + "</TD></TR>"); // getMimeType(ํ์ผ๋ช ) : ํ์ผ์ MIME ํ์ ๋ฐํ out.println ("<TR><TD>MIME ํ์ </TD><TD>" + application.getMimeType("application_1.jsp") + "</TD></TR>"); // getResource(path) : path์ ์ง์ ๋ ์์์ url ๊ฐ์ฒด๋ก ๋ฐํ out.println ("<TR><TD>URL ์ ๋ณด</TD><TD>" + application.getResource("/") + "</TD></TR>"); // getRealPath(path) : ์ง์ ํ ๊ฒฝ๋ก๋ฅผ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์คํ ์์ ๊ฒฝ๋ก๋ก ๋ณ๊ฒฝํ์ฌ ๋ฐํ out.println ("<TR><TD>๋ก์ปฌ๊ฒฝ๋ก</TD><TD>" + application.getRealPath("/") + "</TD></TR>"); // getContext(path) : path์ ์ง์ ๋ ์์์ context์ ๋ณด(์ํฉ) ๋ฐํ out.println ("<TR><TD>์ปจํ ์คํธ์ ๋ณด</TD><TD>" + application.getContext("/") + "</TD></TR>"); %> </TABLE> application.log("log message"); // ๋ก๊ทธ ๊ธฐ๋ก </BODY> </HTML>
โถ ์ถ๋ ฅ๊ฒฐ๊ณผ
- application set,get Attribute
<%@ page language="java" contentType="text/html; charset=UTF-8" %> <!DOCTYPE HTML> <HTML lang="ko"> <HEAD> <TITLE> application ๊ฐ์ฒด </TITLE> </HEAD> <BODY> <%-- ์๋ฒ ์ ์ง ๋์ด์์ผ๋ฉด ์ ๋ณด๊ฐ ์ ์ง๋๋ค --%> <% // setAttribute(name,value) : name์ ์์ฑ๊ฐ์ value๋ก ์ ์ฅ // Name ์ ์์ฑ๊ฐ์ ํ๊ธธ๋์ผ๋ก ์ ์ฅ application.setAttribute("Name", "ํ๊ธธ๋"); application.setAttribute("Age", "20์ธ"); application.setAttribute("Email", "abcd@abcd.com"); application.setAttribute("Job", "Programmer"); application.setAttribute("Hobby", "๋ ์"); // removeAttribute(name) : name ์์ฑ๊ฐ์ ์ญ์ ํ๋ค. application.removeAttribute("Job"); %> <!-- getAttributeNames() : ํ์ฌ application ๊ฐ์ฒด์ ์ ์ฅ๋ ์์ฑ๋ค์ ์ด๋ฆ์ ์ด๊ฑฐํ์์ผ๋ก ๊ฐ์ ธ์จ๋ค.--> ์ด ๋ฆ : <%=application.getAttribute("Name") %> <BR> ๋ ์ด : <%=application.getAttribute("Age") %> <BR> ์ด๋ฉ์ผ : <%=application.getAttribute("Email") %> <BR> ์ง ์ : <%=application.getAttribute("Job") %> <BR> ์ทจ ๋ฏธ : <%=application.getAttribute("Hobby") %> </BODY> </HTML>
โถ ์ถ๋ ฅ๊ฒฐ๊ณผ
โ ์์ญ ๊ฐ์ฒด(Scope) ์ ์์ฑ(Attribute)
- ๋ด์ฅ ๊ฐ์ฒด๋ค ์ค session, request, application ๊ฐ์ฒด๋ค์ ํด๋น ๊ฐ์ฒด์ ์ ์๋ ๋ฒ์ ๋ด์์ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ๋ฅ
- ๊ณต์ ๋๋ ๋ฐ์ดํฐ๋ฅผ ์์ฑ(Attribute)์ด๋ผ๊ณ ํ๊ณ
- ์์ฑ์ ๊ณต์ ํ ์ ์๋ ์ ํจ ๋ฒ์๋ฅผ ์์ญ(Scope)๋ผ๊ณ ํ๋ค
- request ๊ฐ์ฒด โ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์ฒ๋ฆฌ๋๋ ๋์ ์์ฑ ์ฌ์ฉ ๊ฐ๋ฅ
- session ๊ฐ์ฒด โ ์ธ์
์ด ์ ์ง๋๊ณ ์๋ ๋ฒ์ ์์์ ์์ฑ ์ฌ์ฉ ๊ฐ๋ฅ
- application ๊ฐ์ฒด โ ํด๋น ์น ์ ํ๋ฆฌ์ผ์ด์
์ด ์คํ๋๊ณ ์๋ ๋์ ์์ฑ ์ฌ์ฉ ๊ฐ๋ฅ
- page ์์ญ ๊ฐ์ฒด - ์ค์ง ํ๋์ ํ์ด์ง ๋ด์์๋ง ์์ฑ ์ฌ์ฉ ๊ฐ๋ฅ
- page ๋ด์ฅ ๊ฐ์ฒด๊ฐ ์๋ pageContext ๋ด์ฅ ๊ฐ์ฒด๋ฅผ ํตํด์๋ง ์ ๊ทผ ๊ฐ๋ฅํ ์์ญ
๐ก ์์ญ
โ ์ก์ ํ๊ทธ
- JSPํ์ด์ง์์ HTML ํ๊ทธ ํํ๋ก ๋ค๋ฅธ ํ์ด์ง์ ์๋ธ๋ฆฟ์ด๋ ์๋ฐ๋น์ ๊ฐ์ฒด์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ
โ JSP ์์ ์ ๊ณตํ๋ ์ก์
ํ๊ทธ ์ข
๋ฅ
1. ํ์ด์ง ํ๋ฆ ์ ์ด ์ก์
(forward/include ์ก์
)
2. ์๋ฐ๋น ์ฌ์ฉ ์ก์
(useBean ์ก์
)
3. ์ ํ๋ฆฟ ์ฌ์ฉ ์ก์
(plugin ์ก์
)
โ forward ์ก์
- pageContext ๋ด์ฅ ๊ฐ์ฒด์ forward() ๋ฉ์๋๋ฅผ ํ๊ทธ๋ก ๊ตฌํํ ๊ธฐ๋ฅํ๋ค
- ํ์ฌ ํ์ด์ง์ ์์ฒญ๊ณผ ์๋ต์ ๊ดํ ์ฒ๋ฆฌ๊ถ์ page ์์ฑ์ ์ง์ ๋ ํ์ด์ง๋ก ๋๊ธฐ๋ ์ญํ
- ์์ฒญ์ ์ฒ๋ฆฌํ์ฌ ์๋ต์ด ์๋ฃ๋์ด๋ ์๋ ํ์ด์ง๋ก ์ ์ด๊ถ์ด ๋์ด๊ฐ์ง ์๊ณ ๋ชจ๋ ์๋ต์ด ์ข
๋ฃ๋๋ค
๐ก ์ฌ์ฉ๋ฒ
โ include ์ก์
- ํ์ฌ ํ์ด์ง์ ์์ฒญ๊ณผ ์๋ต์ ๊ดํ ์ฒ๋ฆฌ๊ถ์ page ์์ฑ์ ์ง์ ๋ ํ์ด์ง๋ก ๋๊ธฐ๋ ์ญํ
- ์์ฒญ์ ์ฒ๋ฆฌํ์ฌ ์๋ต์ด ์๋ฃ๋๋ฉด ์๋ ํ์ด์ง๋ก ์ ์ด๊ถ์ ๋ฐํ
๐ก ์ฌ์ฉ๋ฒ