JSP - 기본문법 (2022-09-21)

2022. 9. 21. 11:153층 1구역 - 개발의 장/JSP

1. 서론

 

뭔가 돌고돌아 본격적으로 jsp를 하는거 같은데....필자가 제목에 jsp는 붙였으나 여태까지 한건 html, js, css이다.

이제 jsp에 자바코드를 적을 수 있게 도와주는

 

기본 문법에 대해 알아보자.

 

2. 본론

<%@ Directive %> : 자바 페이지 환결 설정(exam : include file, import)
<%! Declaration(선언부) %> : 자바 코드 작성 (클래스에 작성 방식, field, method, 전역변수, 함수)
<%= Expression(출력부) %> : out.print()와 같은 출력문 작성.
<% Scriptlet(스크립릿) %> : 자바 코드 작성 (메서드 안에 작성 방식), 지역변수

<%-- 주석 --%> : 주석

 

아래 코드는 스크립릿 내부에 자바코드를 작성할 수 있다는 것을 보여주고 있다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ex01</title>
<!-- http://localhost:8085/jspExam/tag/ex01.jsp -->
</head>
<body>
<%-- 
	<%@ Directive %> : 자바 페이지 환결 설정(exam : include file, import)
	<%! Declaration %> : 자바 코드 작성 (클래스에 작성 방식, field, method)
	<%= Expression %> : out.print()와 같은 출력문 작성.
	<% Scriptlet %> : 자바 코드 작성 (메서드 안에 작성 방식)
 --%>
 
 <% 
 	//자바주석
 	/*자바주석*/
 	int data = 10;
 	out.print(data);
 %>
 <br> <h3><%= data %></h3>
</body>
</html>

 

스크립릿 내부int data = 10; 즉, 10을 data변수에 넣어 out.print(data); 를 통해 10을 출력하는 모습과

Expression(출력부)를 통해 data변수만 작성 == out.print(data); 둘은 같은 뜻이기 때문에

10을 출력한다.

 

스크립릿에 작성한 out.print();와 <%= Expression(출력부) %>출력이 같다 라는 것을 보여주는 또 다른 코드이다.

<%= Expression(출력부) %>를 썼을 때와 스크립릿을 통해 out.print를 썼을 때 비교 출력을 해주는데

결과를 보면 둘다 동일한 결과를 볼 수 있다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ex02</title>
<!-- http://localhost:8085/jspExam/tag/ex02.jsp -->
</head>
<body>
 <%
 	String name = "홍길동";
 %>
 <h1>이름은 <%= name %> 입니다.</h1>
 <h1>이름은 <% out.print(name); %> 입니다.</h1>
</body>
</html>

 

 

 

아래 코드처럼 변수에 String값이 들어갔다면 java와 동일하게 Integer와 Double형으로 형 변환하여 출력해줄 수 있다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ex03</title>
<!-- http://localhost:8085/jspExam/tag/ex03.jsp -->
</head>
<body>
 <%
 	String data1 = "100";
 	String data2 = "1.2";
 	
 	int intData = Integer.parseInt(data1);
 	double doubleData = Double.parseDouble(data2);
 %>
 <h1>결과는 <%= intData + doubleData %> 입니다.</h1>
 <h1>결과는 <% out.print(intData + doubleData); %> 입니다.</h1>
</body>
</html>

 

 

스크립릿에는 자바코드가 들어올 수 있기 때문에 if문도 자유롭게 사용이 가능하다.

%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ex04</title>
<!-- http://localhost:8085/jspExam/tag/ex04.jsp -->
</head>
<body>
	<%
	boolean data = false;
	if (data) {
		out.print("참 일때 실행할 문장<br>");
	} else {
	%>
		<h3><%="거짓 일 때 실행할 문장"%></h3>
	<%
	}
	%>
</body>
</html>

 

 

for문도 스크립릿을 통해 사용 가능

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ex05</title>
<!-- http://localhost:8085/jspExam/tag/ex05.jsp -->
</head>
<body>
	<%
		for(int i = 1; i < 7; i++) 
			out.print(String.format("<h%d> h%d : hello jsp </h%d>", i, i, i));
		
	%>
		
</body>
</html>

 

 

아래 코드는 java내에 util를 사용하는 예제이다. 

처음에 기본 문법에 대해 설명할 때 <%@ Directive %> : 자바 페이지 환결 설정(exam : include file, import) 

위와 같은 Directive가 있다. 

 

대개 스크립릿에 자바코드를 작성할 때 Ctrl + space키를 통해 자동완성 추천을 받아 알아서 import를 해주는데

jQueary와 같은 다른 라이브러리를 사용할 경우 직접 import 코드를 작성해야 할 듯 하니 지나치지 말고

'이런 애도 있구나~' 라는 정도로 쓰임새만 스쳐지나가도록 하자. (어차피 Array라던가 그런거 쓰면 봐야 돼...)

<%@page import="java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Ex06</title>
<!-- http://localhost:8085/jspExam/tag/ex06.jsp -->
</head>
<body>
	<%
		Calendar cal = Calendar.getInstance();
	%>
	오늘은
	<%=cal.get(Calendar.YEAR) %> 년
	<%=cal.get(Calendar.MONTH) + 1%> 월
	<%=cal.get(Calendar.DATE) %> 일
		
</body>
</html>

 

3. 결론

 

다시 자바코드를 사용하기 시작했다. 치다 보니 알게 된건데, 머리로 생각하기 보단 일단 손이 먼저 코드를 치고 있었다.

필자는 안 그럴 줄 알았는데 강사님께서 어느순간 알아서 칠거 라더니....어느정도 그러고 있다.

 

흥미롭다...