Download presentation
Presentation is loading. Please wait.
1
JavaServerPage 전혜영
2
목차 JSP란… Java Life Cycle JSP기본 문법 ActionTag Cookie / Session
MVC Pattern
3
JavaServerPage JSP의 장점 운영체제나 웹서버에 독립적으로 운영 코드 부분을 손쉽게 에디터를 이용 가능
<태그> 형식으로 작성하나 서블릿으로 자동 변환 [ 참고 ] 익스플로우(5.x) 환경 설정 도구 – 인터넷 옵션 – 고급 – “HTTP오류메세지표시” 해제하면 서버가 보내준 에러 페이지를 확인 가능
5
Java Life Cycle jspInit ( ) _jspService ( ) jspDestroy ( )
class 파일존재? NO JSP -> 서블릿파일 YES JAVA -> CLASS jsp요청 M에 로딩? jspInit ( ) NO YES _jspService ( ) jspDestroy ( )
6
JSP 기본 문법 Directive <%@ %> Scripting
Declaration <%! %> member 선언시 Scriptlet <% %> 자유로운 자바코드 Expression <%= %> 출력 ActionTag <jsp:tagname /> 주석 <!-- HTML 주석 <%-- JSP 주석 --%> <% // %> <% /* */ %>
7
1.Scripting Element 선언식 (Declaration) [2] 스크립틀릿 (Scriptlet)
<%! 멤버필드 OR 메소드 선언 %> <jsp:declaration> 자바코드 </jsp:declaration> 클래스 멤버 필드나 메소드를 선언시에 사용 [예] jspInit() / jspDescroy() 선언시 [예] 여기에 선언된 변수는 _jspService() 밖에 선언 [2] 스크립틀릿 (Scriptlet) <% 자바 코드 %> _jspService()안에 직접 코딩 [3] 표현식 (Expression) <%= 함수나 변수 %> <jsp:expression> </jsp:expression> 어떤 출력 값을 직접 끼워 넣고자 할 때 서블릿의 out.print()에 삽입되기에 세미콜론(;)을 넣으면 안됨
8
_jspService() 내장객체 request HttpServletRequest
response HttpServletResponse out PrintWriter session HttpSession application ServletContext config ServletConfig page this와 유사한 개념 pageContext PageContext exception Exception
9
2.Directive Element page include taglib
변환될 서블릿이 필요로 할 클래스들을 import 하거나 문서 형식등을 설정시 include 이 페이지에 다른 파일을 껴서 사용하고자 할때 taglib 사용자 정의 태그 사용시
10
2.1page directive 속성 <%@page import=“java.util.ArrayList” %>
contentType errorPage isErrorPage isThreadSafe session buffer autoflush extends info pageEncoding
11
JavaBeans 컴포넌트 개념으로 재사용이 가능한 자바 클래스 ActionTag를 사용 ( xml문법 ) 장점
JSP에서 자바 코드가 없어진다 객체 공유가 간단해진다 화면 폼의 입력값을 객체에 저장하는 일이 간단해진다 Bean 사용시 주의점 빈클래스의 생성자는 인자가 없어야 한다 빈클래스는 public으로 선언된 멤버변수를 지정하지 않고 setXXX() / getXXX()를 이용 ( 권장 )
12
ActionTag 종류 <jsp:useBean> <jsp:setProperty>
<jsp:getProperty> <jsp:include> <jsp:forward> <jsp:plugin>
13
객체 생성<jsp:useBean>
<jsp:useBean id=‘객체명’ class=‘클래스명’ scope=‘범위’/> <jsp:useBean id=‘bean’ class=‘pack.ABean’/> <% pack.ABean bean = new pack.ABean() %> scope에 범위를 지정하면 다른 페이지에서도 빈객체를 공유
14
빈의 공유 page request session application - PageContext 객체에 저장 ( 기본값 )
- ServletRequest 객체에 저장 session - HttpSession 객체에 저장 application - ServletContext 객체에 저장
15
조건에 따라 빈 생성 <jsp:useBean ~~> 문장들 </jsp:useBean>
새로운 빈이 생성될 때만 “문장들”이 시행되기에 여러 페이지에서 빈을 공유시 초기화하는 용도로 사용한다
16
속성<jsp:getProperty>
<jsp:getProperty name=‘빈객체명’ property=‘속성이름’/> name : <jsp:useBean>의 id 값과 동일 property : 빈클래스의 getXXXX()의 XXXX에 해당되는 이름 ( 첫글자만 소문자 ) <jsp:getProperty name=‘bean’ property=‘attribute’/> <% bean.getAttirbute(); %>
17
속성<jsp:setProperty>
<jsp:setProperty name=‘빈객체명’ property=‘속성이름’/> name : <jsp:useBean>의 id 값과 동일 property : 빈클래스의 setXXXX()의 XXXX에 해당되는 이름 ( 첫글자만 소문자 ) <jsp:setProperty name=‘bean’ property=‘attribute’/> <% String a = request.getParameter(“attribute”); bean.setAttirbute( a ); %> 만일 폼의 각 요소 이름과 빈의 속성이름이 대소문자까지 모두 일치하다면 *문자 사용이 가능 <jsp:setProperty name=‘빈즈객체명’ property=‘*’/>
18
동적 페이지 삽입 메인 페이지가 요청을 받는 시점에서 다른 페이지를 삽입하는 경우
<jsp:include page=‘Relative url’ flush=‘true’/> JSP 1.1의 경우 flush의 속성값이 true로 고정되었으나, JSP 1.2에서는 선택이고 기본값이 false이다 포함되는 페이지가 변경되어도 메인 페이지를 수정할 필요가 없다
19
비교 1 - <jsp:include>
request 시 main.jsp ~~~~~ <jsp:include page=‘sub.jsp’/> sub.jsp =====
20
비교 2 - <%@ include file=‘url’ %>
main.jsp ~~~~~ include fiel=‘sub.jsp’ %> _main_jsp.java ~~~~~ ===== 서블릿 변환시 sub.jsp =====
21
페이지 전환 <jsp:forward page=‘url’ />
기존의 request 연결을 유지하면서 서버상의 url로 request 정보를 전달 서블릿상에서 RequestDispatcher rd = getServletContext().getRequestDispatcher(“url”); rd.forward( request, response ); <참고> response.sendRedirect(“url”); 이는 기존 연결을 끊고, 새로운 url로 재접속을 하기에 요청정보를 유지하지 못한다
22
JSP에서 애플릿 삽입 브라우저에서 자바2 플랫폼을 지원하도록 하는 매커니즘 자바 플러그인 사용시 테그
Explorer : <object> Nescape : <embed> JSP에서는 <jsp:plugin> 지원 <jsp:plugin type=‘applet’ code=‘애플릿클래스명’ codebase=‘디렉토리경로’ width=‘300’ height=‘300’/> type : applet or bean 다른 속성은 html의 <applet> 속성과 동일 <jsp:plugin>은 사용자의 브라우저가 자바 플러그인을 실행시킬 수 있는지에 따라 결정되기에 실패시 출력할 컨텐트를 정하도록 지원 <jsp:fallback> 죄송..자바를 지원하지 못했습니다 </jsp:fallback>
23
Model 1 Architecture
24
Model 2 Architecture
25
MVC Pattern 서블릿이 초기 요청을 분석하여 처리한 후 그 결과치를 다른 JSP 페이지로 전송하는 방식 request
Servlet Bean response JSP
26
3-Tier Web Architecture
27
Java 2 Platform, Enterprise Edition
28
Java Naming and directory Interface
Similar presentations