<JSP (Jasper)>
-html을 java servlet을 사용해 동적 페이지로 편하게 출력해 줄 수 있게 해주는 프로그램
(html 속에 java servlet이 직관적으로 보기 편하게 공존하는 뭐 그런 느낌이다)
-요청할 때마다 달라진 게 있다면 jasper는 다시 만들어주기 때문에 서버를 재시작할 필요가 없다.
(servlet 순수 개발은 재컴파일 과정이 필요하기에 ide 개발을 하더라도 서버를 재시작해줄 필요가 있었다)
-톰캣 프로젝트 명이 Catalina라 경로 폴더에 해당 프로젝트 명이 있다
(톰캣설치폴더\work\Catalina\localhost\ROOT\org\apache\jsp)
-.jsp 확장자를 사용하여 작성하며 파일명_jsp.java (컴파일시 파일명_jsp.class 추가) 로 생성된다
(.jsp 파일명 자체가 url로 맵핑된다)
-html 확장자를 jsp로 만들어 위 파일을 실제로 열어보면 무수한 out.write로 처리된 html 구문을 볼 수 있다
(옛날엔 실제로 일일히 out.write를 쳐줬다고 한다...ㅋ)
<Jasper를 이용한 코드 작성>
출력 코드(html,css)
-그대로 작성
<%! java code %>
-jsp 멤버함수, 멤버변수가 있는 클레스에 java code 사용
-jsp 메소드 밖, jsp 서비스 메소드가 속한 클래스에서의 코드 사용(일반 클래스에서 하는 작업이 모두 가능)
<% java code %>
-jspService 메소드 내에서 사용하는 java code
-지역변수 알고리즘이 있는 함수 속이라 멤버변수 정의, 함수정의 등이 불가능
<%= 출력변수 %>
-<% out.print(출력변수) %>와 같은 의미
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
-page 지시자
-jsp에서는 인코딩 설정시 출력코드가 입력 지시보다 먼저 이루어지는 경우가 있기에 illegalStateException을 내뱉는다.
-그래서 page 인코딩 등의 설정에 우선 순위를 주기 위해 사용한다
<JSP 내장 객체>
-jasper에는 보이지 않을 뿐 jsp servlet와 내부 service 메소드에는 미리 정의해놓은 변수와 함수들이 존재한다.
-이 내장 객체들과 동일한 이름을 사용하면 오류가 발생한다.
<Servlet, JSP 내장 객체 환기>
Request
메서드 | 설명 |
getParameterNames() | 사용자가 전달한 키들을 Enumration 객체로 반환 |
getParameter(name) | 사용자가 전달한 name과 일치하는 값을 반환 |
getParameterValues(name) | 사용자가 전달한 name과 일치하는 값을 배열형식으로 반환 |
getCookies() | 클라이언트에서 전달한 쿠키를 배열 형식으로 반환 |
getMethod() | 현재 요청방식이 GET인지 POST인지를 문자열로 반환 |
getSession() | 현재 세션 객체를 반환 |
getRemoteaddr() | 클라이언트의 IP 주소를 반환 |
getProtocol() | 현재 서버의 프로토콜을 문자열로 반환 |
setCharacterEncoding() | 현재 JSP로 전달되는 내용을 지정한 문자셋으로 변환해준다. |
getHeaderNames() | 현재 요청이 가지는 헤더의 이름들을 반환 |
getHeaders(name) | 현재 요청한 헤더에서 지정한 이름의 모든 값들을 반환 |
getQueryString() | 현재 요청에 포함된 쿼리문자열을 반환 |
내장 객체 request : HttpServletRequest |
Response
메서드 | 설명 |
setContentType(type) | 컨텐트 형식을 설정("test/html; charset=UTF-8") |
setHeader(name, value) | 클라이언트에게 헤더로 전달할 값을 설정 |
setDateHeader(name, date) | 클라이언트에게 헤더로 전달할 날짜를 설정 |
sendError(status, msg) | 클라이언트에게 에러코드와 메시지를 전달 |
sendRedirect(url) | 클라이언트 요청을 다른 페이지로 전달 |
addCookie(cookie) | 클라이언트에게 전달할 쿠키를 설정 |
encodeURL(url) | URL로 유효하지 않은 문자를 인코딩 |
setStatus(sc) | 상태 코드를 설정 |
내장 객체 response : HttpServletResponse |
Out
메서드 | 설명 |
getBufferSize() | output buffer의 크기를 byte로 알려준다 |
getRemaining() | 남아있는 버퍼의 크기중 사용가능한 비율을 알려준다 |
cleaBuffer() | 버퍼에 있는 콘텐츠를 모두 지운다 |
flush() | 버퍼를 비우고 output stream도 비운다 |
close() | output stream을 닫고 버퍼를 비운다 |
println(content) | content의 내용을 newline과 함께 출력한다 |
print(content) | content의 내용을 출력한다 |
내장 객체 out : javax.servlet.jsp.JspWriter |
Session
메서드 | 설명 |
getID() | 각 접속에 대한 세션 고유의 id를 문자열 형태로 반환 |
getCreationTime() | 세션이 생성된 시간을 밀리세컨드 값으로 반환 |
getLastAccessedTime() | 현재 세션으로 마지막 작업한 시간을 밀리세컨드 값으로 반환 |
getMaxInactiveInterval() | 세션 유지 시간을 초로 반환 |
setMaxInactiveInterval(t) | 세션 유효시간을 t에 설정된 초 값으로 설정 |
invalidate() | 현재 세션을 종료. 세션과 관련한 값을 모두 지움 |
getAttribute(attr) | 문자열 attr로 설정된 세션값을 object 형태로 반환 |
setAttribute(name,attr) | 문자열 name으로 attr을 설정 |
removeAttribute(name) | 세션에 설정한 속성 값을 삭제 |
내장 객체 session : javax.servlet.http.HttpSession |
Application
메서드 | 설명 |
setAttribute(name, value) | application 범위의 값 설정 |
getAttribute(name) | application 범위 값 얻기 |
getRealPath(path) | 실제 물리 경로를 반환 |
getResource(path) | path 경로의 리소스를 가리키는 URL을 반환 |
getServerInfo() | 현재 요청 방식이 GET인지 POST인지를 문자열로 반환 |
getSession() | 현재 세션 객체를 반환 |
getRemoteAddt() | 클라이언트의 IP 주소를 반환 |
getProtocol() | 현재 서버의 프로토콜을 문자열로 반환 |
setCharacterEncoding() | 현재 JSP로 전달되는 내용을 지정한 문자셋으로 변환해준다 |
내장 객체 application : javax.servlet.ServletContext |
'Development > Java' 카테고리의 다른 글
JSP EL(Expression Language) #6 (0) | 2022.08.14 |
---|---|
JSP MVC model #5 (0) | 2022.08.14 |
Servlet (service, doGet, doPost) #3 (0) | 2022.08.13 |
Servlet (Application, Session, Cookie) #2 (0) | 2022.08.12 |
Servlet #1 (0) | 2022.08.11 |