JSP 기초

공진·2023년 10월 12일
0

지능웹프로그래밍

목록 보기
1/2
post-thumbnail

동작


사용자로부터 Hello.jsp라는 요청을 받은 JSP 컨테이너는 .jsp 파일을 서블릿 프로그램인 .java로 변환한다. 이후 변환된 서블릿 프로그램을 컴파일하여 .class 파일로 만든 후 웹 서버에 전달한다. 이후 웹 서버는 정적 웹 페이지처럼 *.class 파일의 실행 결과를 웹 브라우저에 응답으로 전달한다. 이 과정에서 로딩 및 초기화, 실행, 소멸의 과정을 거친다.

JSP(Java Server Page)란?

자바를 기반으로 하는 웹 프로그래밍 언어

특징

서블릿(Servlet) 기술의 확장
유지 관리가 용이
빠른 개발이 가능
코드 길이의 축소화

서블릿(Servlet)이란?

자바를 사용하여 웹페이지를 동적으로 생성하는 서버 측 프로그램

JSP 페이지의 처리 과정

  1. 웹 브라우저가 웹 서버에 JSP를 요청(hello.jsp)
  2. 웹 서버는 요청된 파일에서 .jsp 확장자를 발견하여 JSP페이지임을 확인하고 웹 서버에 있는 JSP 컨테이너에 전달
  3. JSP 컨테이너는 JSP 페이지를 서블릿 프로그램인 Hello_jsp.java로 변환
  4. JSP 컨테이너가 서블릿 프로그램을 컴파일하여 Hello_jsp.class로 만들고 이를 웹 서버에 전달
  5. 웹 서버는 정적 웹 페이지처럼 *.class 파일의 실행 결과를 웹 브라우저에 응답으로 전달하므로 웹 브라우저는 새로 가공된 HTML 페이지를 동적으로 처리한 결과를 보여줌

스크립트 태그

스크립트 태그의 종류

  1. 스크립트 태그
  • HTML 코드에 자바 코드를 넣어 프로그래밍 수행하는 기능을 구현
  1. 디렉티브 태그
  • JSP 페이지를 어떻게 처리할 것인지 설정하여 JSP 페이지에 대한 정보를 JSP 컨테이너에 송신
  1. 액션 태그
  • 클라이언트/서버에 어떤 작동을 행하도록 명령을 지시하는 XML 형태의 태그로 JSP 페이지 사이에서 제어를 이동시킴

스크립트 태그

<%...%>를 사용하며 JSP 컨테이너가 자바 코드가 삽입되어 있는 스크립트 태그를 처리하고 나머지는 HTML 코드나 일반 텍스트로 간주

선언문<%! ... %>

  • 자바 변수나 메소드를 정의하는데 사용
  • 선언문을 통해 생성된 변수나 메소드는 전역변수로서 사용 가능

스크립틀릿<% ... %>

  • 자바 로직 코드를 작성하는데 사용
  • 메소드 없이 변수만을 선언할 수 있음

표현문<%= ... %>

  • 변수, 계산식, 메소드 호출 결과를 문자열 형태로 출력하는데 사용
  • 웹 브라우저에 출력할 부분을 표현하며 숫자, 문자, Boolean, 자바 객체 타입 등 사용 가능
  • 표현문 태그에 작성된 모든 자바 코드의 값은 문자열로 반환되어 웹 브라우저에 출력됨

예시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파일은 웹 서버에 동적 페이지 생성을 요청하는 파일이라는 것을 알 수 있음

0개의 댓글

관련 채용 정보