πŸ’» Programming/JSP

[JSP] Implicit Objects ( λ¬΅μ‹œμ  객체듀 )

μΌ€μ΄μΉ˜ 2019. 2. 15. 13:28

JSP Implicit ObjectsλŠ” Java κ°μ²΄λ“€μž…λ‹ˆλ‹€. λͺ…μ‹œμ μœΌλ‘œ κ°œλ°œμžκ°€ μ„ μ–Έν•˜μ§€ μ•Šμ•„λ„ JSP Containerμ—μ„œ μ œκ³΅ν•˜λŠ” 객체듀이라고 λ³΄μ‹œλ©΄ λ˜κ² μŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ JSP Implicit Objects λ₯Ό pre-defined λ³€μˆ˜λΌκ³  ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€.

 

JSP λŠ” μ•„ν™‰κ°€μ§€μ˜ Implicit Objectsλ₯Ό μ§€μ›ν•©λ‹ˆλ‹€. 저도 μ•„λŠ” 객체듀이 λˆˆμ— λ³΄μ΄λ„€μš”.

 

ObjectDescription
requestThis is the HttpServletRequest object associated with the request.
responseThis is the HttpServletResponse object associated with the response to the client.
outThis is the PrintWriter object used to send output to the client.
sessionThis is the HttpSession object associated with the request.
applicationThis is the ServletContext object associated with application context.
configThis is the ServletConfig object associated with the page.
pageContextThis encapsulates use of server-specific features like higher performance JspWriters.
pageThis is simply a synonym for this, and is used to call the methods defined by the translated servlet class.
ExceptionThe Exception object allows the exception data to be accessed by designated JSP.


The request Object:

request κ°μ²΄λŠ” javax.servlet.http.HttpServletRequest 객체의 μΈμŠ€ν„΄μŠ€μž…λ‹ˆλ‹€. μ‚¬μš©μžκ°€ νŽ˜μ΄μ§€λ₯Ό μš”μ²­ν•  λ•Œλ§ˆλ‹€ JSP engine 이 ν•΄λ‹Ή μš”μ²­μ— λŒ€ν•œ μƒˆλ‘œμš΄ request객체λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. request κ°μ²΄λŠ” HTTP header 정보λ₯Ό μ–»μ–΄μ˜€κΈ°μœ„ν•œ λ©”μ†Œλ“œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. form data, cookies, HTTP methods같은 정보듀이 헀더정보에 있겠죠.

request 객체와 κ΄€λ ¨λœ λ©”μ†Œλ“œλ“€μ— λŒ€ν•œ 정보 및 μ‚¬μš©λ²•μ€ 였λ₯Έμͺ½ λ§ν¬μ—μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.  JSP - Client Request.


The response Object:

response κ°μ²΄λŠ” javax.servlet.http.HttpServletResponse 객체의 μΈμŠ€ν„΄μŠ€μž…λ‹ˆλ‹€. μ„œλ²„κ°€ request 객체λ₯Ό λ§Œλ“œλŠ” κ²ƒμ²˜λŸΌ, ν΄λΌμ΄μ–ΈνŠΈλ‘œ λ³΄λ‚΄κΈ°μœ„ν•œ response 객체도 λ§Œλ“­λ‹ˆλ‹€.

response κ°μ²΄λŠ” λ˜ν•œ μƒˆλ‘œμš΄ HTTP헀더 생성을 λ‹€λ£¨κΈ°μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. 이 객체λ₯Ό ν†΅ν•΄μ„œ JSP κ°œλ°œμžλ“€μ€ μΏ ν‚€, λ‚ μ§œ μŠ€νƒ¬ν”„,  HTTP μƒνƒœ μ½”λ“œλ“±μ„ μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

response 객체와 κ΄€λ ¨λœ λ©”μ†Œλ“œλ“€μ— λŒ€ν•œ 정보 및 μ‚¬μš©λ²•μ€ 우츑 λ§ν¬μ—μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.  JSP - Server Response.


The out Object:

out κ°μ²΄λŠ” javax.servlet.jsp.JspWriter 객체의 μΈμŠ€ν„΄μŠ€μ΄λ©° contentλ₯Ό responseμ•ˆμ— 보내기 μœ„ν•΄μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.

