<% %> 태그안에 작성하면 servlet에 service()안에 구현된다.
<%@ page session = "true" %> session 자동으로 생성
<%@ page language="java"%> 변환규칙으로 java로 만들어라
<%@ page isThreadSafe="true" %> singlethreadsafe deprecate 이유
extends는 사용 못한다.
*에러가 발생 할 수 있는 페이지에 작성*
<%@ page errorPage="03JSPErrorPage.jsp"%>
해당 태그가 존재할때 에러가 발생하면 그 전까지 호출한 jsp를 실행하다 해당 에러 페이지로 보낸다.
*에러 발생 시 보여줄 페이지에 작성*
<%@ page isErrorPage="true"//default는 false %>
에러가 발생하면 보여 줄 페이지이며 isErrorPage = true여야지 servlet으로 변환시 excpetion 객체를 생성하고 발생 한 예외를 담는다.
<@page buffer = "8kb" autoFlush="true">
jsp에서 servlet으로 변환 될 때 기본으로 생성되는 객체이며 client로 parsing된 html을 매번 보내는것이 아닌 버퍼에 담았다가 버퍼가 가득 차면 보내주는 역할을 한다.
excpetion 발생하면 buffer는 clear된다.
<jsp:include page="05JSPActionInclude.jsp"/>
<%@include page="05JSPActionInclude.jsp"%>
<%%> 태그는 변환시 servlet service()내에 java code로 생성되기에 local variable만 선언이 가능하며 field는 선언이 불가능하다.
<%!> 태그를 통해 service() 외부에 field나 method를 생성 할 수 있다.(생성한 field나 method는 모든 thread에서 접근 가능하기에 동기화 문제 발생!!)
1
<%
for(int i=1;i<10;i++){
out.println ( i+" 단을 출력합니다. <br/>");
for(int j=1;j<10;j++) {
out.println( i+" X "+j+ " = "+ i*j+"<br/>" );
}
}
%>
jsp는 servlet에서 처리하기 힘든 tag를 담당하기 위해 만든 기술이다 따라서 1번 코드처럼 한 tag 안에 모든 java코드를 넣는것은 권장하는 방법이 아니다.
2
<% for(int i=1;i<10;i++){ %>
<%=i%>단을 출력합니다.<br/>
<% for(int j=1;j<10;j++) {%>
<%=i%> X <%=j%> = <%=i*j%><br/>
<%}} %>
따라서 2번처럼 요청에 따라 변하는 dynamic context에만 <%%>를 사용하여 처리하는것을 권장한다.
기존 model1 web arch는 view는 jsp, busniss logic은 bean으로 처리했다 그러나 아직 request.getParameter()과 같은 java code들이 존재한다.
model2 web arch는 view는 오직 화면 출력에만 bean은 busniss logic에만 집중 가능하게 중간에 controller라는 계층을 추가하여 사용자의 입력에 맞는
적절한 bean을 호출해 busniss logic을 처리하고 view를 만드는데 필요한 데이터만을 jsp에 넘겨주어 view 처리에만 집중 가능하게 만들어준다.
요약하자면 model1 web arch에 controller를 추가하여 model은 데이터만을 담당, view는 html만을 담당, controller는 연결과 상태변화를 반영하는 역할을 하게 만들어 모듈화를 하였다.
% request.setAttribute("aaa",new String("connect")); %>
<jsp:forward page="09JSPActionForward.jsp"/>
<% request.setAttribute("aaa", new String("connect")); %>
<% response.sendRedirect("09JSPActionForward.jsp"); %>