본문 바로가기

개발공부/WEB

Spring : JSP 스크립트 요소 기능(2)

728x90
반응형

 

지난글

https://tigre911.tistory.com/70

 

Spring : JSP 스크립트 요소 기능(1)

JSP 스크립트 요소 JSP 스크립트 요소란 JSP 페이지에서 여러 가지 동적인 처리를 제공하는 기능으로 <% %> 기호 안에 자바 코드로 구현한다. <% %> 기호를 스크립트릿 이라고 부른다. 스크립트 요소

tigre911.tistory.com

 

* 내장 객체(내장 변수) 기능

 

JSP 페이지의 내장 객체(내장 변수)란 JSP가 서블릿으로 변환될 때 컨테이너가 자동으로 생성시키는 서블릿 멤버 변수를 말한다. 즉, 서블릿으로 구현시 자주 사용했던 객체를 개발자가 일일이 만드는 것이 아니라 서블릿으로 변환 시 컨테이너가 자동으로 생성하여 사용하게끔 제공하는 것이다.

 

<JSP에서 제공하는 내장 객체들>

 

내장 객체 서블릿 타입 설명
request javax.servlet.http.HttpServletRequest 클라이언트의 요청 정보를 저장한다.
response javax.servlet.http.HttpServleResponse 응답 정보를 저장한다.
out javax.servlet.jsp.JspWriter JSP 페이지에서 결과를 출력
session javax.servlet.http.HttpSession 세션 정보를 저장
application javax.servlet.ServletContext 웹 애플리케이션 Context의 정보를 담고 있는 객체
pageContext javax.servlet.jsp.PageContext JSP 페이지에 대한 정보를 저장
page javax.lang.Object JSP 페이지의 서블릿 인스턴스를 저장
config javax.servlet.ServletConfig JSP 페이지에 대한 설정 정보를 저장
exception javax.lang.Exception 예외 발생시 예외 처리

 


 

* session 내장 객체

 

세션 사용법은 서블릿에서 getSession() 메서드를 이용해 session 객체를 얻은후 name 을 바인딩 한다.

HttpSession session = request.getSession();
session.getAttribute("name", "이순신");

session 객체의 사용법은 서블렛의 HttpSession과 같다. 차이점은 JSP에서는 자동으로 세션 갹체를 생성해 주므로 굳이 getSession() 메서드를 호출해서 세션을 얻을 필요가 없다는 것이다.

 

 

세션값 설정하기  

  session.setAttribute("설정한 세션아이디", 세션에 넣을 값);   
  session.setAttribute("user_id", user_id);   

 

세션유지시간 설정하기(초 단위)

session.setMaxInactiveInterval(30*60); // 60분동안 세션을 유지하고 싶다면, 60 * 60으로 설정
session.setMaxInactiveInterval(-1);     // 세션의 시간을 무한대로 설정 

 

세션에 저장된 값 가져오기  

    session.getAttribute("user_id");

 

세션값 삭제

    session.removeAttribute("user_id"); 
    session.invalidate(); // 세션 전체 제거, 무효화 

 

 


*application 내장 객체

 

  • 하나의 웹 애플리케이션(프로젝트)당 1개의 application 객체 생성
  • 같은 웹 애플리케이션에 요청되는 페이지들은 같은 객체 공유 /Project_Name 웹 애플리케이션에서는 같은 application 객체 공유
  • 애플리케이션 전체에서 공유하는 객체이므로 메모리에 부담이 갈 수 있어서 자주 사용되지는 않음
  • application 내장 객체 사용
  • 같은 브라우저에서 요청할 경우 session과 application에 저장된 값을 출력하지만,
    다른 브라우저로 요청할 경우 session 내장 객체의 스코프는 접근할 수 없어 null 을 출력한다. 
  • application 내장 객체의 스코프는 애플리케이션 전체이고, ssesion 내장 객체의 스코프는 같은 브라우저임을 알 수 있다.

 


*requset 내장 객체

 

HTML Form 을 통해 전달되는 값을 가져올 때 사용한다.


