지난글
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 내장 객체
- 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 액션과 유사하나 큰차이가 있다.
|
차이점(현재 페이지를 다른 페이지로 전환시)
|
jsp forward
|
자신에게 전달된 정보까지 해당페이지로 전송한다
웹 애플리케이션이 반드시 포함된 파일이어야 한다.
|
Response.sendRedirect
|
현재페이지로의 요청을 단순히 다른 URL로 전환하는 역할만 한다. 따라서 전달된 정보는 전달하지 않는다
|
*Out 내장 객체
- getBufferSize() : output buffer 의 크기를 바이트로 알려줌
- getRemaninig() : 남아있는 버퍼의 크기중 사용가능한 비율 알려줌
- clearBuffer() : 버퍼에 있는 컨텐츠 모두 삭제
- flush() : 버퍼 비우고 output stream도 비움
- close() : output stream 을 닫고 버퍼 비움
- println(content) : content의 내용을 newline 과 함께 출력
- print(content) : content 내용 출력
*Config 내장 객체
- 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 내장 객체
*pageContext 내장 객체
- 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 내장 객체
- getMessage() : 문자열로된 오류메세지 반환
- printStackTrace() : 표준출력 스트림으로 스택 추적정보를 출력
- toString() : 예외클래스 이름과 함께 오류 메시지 반환
예외 처리 담당 JSP 페이지를 만드는 스크립트코드
<%@ page isErroPAge = 'true' %>
예외 발생시 예외 처리 담당 JSP 파일을 지정해주는 코드 (에러 페이지 : exception.jsp)
<%@ page errorPage='addException.jsp' %>
위처럼 JSP에 설정했을시 에러가 발생하면 exception.jsp 파일이 실행된다.
'개발공부 > 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 |