<%@ %>
: Directive(지시자). JSP 페이지 전체에 적용하는 속성들을 설정한다. (import, page, charEncoding 등)<%! %>
: Declaration(선언문). 멤버변수, 메소드, 내부클래스를 선언하는 부분으로 java에서 전역변수를 선언한 것과 동일한 위치다. <% %>
: Scriptlet(스크립틀릿). 메소드(_jspService) 내부에서 실행되는 자바코드를 작성하는 부분. doService() 공간과 동일하다. 여기서 선언된 변수는 지역변수다. <%= %>
: Expression(표현식). 변수의 값, 메소드의 리턴값 등을 HTML에 표현<%-- --%>
: Comment(주석). JSP주석은 서블릿클래스로 변환될 때 코드로 변환되지 않아 읽지 못한다System.out.println("result="+result);
out.write("<p>result ="+ result +"</p>\r\n");
가독성이 떨어지는 문제점이 존재
<p>결과 = <%=result %></p>
JSP와 Servlet은 거의 같다.
HTML->Servlet
와JSP->Servlet
가 가능하다. 그렇다면JSP->JSP
로 데이터 전송도 가능하다.
보통 데이터 가공은 서버사이드에서 다 끝내는게 좋다. 클라이언트 사이드에서 가공하면 사용자 환경에 부담이 되기 때문이다.
백엔드에서 클라이언트로 넘어온 데이터는 보안상의 이유로 어떻게 넘어왔는지에 대한 정보를 알 수 없다.
그래서 개발자툴에서 <%%>속 자바코드는 보이지않고 코드실행 결과로만 보여진다.
<%@ directive attribute="value" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<style>
.header{
background-color: lightgreen;
font-size: 200%;
text-align: center;
height: 60px;
}
</style>
<%
String header="헤더 변수";
%>
<div class="header">
여기는 header입니다.
</div>
jsp에서 필요한 위치에 <%@ include file="header.jspf"%>
사용하기
header.jspf
의 url은 노출되지 않고 사용한 jsp 파일에 포함되는 형태로 제공된다.
jspf에서 선언한 변수는 다른 공간에서도 사용할 수 있다.
보통 페이지에서 header와 foot은 페이지 내용이 바뀌어도 똑같아서 하나의 파일로 만들어 사용하는데 그때 사용함.
JSP 파일이 자바 파일로 바뀔 때 최종적으로는 정적으로 문서에 삽입되어 컴파일된다.
다수의 JSP 페이지에서 공통으로 사용되는 코드를 작성하는 용도로 사용한다.
포함되는 jsp 파일에서 선언한 변수들은 포함하는 jsp파일에서 사용할 수 있다! 그래서 중복된 이름의 변수 선언에 주의해야 한다.
<%@ page errorPage="error.jsp" %>
발생하는 에러페이지를 그대로 보여주면 경로가 다 노출되기때문에 따로 페이지를 만들어서 처리를 해야한다.
JSP 내에서 특정 동작을 하도록 지시하는 태그
기본 타입
<jsp:action_name attribute="value" />
action_name의 종류
jsp:include
jsp:useBean
jsp:setProperty
jsp:getProperty
jsp:forward
공통 속성
id, scope, 등등
<jsp:forward page="호출 경로"></jsp:forward>
<jsp:include page="파일 상대경로"></jsp:include>
요즘에는 이 방법보단 ajax 비동기 방식을 사용한다.
주석쓸때 html용 <!-- -->
주석을 써서 <%%>나 액션태그를 쓰면 오류가 나더라구요 주의.,.. jsp주석쓸땐 <%-- --%>
을 꼭 쓸것!
다른 폴더 속 하나의 파일에 접근하려면 상대경로는 ../로 현재 폴더 밖으로 나간 뒤에 접근.