JAVA/JSP

JSP | Script 3대 요소 & Comment 주석

pathas 2020. 2. 17. 22:18

JSP 3대 Script 요소

요소 형식 목적
Scriptlet 스크립트릿 < % % > 프로그래밍 코드(Java code) 기술
Expression 표현식 < %= %> 화면에 출력할 내용 기술
Declaration 선언문 < %! % > 전역 변수 선언 및 메소드 선언

① ScriptLet

ScriptLet(스크립트릿): 웹 상에서 자바코드를 사용할 수 있도록 하는 영역

  1. < % Java Code % >: < & & > 내부에 자바 코드 작성, 주석도 작성 가능
  2. JavaScript 구문이 아니기 때문에 태그 및 표현식 작성 불가
  3. JSP 내부 어디든 선언해서 사용 가능
    단, page Directive 위에 다른 스크립트릿을 사용해서는 안 됨
  4. 순차적으로 실행됨
    head 태그 내부에는 스크립트릿으로 변수를 선언하고
    body 태그 내부의 스크립트릿에서 변수 사용 가능
    → 순차적으로 실행되기 때문에 사용할 변수를 나중에 선언할 수는 없음
  5. 변수(지역 변수)를 선언하거나 간단한 제어문을 쓸 때 사용
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
26
27
28
<%@ 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>
<%
    // 변수 선언
    int count = 3;
%>
</head>
<body>
    <%
        // 웹 페이지에 출력을 수행하는 반복문
        for (int i = 0; i < count; i++) {
            out.println("<h1>JSP 테스트" + i + "</h1><br/>");
        }
        out.print("count: " + count);
    %>
    <!--
    JSP 테스트0
    JSP 테스트1
    JSP 테스트2
    count: 3
    -->
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

② Expression 표현식

출력문 대용으로 간단하게 사용

  • < %=JavaCode% >
    스크립트릿 내부에 = 기호가 추가됨
  • 변수값 출력, 메서드 호출시 사용
    < %=변수명% >, < %=객체명.일반메소드명() % >, < %=정적메소드명() % >
  • 표현식 내부에는 ;(세미콜론)을 작성하지 않음
  • 스크립트릿 내부에는 표현식 작성 불가
  • 출력문 대용이기 때문에 웹 페이지에 출력됨
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<%@ 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>
<%
    // 변수 선언
    int count = 3;
%>
</head>
<body>
    <!-- 표현식 작성 -->
    <%=count%>
    <%=count%>
    <%=count%>
    <!-- 3 3 3 -->
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

③ Declaration 선언문

  • < %!JavaCode% >, 스크립트릿에 !(느낌표)가 추가됨
  • 전역 변수, 메소드 선언시 사용
  • 선언된 위치에 상관없이 변수를 불러다 사용 가능
  • 일반적으로 메소드는 다른 파일에 작성해서 분리함(JavaBean)
    같이 작성할 경우 기능과 디자인이 섞여서 보기도 안 좋고 충돌 가능성이 있음
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>
    <%=sum(53)%>
    <!-- 8 -->
 
    <%=count%>
    <!-- 3 -->
 
    <%!
    // 변수 선언
    int count = 3;
 
    // 메소드 선언
    public int sum(int a, int b) {
        return a + b;
    }%>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

※ JavaBean
DTO(Data Transfer Object): Setter, Getter
DAO(Data Access Object): 웹 상에서 DB에 관련된 메소드만 선언된 클래스


comment 주석

  • <%-- --%>: JSP 주석, 페이지 '소스 보기'에서 주석 확인 불가, 개발자만 확인 가능
  • <!-- -->: HTML 주석, '소스 보기'에서 주석 확인 가능, 클라이언트도 확인 가능
  • //, /* */: Java 주석, 스크립트릿, 표현식, 선언문 내부에 사용
  • HTML 주석 내부에 표현식 사용 가능
    스크립트릿은 사용 불가!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<!-- HTML 주석 -->
<%-- JSP 주석 --%>
<head>
<meta charset="UTF-8">
<title>JSP Comment</title>
</head>
<!-- 5+3 <%=5+3%> -->
 
<%/* 주석 내부에 표현식을 작성하는 경우
소스 보기에서 8이 출력된 것을 볼 수 있음*/%>
 
<body bgcolor="yellow">
    <h1> JSP 주석 확인 예제</h1>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

※ HTTP 상태 500 에러
문법이 잘 못된 경우 발생하는 에러
html 주석 내부에 스크립트릿을 작성했을 때도 발생


종합 예제_표 만들기

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
26
27
28
29
<%@ 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>
<%!
// 문자열 배열 선언
String[] keyword = { "Scriptlet""Expression""Declaration" };
%>
</head>
<body>
<!-- table 태그는 하나만 있으면 되므로 for문 밖에 작성 -->
    <table border="1px solid black" width="200">
        <%
            // tr, td를 for문을 통해서 생성 
            for (int i = 0; i < keyword.length; i++) {
                out.println("<tr><td>" + i + "</td><td class='td2'>" + keyword[i] + "</td></tr>");
            }
        %>
    </table>
    <!--
    0 Scriptlet
    1 Expression
    2 Declaration        
     -->
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

웹 애플리케이션 배포_WAR 내보내기

WAR: Web ARchive로 웹 애플리케이션을 구성하는 파일들을 포함하는 파일

웹 애플리케이션을 완성한 후 서비스하기 위해서는 반드시 WAR파일을 만들어야 함


WAR 파일 생성

  1. 서버 실행 종료
  2. 배포를 원하는 프로젝트 우클릭
  3. Export → WAR file
  4. Destination: 저장 경로 지정
  5. Export source files: 자바 파일을 같이 내보낼 것인지 선택
  6. Overwrite existing file: 이미 존재하는 WAR 파일이 있는 경우 덮어쓸 것인지 선택
  7. Finish

WAR 파일 불러오기

  1. Project Explorer 우클릭
  2. Import → WAR Import
  3. WAR file: WAR 파일 경로 지정
  4. Web project: 프로젝트명 지정, 프로젝트명이 중복되는 경우 충돌
  5. Taget runtime: 런타임 서버 선택
  6. Finish

JSP 기초 문법이라고 할 수 있는 Script 3대 요소와 주석에 대해 알아보았습니다.

Script 요소를 사용함으로써 JSP파일에서 HTML과 Java 코드를 함께 사용할 수 있습니다.

스크립트릿과 선언문의 가장 큰 차이는 선언문의 경우 전역 변수와 메소드를 작성하기 때문에
선언문의 변수는 어디서든 호출할 수 있다는 점입니다.

 

또한 표 만들기 예제에서 볼 수 있듯이

스크립트릿과 HTML 태그를 혼용하는 경우에는

스크립트릿이 순차적으로 실행되면서 HTML태그와 섞이지 않도록 주의해야 하겠습니다.

 

마지막으로 동적 웹 페이지의 배포를 위해서는 반드시 WAR 파일을 생성해야 한다는 점을 기억해야겠습니다.