//JSP란?
정의 : Java Server Pages의 약자, 자바프로그램과 HTML태그를 포함한 Server Side애플리케이션 개발기술
비지니스로직과 프리젠테이션로직(View)을 분리할 목적으로 등장. 재사용성과 유지보수 수월

/JSP 실행
-변환 단계(Translation Step) : jsp가 java로 변환  helloJSP.jsp -> helloJSP_jsp.java
-컴파일 단계(Compile Step) : 변환된 java파일을 컴파일 한다. helloJsp_jsp.java -> helloJSP_jsp.class
-실행 단계(Interprete Step) : 생성된 class를 실행 결과값 응답 처리
변환된 파일은 c:Tomcat\word\Standalone\localhost\webapp 에 위치

/helloJSP_jsp.java를 살펴보면
public class helloJSP_jsp extends HttpJspBase{
 ~~~~
 public void jspService(HttpServletRequest request, HttpServletResponse response){
  JspFactory _jspxFactory=null;
  javax.servlet.jsp.PageContext pageContext = null;
  HttpSession session = null;
  ServletContext application = null;
  ServletConfig config = null;
  JspWriter out = null;
  Object page = this;
  JspWriter _jspx_out = null;
  try{

  }
 } 
 ~~~~
}

-service메소드 안에는 컨테이너가 자동으로 생성해주는 변수들이 있는데 이것을 내장변수(객체)라고 한다.

//JSP Scripting Elements(일반태그) 

 요소 Tag  설명 
 Comments  <%-- 주석  --%>   JSP주석처리
 Directive tag  <%@ directive %>  JSP에게 정보전달 목적
 Declaration tag  <%!   선언     %>  변수 및 메소드 선언
 Scriptlet tag  <%   코드      %>   서비스 코드 구현
 Expression tag  <%=  출력값  %>  결과값 출력

/Comments tag
주석처리용
<!-- HTML 주석  -->   서블릿, 응답화면에서 주석이 보임
<%-- JSP  주석  -->   JSP 코드 내에서만 보여짐, 서블릿이나 응답화면X
<%  /* 일반 JAVA  주석*/   %>  서블릿에서 보임

/Directive tag
JSP가 서블릿으로 변환될 때 전반적인 영향을 줄 수 있는 정보를 제공

-Page Directive tag : 컨테이너에게 현재 jsp 페이지를 어떻게 처리할것인가에 대한 정보제공
                      

 속성 기본값   설명
 info    없음    페이지를 설명하는 문자열 지정
 language 'java'   jsp페이지에서 사용할 언어지정
 contentType   'text/html'    어떤형태로 출력할것인지 지정(한글처리시 text/html;charset=euc-kr)
   extends     없음  서블릿 변환시 상속받을 클래스
  import     없음  다른 package의 클래스를 import할때 지정
 session    'true'   HttpSession 객체여부 결정
 buffer  '8kb'  출력크기 지정
 autoFlush                       'true'    내용들이 출력되기전 버퍼가 다 찰경우의 동작 지정
  isThreadSafe  없음  멀티쓰레드 동작여부
 errorPage   없음  jsp처리도중 예외 발생시 예외처리 담당 jsp페이지 지정
 isErrorPage  'false'   현재 jsp페이지가 예외처리담당 jsp페이지인지 설정
 pageEncoding  'iso=8859-1'  jsp에서 사용하는 문자인코딩
 isElIgnored     EL의 사용유무

예제) Directive Tag
<%@ page contentType = 'text'html;charset=euc-kr'
    import = 'java.util.*, java.io.*'  %>
<html><body></body></html>


-include Directive tag :
 여러 jsp에 공통 내용이 있을때 그부분만 파일로 저장하여 필요할때 삽입하여 사용
 재사용, 유지보수가 쉬움.(header, footer..)
 
.Directive tag-> <%@ include file='공통내용.jsp' %> 
.Action tag-> <jsp:include page='공통내용.jsp' /> 


예제) include Directive
*incl.jsp
 안녕하세요
 <img src = 'img~~.jsp'>

*index.jsp
<%@ page contentType='text/html;charset=euc-kr' %>
 <html><body>
 <%@ include file='incl.jsp' %>
 </body></html>

a)include Directive의 경우에는 incl.jsp가 index.jsp에 포함된후 새로운 jsp생성 후 .java로 변환 후 컴파일
  work디렉토리에보면 index_jsp.java, index_jsp.class파일만 존재
  주의할점 : incl.jsp에 한글이 있으므로 incl.jsp에 <%@ page contentType=~~%> 을 쓸경우
  index.jsp에도 존재 하므로 두개가 합쳐져서 새로운 .jsp 파일이 생성될때 page Directive가 2개가됨.error

%include Action tag :
 포함하는 jsp가 포함되는 jsp로 내부적으로 요청, 요청받은 jsp 실행결과가 요청한 jsp에 포함
 동적인특징,  필요에따라 파라미터 값을 가지고 요청할수 있음.
예제) include Action
*incl.jsp
<%@ page contType = 'text/html;charset=euc-kr' %>
안녕하세요
 <img src = 'img~~.jsp'>

*index.jsp
<%@ page contentType='text/html;charset=euc-kr' %>
 <html><body>
 <jsp:include page='incl.jsp' flush='true'/>
 </body></html>

a)결과는 똑같음 하지만 Action tag는 동적이기 때문에 각자 .java변환후 컴파일됨. index.jsp를 실행하다가
jsp 액션태그를 만나게되면 내부적으로 incl.jsp에 요청을 하게되고 그것의 응답을 index.jsp에 삽입함.
그래서 페이지 인코딩처리를 각자 해줘야함
work폴더에 보면 incl_jsp.java, incl_jsp.class, index_jsp.java, index_jsp.class 있는것을 알수있음.
index.jsp에서 incl.jsp에 요청할때 파라미터 설정을 할수도 있음.

/param action tag
 include Action tag, forward Action 태그 사용시 파라미터 사용
<jsp:include page='incl.jsp' flush='true'>
  <jsp:param name='key' value='Duke'/>
</jsp:include>
예제) param Action tag
*incl.jsp
<%@ page contType = 'text/html;charset=euc-kr' %>
<% String name = request.getParameter('key') %>
안녕하세요 <%= name %> 입니다.
 <img src = 'img~~.jsp'>

*index.jsp
<%@ page contentType='text/html;charset=euc-kr' %>
 <html><body>
 <jsp:include page='incl.jsp' flush='true'>
   <jsp:param name='key' value='Duke'/>
 </jsp:include>
 </body></html>

-taglib Directive tag

 

 

 

 

 

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by 대절님

댓글을 달아 주세요



티스토리 툴바