관리 메뉴

프로그래밍 삽질 중

JSP 전반적인 설명 및 스크립트 태그(+스크립틀릿 태그) 본문

과거 프로그래밍 자료들/자바(Java)

JSP 전반적인 설명 및 스크립트 태그(+스크립틀릿 태그)

평부 2021. 4. 8. 09:32

※ 웹 프로그래밍 언어
- 클라이언트 측 실행 언어와 서버 측 실행 언어로 구분
- JSP는 서버 측 웹 프로그래밍 언어 중 하나임

 


※ JSP 특징
- 서블릿 기술 확장
- 유지 관리가 용이
- 빠른 개발 가능
- 코드 길이 줄일 수 있음


※ 컨테이너
- 웹 컴포넌트 : 동적 콘텐츠 생성
- 컴포넌트를 저장, 메모리 로딩, 객체 생성 및 초기화
- 서블릿의 생명주기 관리
- JSP를 서블릿으로 변환

 


※ JSP 페이지 처리과정
1) 웹 페이지로부터 JSP에 대한 사용자 요청이 컨테이너로 전달
2) 요청 JSP에 대한 서블릿이 존재하면 다음 단계로 진행, 존재하지 않을 경우 JSP를 .java파일로 변환 후
.class 파일로 컴파일
3) 컴파일된 서블릿 클래스를 컨테이너 메모리에 적재 후 실행

 


※ HTTP(Hyper Text Transfer Protocol)
- TCP/IP 4계층에서 애플리케이션 계층에 해당
- 요청 방식 : GET(주소 줄에 URL 직접 입력하거나 하이퍼링크 클릭, 데이터가 헤더에 포함)
    POST(데이터가 몸체에 전달)
- 전송 계층에서 TCP를 사용하여 웹 브라우저와 웹 서버간에 통신하는 프로토콜
- 무연결 : 응답 후 연결 끊음
- 무상태 : 요청마다 다른 연결

 


※ HTTP 요청 정보
- 프로토콜 : 서버와 통신하기 위한 규약
- 서버 주소 : 네트워크상에 연결된 서버를 찾아가기 위한 정보
- 포트 번호 : 컴퓨터에서 동작하고 있는 서버로 접속하기 위한 정보, 0-65535번
- URL: 서버에서 서비스하는 자원 정보


※ 스트립트 태그 
-<% ... %> 사용
- JSP가 서블릿 프로그램에서 서블릿 클래스로 변환 시 사용
- JSP 컨테이너가 자바 코드에 삽입되어 있는 스크립트 태그를 처리하고 나머지는 HTML코드나 일반 텍스트로 간주

 


※ 스크립트 태그 종류
1) <%! ... %> (선언문) : 멤버 변수나 메소드 선언
2) <% ... %> (스크립틀릿) : 자바로직 코드를 작성하는데 사용
3) <%= ... %> (표현식) : 변수, 계산식, 메소드 호출 결과를 문자열 형태로 출력
4) <%@ ... %> (지시문) : 페이지에 대한 정보 설정


※ 스크립틀릿 태그
- 자바 코드로 이루어진 로직 부분 표현
- JSP페이지가 요청될 때마다 수행되어야 하는 자바 코드
- JSP 페이지가 서블릿으로 변환되고 요청될 _jspService(Tomcat 기준) 메소드 안에 선언되는 요소
- <% 자바 실행문; %>


※ 표현문 태그
- 웹 브라우저에서 출력할 부분 표현
- 표현문 태그에 숫자, 문자, 불(boolean) 등 기본 데이터 타입과 자바 객체 타입도 사용 가능
- 스크립트릿 코드 내 out이라는 내장객체를 통해 브라우저 출력 가능
- <%= 자바코드 %>


※ 선언문 태그
- jsp에서 사용될 변수나 메소드를 선언할 수 있는 영역들의 요소
- jsp 페이지 내에서 변수 및 메소드를 선언 후 

 


스크립틀릿 태그
- 변수 선언 가능, 메소드 선언 불가
- 서블릿 코드로 변환 시 _jspService() 메소드 내부에 위치

 


선언문 태그
- 변수나 메소드 선언 가능
- 서블릿 코드로 변환 시 _jspService() 메소드 외부에 배치

 

 

[예제 1] Q3 1부터 100까지의 합을 구하여 다음과 같이 출력하기

예_ 1+2+3+......100 = 5050

 

 

 

[예제 1 답]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Q3 1부터 100까지의 합을 구하여 다음과 같이 출력하기 </h1>
1부터 100까지의 합은?
<%
    int sum = 0;
    for(int i=1; i<=100; i++) {
        sum=sum+i;
        if(i<100) {
            out.print(i+"+");
        }
        if(i==100) {
            out.print("100=");
            sum+=100;
        }
    }out.print(sum);%>
</body>
</html>
cs

 

 

[예제 2] 구구단 출력하기(2*1 ~ 9*1)

 

 

[결과]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>구구단 출력</h3>
<%
    for(int i=2; i<10; i++) {
        for(int j=1; j<10; j++) {%>
        <%=i %> * <%=j %> = <%=i*j %> <br>
    <% 
    }
}
%>
</body>
</html>
cs