[메서드]
  • getParameterNames()  :  요청에 포함된 인자 이름을 java.util.Enumeration 형태로 넘김.
  • getParameter(name)  :  문자열 name 과 같은 이름을 가진 인자 값을 가지고 온다.
  • getParameterValues(name)  :  문자열 name 과 같은 이름을 가진 인자 값을 배열 형태로 가져옴.
    (Checkbox, multiple list)
  • getCookies()  :  모든 쿠키값을 javax.servlet.http.Cookie 의 배열 형태로 가져옴
  • getMethod()  :  현재 요청이 GET, POST 인지 확인하여 가져옴
  • getSession()  :  현재 세션 객체를 가져옴
  • getRemoteAddr()  :  클라이언트 IP 주소를 알려줌
  • getProtocol()  : 현재 서버의 프로토콜을 문자열 형태로 알려줌
  • setCharacterEncording()  : 현재 jsp로 전달되는 내용을 지정한 캐릭터셋으로 변환, html form 에서 한글 입력시 정상적처리위해 반드시 필요
 

*Response 내장 객체 

 

사용자 요청에 대한 응답 처리위한 javax.servlet.http.HttpServletResponse 객체의 참조 변수
 
[메서드]
  • setContentType(type)  :  문자열 형태의 type에 지정된 MIME Type 로 ContentType 설정
  • setHeader(name, value)  :  문자열 name의 이름으로 문자열 value 의 값을 헤더로 셋팅
  • setDateHeader(name, date)  :  문자열 name의 이름으로 date에 설정된 밀리세컨드 시간을 헤더에 설정
  • sendError(status, msg)  : 오류 코드를 셋팅하고 메시지 전송
  • sendRedirect(url)  :  클라이언트 요청을 다른페이지에 전송
  • setContentType() 메서드를 사용하면 page지시어에서 contentType을 지정한 MIME 타입을 무시하고 새로이 지정한다
 

▷sendRedirect() 메서드는 현재 페이지를 다른 페이지로 전환하는데 forward 액션과 유사하나 큰차이가 있다.

sendRedirect() 메서드는 현재 페이지 요청을 단순히 다른 URL로 전환하는 역할만할뿐 정보는 전달되지 않는다. 
또한 forward 액션은 반드시 같은 웹 애플리케이션에포함된 파일이어야 하는 차이점이 있다.
 
 
차이점(현재 페이지를 다른 페이지로 전환시)
jsp forward
자신에게 전달된 정보까지 해당페이지로 전송한다
웹 애플리케이션이 반드시 포함된 파일이어야 한다.
Response.sendRedirect
현재페이지로의 요청을 단순히 다른 URL로 전환하는 역할만 한다. 따라서 전달된 정보는 전달하지 않는다
 

 

*Out 내장 객체

 

스트립트릿에서 출력. Javax.servlet.jsp.JspWriter 객체의 참조변수로 버퍼관련  메서드와 출력관련 메서드로 구성
 
[메서드]
  • getBufferSize()  :  output buffer 의 크기를 바이트로 알려줌
  • getRemaninig()  :  남아있는 버퍼의 크기중 사용가능한 비율 알려줌
  • clearBuffer()  :  버퍼에 있는 컨텐츠 모두 삭제
  • flush()  :  버퍼 비우고 output stream도 비움
  • close() :   output stream 을 닫고 버퍼 비움
  • println(content)  :  content의 내용을 newline 과 함께 출력
  • print(content)  :  content 내용 출력

 

*Config 내장 객체

 

서블릿이 최초로 메모리 적재될 때 컨테이너는 초기화와 관련된 정보를 읽고 javax.servlet.ServletConfig 객체저장. 
이때 설정된 초기화 정보는 소스에 노출되지 않는데 수시로 변경되는 공통된 정보 등을 설정할때 사용한다.

 

