<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

+ Recent posts