사용자로부터 Hello.jsp라는 요청을 받은 JSP 컨테이너는 .jsp 파일을 서블릿 프로그램인 .java로 변환한다. 이후 변환된 서블릿 프로그램을 컴파일하여 .class 파일로 만든 후 웹 서버에 전달한다. 이후 웹 서버는 정적 웹 페이지처럼 *.class 파일의 실행 결과를 웹 브라우저에 응답으로 전달한다. 이 과정에서 로딩 및 초기화, 실행, 소멸의 과정을 거친다.
자바를 기반으로 하는 웹 프로그래밍 언어
서블릿(Servlet) 기술의 확장
유지 관리가 용이
빠른 개발이 가능
코드 길이의 축소화
자바를 사용하여 웹페이지를 동적으로 생성하는 서버 측 프로그램
<%...%>를 사용하며 JSP 컨테이너가 자바 코드가 삽입되어 있는 스크립트 태그를 처리하고 나머지는 HTML 코드나 일반 텍스트로 간주
선언문<%! ... %>
스크립틀릿<% ... %>
표현문<%= ... %>
예시1)
<body>
<%!int count = 3;
String makeItUpper(String data){
return data.toUpperCase();
}
%>
<%
for(int i=1; i < count; i++){
out.println("Hi"+i+"<br>");
}
%>
<%= makeItUpper("hello") %>
</body>
첫번째로 선언문 태그을 통해 count라는 변수와 makeItUpper이라는 메소드를 정의한다. (서블릿 프로그램에서 _jspService() 메소드의 외부에 배치)
두번째는 스크립틀릿 태그로 "Hi"가 2번 출력되게하는 자바 로직 코드를 작성하였다. (서블릿 프로그램에서 _jspService() 메소드의 내부에 배치)
세번째는 표현문 태그로 선언문의 메소드를 호출하여 문자열 형태로 출력되게 하였다. makeItUpper()메소드는 서블릿 프로그램의 out.print() 메소드의 매개변수 자체가 되기 때문에 세미콜론(;)을 사용해선 안된다.
++
선언부, 처리부, 출력부는 scripting_jsp.java와 class로 보관된다.
<body>
<%
int a = 2;
int b = 4;
int c = 6;
out.print(a+b+c);
%>
<%= a+b+c %>
</body>
스크립틀릿 태그에 변수가 선언이 가능한지 궁금해서 직접 간단하게 만들어보았는데 정상적으로 출력되는 것을 확인할 수 있었다.
또한 표현문 태그 안 a+b+c가 out.print()의 매개변수로 들어가는걸 알 수 있다.
학교 수업 들으면서 만들었는뎅.. 뒤에 쇼핑몰 만드는 프로젝트도 해봐야겠당 히히
++ JSP 컨테이너, 웹 서버의 역할을 인지하고 우리가 만드는 JSP파일은 웹 서버에 동적 페이지 생성을 요청하는 파일이라는 것을 알 수 있음