[JSP] JSP 기초 문법

mingsso·2024년 4월 7일

JSP

목록 보기
2/5

1️⃣ JSP의 스크립트

스크립트의 요소란 JSP 프로그래밍에서 사용되는 문법의 표현 형태를 말함

JSP의 스크립트 요소에는 4가지가 있음

  • 선언문 (Declaration)
  • 스크립트릿 (Sciptlet)
  • 표현식 (Expression)
  • 주석 (Comment)
<%@ page contentType="text/html;charset=EUC-KR"%>
<html>
<title>JSP 스크립트 Example</title>
<body>
	<h1>Script Example</h1>
    <%!
    	String declaration = "Declaration";
    %>
    <%!
    	public String decMethod() {
        	return declaration;
        }
    %>
    <%
    	String scriptlet = "Scriptlet";
        String comment = "Comment";
        out.println("내장객체를 이용한 출력 : " + declaration + "<p>");
    %>
    선언문의 출력1 : <%=declaration%><p>
    선언문의 출력2 : <%=decMethod()%><p>
    스크립트릿의 출력 : <%=scriptlet%><p>
    <!--JSP주석부분-->
    <!--JSP 주석1 : <%=comment%>--><p>
    <%--JSP 주석2 : <%=comment%> --%>
    <%	/* 주석
    	(여러줄 주석)
        */
    %>
    <%// 주석(한줄 주석%>
</body>
</html>


위 코드의 출력 결과는 아래와 같음

Script Example 1

내장객체를 이용한 출력 : Declaration

선언문의 출력1 : Declaration

선언문의 출력2 : Declaration

스크립트릿의 출력 : Scriptlet

선언문 (Declaration)

JSP에서 사용될 변수나 메소드를 선언할 수 있는 영역의 요소
선언문에서 선언된 변수를 '멤버 변수'라고 부름

<%!
	String name = "JSPStudy";
    int year = 2013;
%>

선언문에서 선언된 변수는 JSP 페이지가 서블릿 코드로 변환되면, 서블릿 클래스의 멤버변수가 됨
-> JSP 페이지 어느 곳에서든지 이 변수의 값을 참조하여 동적으로 HTML을 생성할 수 있음

<%!
	String name = "Korea";
    public String getName() {
    	return name;
    }
%>

But 스크립트 요소 중에서 선언문은 잘 사용되지 않음

보통 클래스 내 여러 메소드에서 공통적으로 사용되는 값을 멤버 변수로 선언하지만, JSP 페이지에서 메소드를 선언하는 일이 거의 없음

JSP 페이지에서 선언된 메소드는 자신의 페이지에서만 반복적으로 사용할 수 있기 때문에, 차라리 반복적으로 사용할 기능의 메소드가 필요하다면 자바 파일을 만들어서 모든 JSP 페이지에서 참조하여 사용하기 때문

스크립트릿 (Sciptlet)

일반적으로 가장 많이 사용되는 스크립트 요소
JSP 페이지가 서블릿으로 변환되고 요청될 때 _jspService 메소드 안에 선언이 되는 요소

스크립트릿은 선언문과 달리 선언된 변수는 지역 변수로 선언이 되고, 메소드 선언은 할 수 없음 (반드시 초기화를 해줘야 함)

<%
이곳에 필요한 자바코드를 삽입합니다.(지역 변수 선언, for, while, if 등...)
%>

표현식 (Expression)

변수를 출력하거나 메소드의 결과 값을 브라우저에 출력할 수 있음
스크립트릿 코드 내에서 out이라는 내장객체를 통해서 브라우저에 출력할 수도 있음

표현식에서는 서블릿 코드로 변환될 때 자동적으로 세미콜론이 붙여지기 때문에, 변수나 메소드를 출력하려고 할 때 세미콜론을 표기하지 않아도 됨

<%=변수 혹은 메소드%>

<%!
	String name[] = {"Java", "JSP", "Android", "Struts"};
%>
<% for (int i=0; i < name.length; i++) { %>
	<tr><td><%=i%></td>
    <td><%=name[i]%></td>
   	</tr>
<%}%>

주석 (Comment)

  • HTML 형식의 주석
<!-- Fighting <%=name%> -->

서블릿으로 코드 전환될 때 주석 안에 있는 표현식을 컴파일한 후 생성되는 출력물이 주석으로 처리됨

  • JSP 형식의 주석
<%-- Fighting <%=name%> --%>

서블릿으로 코드 전환될 때도 위 주석은 무시됨

  • 스크립트 요소의 주석
<% /*주석.....여러 줄 주석 및 부분 주석)*/ %>
<% //주석.....(한 줄 주석)%>



2️⃣ JSP의 기본 제어문

if-else (조건 분기문)

if.html

<form method="post" action="if.jsp">
이름 : <input name="name><p/>
좋아하는 색깔 : <select name="color">
	<option value="blue" selected>파란색</option>
</select><p/>


if.jsp

<%@ page contentType="text/html;charset=EUC-KR"%>
<h1>If-else Example</h1>
<%!
	String msg;
%>
<%
	String name = request.getParameter("name");
    String color = request.getParameter("color");
  	
    if (color.equals("blue")) {
    	msg = "파란색";
    }
    else if (color.equals("red")) {
    	msg = "붉은색";
    }
    else {
    	color = "white";
        msg = "기타색";
    }
%>
<body bgcolor=<%=color%>>
<b><%=name%></b>님이 좋아하는 색깔은 <b><%=msg%></b>입니다
</body>

for (반복문)

for.jsp

<%@ page contentType="text/html;charset=EUC-KR"%>
<h1>For Example</h1>
1에서 10까지의 합은 ?<p>
<%
	int i, sum = 0;
    for (i=1; i<=10; i++) {
    	if (i<10) {
%>
	<%=(i + " +")%>
<%
		} else {
    		out.println(i + " = ");
    	} // if-else
    	sum += i;
 	} // for
%>
<%=sum%>

while (반복문)

while.jsp

<%@ page contentType="text/html;charset=EUC-KR"%>
<h1>While Example</h1>
1에서 10까지의 합은 ?<p>
<%
	request.setCharacterEncoding("EUC-KR");
    String msg = request.getParameter("msg");
    int number = Integer.parseInt(request.getParameter("number"));
    int count = 0;
    while (number > count) {
%>
<b><%=msg%></b><br/>
<%
		count++;
 	} 
%>
profile
🐥👩‍💻💰

0개의 댓글