처음의 JspWriter κ°μ²΄λŠ” νŽ˜μ΄μ§€μ˜ 버퍼 μ‚¬μš©μ—¬λΆ€μ— 따라 λ‹€λ₯΄κ²Œ μ΄ˆκΈ°ν™”λ©λ‹ˆλ‹€.  Buffering κΈ°λŠ₯은 page λ””λ ‰ν‹°λΈŒμ˜ buffered='false' 속성을 ν†΅ν•΄μ„œ μ‰½κ²Œ off ν•  수 μžˆμŠ΅λ‹ˆλ‹€. JspWriter κ°μ²΄λŠ” java.io.PrintWriter ν΄λž˜μŠ€μ™€ 거의 λ™μΌν•œ λ©”μ†Œλ“œλ“€μ„ κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ JspWriterλŠ” μΆ”κ°€μ μœΌλ‘œ 버퍼링을 닀루기 μœ„ν•œ λ©”μ†Œλ“œλ“€μ„ κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. PrintWriter κ°μ²΄μ™€λŠ” λ‹€λ₯΄κ²Œ JspWriter λŠ” IOExceptions을 λ˜μ§‘λ‹ˆλ‹€.

 

 boolean, char, int, double, object, String, etc. 을 쓰고싢을 λ•Œ μ‚¬μš©ν•˜λŠ” λ©”μ†Œλ“œλŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

MethodDescription
out.print(dataType dt)Print a data type value
out.println(dataType dt)Print a data type value then terminate the line with new line character.
out.flush()Flush the stream.


The session Object:

sessionκ°μ²΄λŠ” javax.servlet.http.HttpSession의 μΈμŠ€ν„΄μŠ€μ£ .  Java Servlets의 μ„Έμ…˜κ³Ό λ™μΌν•œ 역할을 ν•œλ‹€κ³  λ³΄μ‹œλ©΄ λ©λ‹ˆλ‹€.

session κ°μ²΄λŠ” μ‚¬μš©μžκ°€ μ—¬λŸ¬λ²ˆ μš”μ²­μ„ ν•˜κ²Œ 될 λ•Œ κ·Έ μš”μ²­λ“€ 사이에 μ„Έμ…˜μ„ 좔적 및 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.  

session 객체의 μ‚¬μš©λ²•μ€ 우츑 λ§ν¬μ—μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.  JSP - Session Tracking.


The application Object:

application κ°μ²΄λŠ” ServletContext객체의 wrapperκ°μ²΄μž…λ‹ˆλ‹€. μ‹€μ œλ‘œλŠ” javax.servlet.ServletContext 객체의 μΈμŠ€ν„΄μŠ€μž…λ‹ˆλ‹€.

 μ΄ κ°μ²΄λŠ” JSP page 생λͺ…μ£ΌκΈ° 전체λ₯Ό λŒ€ν‘œν•œλ‹€κ³  λ³΄μ‹œλ©΄ λ©λ‹ˆλ‹€. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ’…λ£Œλ˜κΈ° μ „κΉŒμ§€ μ‚΄μ•„μžˆλŠ” 객체죠. JSP νŽ˜μ΄μ§€κ°€ μ΄ˆκΈ°ν™”λ  λ•Œ μƒμ„±λ˜κ³   jspDestroy()λ©”μ†Œλ“œμ— μ˜ν•΄ JSPνŽ˜μ΄μ§€κ°€ μ†Œλ©Έλ  λ•Œ 이 객체도 μ†Œλ©Έλ©λ‹ˆλ‹€.

 application 객체에 속성을 μΆ”κ°€ν•¨μœΌλ‘œμ¨ ν•΄λ‹Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μ„±ν•˜λŠ” λͺ¨λ“  JSP νŒŒμΌλ“€μ΄ 이곳에 μ ‘κ·Όν•  수 μžˆλŠ” κΆŒν•œμ΄ μƒκΈ°κ²Œ λ©λ‹ˆλ‹€.

Application 객체의 κ°„λ‹¨ν•œ μ‚¬μš©λ²•μ€ 우츑 λ§ν¬μ—μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€.  JSP - Hits Counter


The config Object:

config κ°μ²΄λŠ” javax.servlet.ServletConfig 의 μΈμŠ€ν„΄μŠ€μž…λ‹ˆλ‹€.  

이 κ°μ²΄λŠ” JSP κ°œλ°œμžκ°€ Servlet μ΄λ‚˜ JSP μ—”μ§„ μ΄ˆκΈ°ν™” νŒŒλΌλ―Έν„° ( paths λ˜λŠ” file μœ„μΉ˜ λ“± )에 μ ‘κ·Όν•  수 μžˆλ„λ‘ ν•΄μ€λ‹ˆλ‹€.

많이 쓰이지 μ•ŠλŠ” 객체이며 μ•„λ§ˆ μ“°κ²Œ λœλ‹€λ©΄ μ•„λž˜μ™€ 같이 μ“°λŠ” 것 λ§κ³ λŠ” 정말 쓸일이 없을 κ²ƒμž…λ‹ˆλ‹€. 


config.getServletName();


이건 μ„œλΈ”λ¦Ώλͺ…을 μ–»μ–΄μ˜€λŠ” λ©”μ†Œλ“œμž…λ‹ˆλ‹€. WEB-INF\web.xml 파일의   <servlet-name> μš”μ†Œμ— λ“€μ–΄μžˆλŠ” 이름을 μ–»μ–΄μ˜€λŠ” κ²ƒμž…λ‹ˆλ‹€. 