[메서드]
  • getInitParameterNames()  :  초기 파라미터 값들의 설정 이름을 Enumeration 객체 리턴
  • getInitParameter(name)  :  문자열 name에 해당하는 초기화 파라미터 값 리턴
  • getResourceAsStream(path)  :  path에 지정된 자원을 InputStream 객체로 반환
     
  • getContext(path)  :  path에 지정된 자원의 컨텍스트 정보 반환
     
  • getResourceDispatcher(path)  :  path에 지정된 자원을 위한 request dispatcher를 생성
[로그관련정보]
  • log(message)  :  message 내용을 로그 파일에 기록.
  • log(message, exception)  :  예외 상황과 관련된 정보를 포함하여 로그 파일에 기록
 
[속성관련정보]
  • getAttribute(String name)  :  name에 해당하는 속성값을 Object 형태로 가저옴. 형변환필요
  • getAttributeNames()  :  application 객체에 지정된 속성 이름을 Enumeratiion 형태로 가져옴
  • setAttribute(String name, Object value)  :  name이름으로 Object 형 테이터 저장
  • removeAttribut(String name)  :  name에 해당하는 속성 삭제

 
 

*page 내장 객체

 

page는 JSP컨테이너에서 생성된 서블릿 인스턴스 객체를 참조하는 레퍼런스 변수이며, JSP에서 자기 자신을 참조한다.

*pageContext 내장 객체

 
javax.servlet.jsp.PageContext 인스턴스에 대한 참조 변수, 다른 모든 내장객체에 대한 접근방법제공.
HTTP 요청을 처리하는 제어권을 다른 페이지로 넘길 때 사용.
 
[내장 객체 참조 관련 메소드]
 
  • getPage()  :  현재 페이지의 생성된 서블릿 인스턴스의 page 내장 객체를 반환
  • getRequest()  :  현페이지의 클라이언트 요청정보를 갖고 있는 request 내장객체 반환
  • getResponse()  :  현페이지의 클라이언트 응답정보를 가진 response 내장객체 반환
  • getOut()  :  현페이지의 output stream 인 out 내장객체 반환
  • getSession()  :  현페이지의 session 내장객체 반환
  • getServletConfig()  :  현페이지의 config 내장객체 반환
  • getServletContext()  :  현페이지의 config 내장객체 반환
  • getException()  :  오류페이지에서 발생한 예외정보를 가진 exception 내장객체 반환
 
[페이지전달 관련 메소드]
  • Forward(path)  :  문자열 path에 지정된 페이지로 포워딩
  • Include(path)  :  문자열 path에 지정된 페이지 포함
예)
forward 메서드 [ pageContext.forward("HelloWorld.jsp"); ]
forward 액션    [ <jsp: forward page="HelloWordl.jsp" /> ]
inclued 메서드 [ out.flush();  pageContext.include("HelloWorld.jsp"); ]
inclued 액션    [ <jsp:include page="HelloWorld.jsp" flush=true /> ]
 

 

*Exception 내장 객체

 

page 지시어에 오류페이지 지정된 페이지에서 예외발생시 전달되는 java.lang.Throwable 의 인스턴스에 대한 참조변수
 
[메서드]
  • getMessage()  :  문자열로된 오류메세지 반환
  • printStackTrace() : 표준출력 스트림으로 스택 추적정보를 출력
  • toString()  :  예외클래스 이름과 함께 오류 메시지 반환

예외 처리 담당 JSP 페이지를 만드는 스크립트코드

<%@ page isErroPAge = 'true' %>

 

예외 발생시 예외 처리 담당 JSP 파일을 지정해주는 코드 (에러 페이지 : exception.jsp)

<%@ page errorPage='addException.jsp' %>

 

위처럼 JSP에 설정했을시 에러가 발생하면 exception.jsp 파일이 실행된다.

728x90
반응형

'개발공부 > WEB' 카테고리의 다른 글

AJAX란?  (0) 2022.03.27
@ReuquestParam  (0) 2022.03.26
Spring : JSP 스크립트 요소 기능(1)  (0) 2022.03.03
Spring : JSP 정의와 구성 요소  (0) 2022.03.01
Spring : 서블릿(servlet)이란?  (0) 2022.03.01