디지털 양피지/WebJava2016. 5. 18. 10:19

JSP(Java Server Pages)

자바 기반의 Web 프로르램 기술인 Servlet은 많은 장점에도 불구하고 재컴파일이나 화면 로직 통합으로 인한 유지 보수의 어려움, 구현의 복잡함으로 인해 개발자들에게 외면을 당했다.


JSP는 Setvlet 을 쉽게 만들기 위한 하나의 도구이다. JSP 파일은 클라이언트에 호출을 받는 순간 JSP 컨테이너에 의해 Servlet 파일로 변환이 된다. 아래와 같이 jsp 파일은 C:\DEV\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\JSPProject\org\apache\jsp 폴더에 java 파일로 생성이 된다.




java 파일을 열어보면 아래와 같이 servlet 형태로 정의 되어 있다. 



아래와 같이 html 도 포함이 되어 있다. 


JSP는 Scriptlet(수행문)과 Expression(연산문) 등으로 구성된다.

Scriptlet: <% ...... %> 로 사용하며 정상적인 Java 문법을 사용할 수 있다.

Expression: <%= ...... %> 로 사용하며 메소드 호출만 할 수 있다.



특정 JSP 코드를 등록해서 마법사를 이용해 사용하고 싶다면 Preference->Web->JSPFiles->Editor->Tmeplate에서 변경한다.


New JSP File(html)을 변경하면 된다.





상태 정보 유지(Session Tracking)

HTTP 프로토콜은 무상태(Stateless)라는 특징을 가지고 있기 때문에 별도의 상태 정보를 유지할 수 있는 기능이 필요한 것이다. 가장 많이 쓰이는 기술은 Session 기반의 상태 유지 기술이다.


servlet에서는 request.getSession은 Browser당 하나씩 생성 된다. Session 객체가 없으면 새로 만들어 주고 있으면 객체를 리턴한다.

JSP에서는 session이 내장 객체로 지원되서 getSession을 하지 않아도 된다. jsp가 servlet으로 만들어지면 request, response, session 등을 내장 객체로 만들어서 사용한다. 세션은 브라우져가 종료하거나 서버 재구동 시에만 삭제가 된다.

JSP 내장 객체는 다음과 같다.

request

response

pageContext

session

application


session의 setAttribute, getAttribute로 값을 저장하고 사용할 수 있다. 저장할 수 있는 Attributte은 object 타입으로 무엇이든 저장할 수 있다. 이밖에 removeAttribute로 삭제 할 수도 있다.


session.invalidate: session을 종료한다.

session.setMaxInactiveInterval(int sec): 클라이언트 요청 없이 Session을 유지할 시간 설정. 서버와의 Interaction이 없으면 설정된 시간 후 세션이 종료된다.


JSP 소스에 생성된 객체들은 _jspService의 local 변수가 된다. 선언문(<%@) 에 선언된 변수들은 global로 선언이 된다.





Posted by 빨간 양말