The pageContext Object:

pageContext κ°μ²΄λŠ”  javax.servlet.jsp.PageContext 객체의 μΈμŠ€ν„΄μŠ€μž…λ‹ˆλ‹€.   pageContext κ°μ²΄λŠ” JSP page 전체λ₯Ό λŒ€ν‘œν•©λ‹ˆλ‹€.

 μ΄ κ°μ²΄λŠ” νŽ˜μ΄μ§€ 정보λ₯Ό μ–»μ–΄μ˜€κΈ° μœ„ν•œ μˆ˜λ‹¨μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.  

이 κ°μ²΄λŠ” 각 μš”μ²­λ§ˆλ‹€ request 와 response객체둜의 래퍼런슀λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€. application, config, session, 그리고 out 객체듀은 이 객체의 속성에 μ ‘κ·Όν•΄μ„œ μ–»μ–΄μ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€.  pageContext κ°μ²΄λŠ” λ˜ν•œ ν•΄λ‹Ή JSP pageμ—μ„œ λ°œμƒλœ directives의 정보λ₯Ό μ €μž₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. ( buffering 정보,  errorPageURL, 그리고 page scope같은 정보듀 말이죠 ).

 PageContext ν΄λž˜μŠ€λŠ” PAGE_SCOPE, REQUEST_SCOPE, SESSION_SCOPE, 그리고 APPLICATION_SCOPE ν•„λ“œλ“€μ„ μ •μ˜ν•©λ‹ˆλ‹€. 40개 μ΄μƒμ˜ λ©”μ†Œλ“œλ₯Ό μ œκ³΅ν•˜λ©° κ·Έ 쀑 λ°˜μ€ javax.servlet.jsp.JspContext ν΄λž˜μŠ€μ—μ„œ 상속받은 λ©”μ†Œλ“œλ“€μž…λ‹ˆλ‹€.

κ°€μž₯ μ€‘μš”ν•œ λ©”μ†Œλ“œ 쀑 ν•˜λ‚˜λŠ” removeAttribute인데 이 λ©”μ†Œλ“œλŠ”  ν•˜λ‚˜ λ˜λŠ” λ‘κ°œμ˜ νŒŒλΌλ―Έν„°λ₯Ό λ°›μŠ΅λ‹ˆλ‹€. pageContext.removeAttribute ("attrName") λŠ” λͺ¨λ“  scopeμ—μ„œ attrName 속성을 μ œκ±°ν•©λ‹ˆλ‹€. μ•„λž˜μ— λ‚˜μ˜¨ λ¬Έμž₯은 page scopeμ—μ„œλ§Œ ν•΄λ‹Ή 속성을 μ œκ±°ν•©λ‹ˆλ‹€. 

 

  pageContext.removeAttribute("attrName", PAGE_SCOPE);


pageContext 객체에 λŒ€ν•œ μ‚¬μš©λ²•μ€ 우츑 λ§ν¬μ—μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€. JSP - File Uploading.


The page Object:

μ‹€μ œ νŽ˜μ΄μ§€λ₯Ό μ°Έμ‘°ν•˜κ³  μžˆλŠ” κ°μ²΄μž…λ‹ˆλ‹€. JSP page전체λ₯Ό λŒ€ν‘œν•˜λŠ” 객체라고 μƒκ°ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€..

이 νŽ˜μ΄μ§€ κ°μ²΄λŠ” μ‹€μ œλ‘œ μžλ°”μ—μ„œ λ‚˜μ˜€λŠ” this 객체의 λ™μ˜μ–΄λΌκ³  λ³΄μ‹œλ©΄ λ˜κ² μŠ΅λ‹ˆλ‹€.  


The exception Object:

exception κ°μ²΄λŠ” wrapper κ°μ²΄μž…λ‹ˆλ‹€. 이전 νŽ˜μ΄μ§€μ—μ„œ λ˜μ Έμ§„ exception을 κ°€μ§€κ³  있죠.  뭐 이거야 μžλ°”λ₯Ό ν•˜μ‹  뢄듀이라면 μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό μœ„ν•œ 객체라고 금방 μ•„μ‹€ κ²λ‹ˆλ‹€. 뭐 더 μ„€λͺ…ν• κ²Œ μ—†λ„€μš”.

이 객체에 λŒ€ν•œ μ‚¬μš©λ²•μ€ 우츑 λ§ν¬μ—μ„œ ν™•μΈν•˜μ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€. JSP - Exception Handling.

 

 

 

 

Reference : http://www.tutorialspoint.com/jsp/jsp_implicit_objects.htm