- Web container가 JSP를 Servlet으로 변환 할 때 특정 지시를 내리기 위해서 사용하는 태그 - 구문 <%@ 지시어 속성="값" [속성="값" ..]%> - 지시어 - page : 페이지의 기능, 특징을 지시 - include : jsp 페이지에 다른 페이지를 포함시킬 것을 지시 - taglib : jsp 페이지에서 사용할 custom tag 라이브러리 등록을 지시 - page 지시자 - 페이지에 관련된 기능 환경을 정의하는 지시어 - 속성 - import : jsp에서 사용할 클래스들을 import할 때 사용 - contentType : response.setContentType()의 인수로 들어갈 값 설정 - session : 내장 객체 session의 생성 여부 설정. 값 : true//false, true가 default - errorPage : jsp가 실행 도중 exception이 발생했을때 이동할 url 지정
* 표현식 태그
- 응답 Stream을 통해 출력하기 위한 태그 - 구문 <%= 출력내용 %> - 예) <%="안녕하세요" %> ->만약 서블릿으로 바꾸면 out.print("안녕하세요");
<% int i =10; %> <%=i %> - 서블릿으로 변환 시 out.print(출력내용); 으로 변환됨
* 선언자 태그
- JSP가 서블릿으로 변환 될때 서블릿의 member 변수(Field)나 member 메소드를 선언할 때 사용 - jspInit(), jspDestory() 오버라이딩 시 사용 - _jspService()는 오버라이딩 해서는 안된다. - 구문 <%! 선언문 %>
* dynamic web project : myjsp web content : /scripttag/jsp_lifecycle.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%! //!지역변수 말고 인스턴스 변수를 만들때 사용, <% <- 을 사용하면 안에 구문은 지역변수로 잡힌다. private int count=0; public void jspInit(){ System.out.println("jspInit() 실행"); } public void jspDestroy(){ System.out.println("jspDestroy 실행"); } %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 당신은 <%=count++ %>번째 방문자 입니다. </body> </html>
- 실행결과
* 스크립트릿 태그
- 클라이언트의 요청에 대해 서비스 하는 동적 코드(java 실행 구문)을 작성 하기 위한 태그 - 태그내의 코드는 서블릿으로 변환 시 _jspService()의 로컬 코드로 삽입된다. - 구문 <% java 코드 %> - 예 <% if(i>10){%> -> java code 10 보다 큽니다. -> HTML <%}%> ->java code
-> 서블릿으로 변경 _jspService(){ if(i>10){ out.println("10보다 큽니다."); } }
* 주석
- jsp에서의 주석 - html 주석 : <!-- 주석 내용--> : client에 전송 - jsp 주석 : <%-- 주석내용 --%> : client에 전송이 안됨 - java 주석 : //,/* 주석내용 */ - 스크립트릿, 선언자 태그에서 사용 가능
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%! //!지역변수 말고 인스턴스 변수를 만들때 사용, <% <- 을 사용하면 안에 구문은 지역변수로 잡힌다. private int count=0; //방문 객수를 저장할 변수 /* 초기화 메소드 */ public void jspInit(){ System.out.println("jspInit() 실행"); } public void jspDestroy(){ System.out.println("jspDestroy 실행"); } %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <!-- HTML 주석 (이건 클라이언트 웹브라우저에서 소스보기 하면 보인다. ) HTML 주석 --> <%-- JSP 주석 ( 웹브라우저로 출력이 안된다. 안보인다) JSP 주석 --%> 당신은 <%=count++ %>번째 방문자 입니다. </body> </html>
2. 액션태그(action) -> jsp에서 java코드를 대신하기 위한 태그(java코드를 넣지 않는 태그) ① 표준 액션 Tag - Servlet/jsp spec에서 제공(기본적으로 제공) ② custom Tag - 사용자 정의 tag(사용자가 만들어 씀) - 액션 Tag 예시
<HTML> <BODY> <for s="1" e="10" step="1"/><!-- 1에서 10까지 1씩 증가하면서 찍겠다고 사용자가 지정하고 webcontainer에게 알린다. </BODY> <HTML> //위와 같이 만들어 놓고 위 코드를 실행 시 어떻게 돌아가게 하겠다라는 정의를 webcontainer에게 알려준다.
3. Expression Language2.0
* 톰켓에서 서블릿 변환 확인 경로 D:\apache-tomcat-6.0.35\work\Catalina\localhost\member_servlet\org\apache\jsp
- servlet class package : member.servlet name : ModifyFormServlet url-mapping : /modifyMember
jsp WebContent 이름 : /res/modify_success.jsp --------------------------------
시작 : modify_form.jsp 로직 : ModifyMemberServlet 성공 : 처리 완료 한 경우 : modify_success.jsp(수정된 정보를 출력) 실패 : 로그인 안한 경우 : login_form.jsp 처리도중 exception : error.jsp