Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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 30
Tags
more
Archives
Today
Total
관리 메뉴

개발자입니다

IT BANK) JSP 7일차 - JSP(태그 종류, 기초) 본문

JSP/IT BANK - JSP

IT BANK) JSP 7일차 - JSP(태그 종류, 기초)

끈기JK 2022. 9. 15. 16:06

220915

 

 

■ JSP

 

back-end는 front-end를 어느 정도는 알고 있음

front-end는 back-end를 몰라도 가능함

 

Oracle database가 죽었다고 하나 아직 점유율 1위

Database 언어간 기초 문법은 거의 똑같다.

JSP 알고난 후 DB 알아야 한다.

학습 순서: 사용자 → Front-end → Back-end → DB

 

-JSP 실습 준비

Dynamic web project 생성 : jspExam - server에 add

 

 

■ JSP 태그 종류

 

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

<% %> : scriptlet(스크립트릿) : 자바의 코드를 작성하는 영역(메서드 안에 작성하는 영역). 내부에 메서드 생성 불가. 메서드 안에서만 사용하는 효과를 얻기 위해 사용. jsp가 끝나면 변수 초기화
<%! %> : Declaration(선언문) : 자바의 코드를 작성하는 영역(클래스 안에 작성하는 영역). 자바 파일 안에 클래스를 구성하는 방법이 있기에 사용 빈도가 낮음. 내부에 메서드 생성 가능. jsp가 끝나도 변수 유지. 그러나 다른 파일에서 사용하기 어렵다.
<%@ %> : Directive(지시자, 지시어) : JSP의 환경 설정을 담는 태그
<%= %> : Expression(표현식) : 화면에 출력하는 태그. print(). Expression Language(EL)라는 출력만 하기 위한 태그가 있음.

	 <%
	 	int data;  // 지역 변수
	 /* 메서드 정의는 할 수 없음
	 	public void inner(){
	 		
	 	}
	 */
	 %>
	 public void exam(){
	 	int data;
	 		public void inner(){
	 		
	 		}
	 }
	 ===============================
	 <%!
	 	int data;
	 	public void exam(){
	 		
	 	}
	 %>
	 public Class Exam{
	 	int data;
	 	public void exam(){
	 	
	 	}
	 }

 

out.print : 사용자에게 프린트

<body>
	<%
		int data = 10;
		System.out.println("data : " + data);  // 콘솔에 프린트
		out.print("<h2>" + data + "</h2>");  // 웹에 프린트
		
	%>
</body>

 

out.print 와 동일하게 아래 두 코드 사용 가능하다.

<body>
		<%="<h2>" + data + "</h2>" %>
		<h2> <%=data %> </h2>  // HTML 태그 내부에 자바 변수를 출력시 사용
</body>

 

-변수를 웹에 출력

<body>
	<%
		int data1 = 10;
		int data2 = 20;
		int result = data1 + data2;
		out.print("<h3>출력 : " + data1 + " + " + data2 + " = " + result + "</h3>");
	%>
	
	<h3>출력 : <%=data1 + " + " + data2 + " = " + result %></h3>
	<h3>출력 : 10 + 20 = 30</h3>
</body>

 

-변수에 데이터를 입력하고 출력하기

<title>ex4</title>
</head>
<body>
	<%--
		변수에 데이터를 입력하고 출력하기.
		이름 : 변수데이터
		나이 : 변수데이터
	--%>
	<%
		String name = "김변수";
		int age = 20;
	%>
	이름 : <%=name %> <br>
	나이 : <%=age %> <br>
</body>

 

-if문

표현식(<%= %>)은 스크립트릿(<% %>) 안에서 안됨.

그래서 표현식 말고 스크립트릿이 편함

<title>ex5</title>
</head>
<body>
	<%
		boolean b = true;
		if(b == true){
			// 로그인 성공 출력
			out.print("<b> 로그인 성공</b><br>");
		}else{
			// 로그인 실패 출력
			out.print("<b> 로그인 실패</b><br>");
		}
	%>
	<!-- 같은 식 -->
	<%
		boolean b2 = false;
		if(b2 == true){
	%>
			<b><%="로그인 성공" %></b><br>
	<%
		}else{
	%>
			<b><%="로그인 실패" %></b><br>
	<%
		}
	%>
</body>

 

-for문

printf() 사용 불가. out.print(String.format("텍스트", args...)) 로 사용

<title>ex6</title>
</head>
<body>
	<%
		for(int i=1; i<7; i++){
			out.print(String.format("<h%d> Hello JSP <h%d>", i, i));
		}
	%>
</body>

 

-Calendar import 하여 사용

<title>ex7</title>
</head>
<body>
	<%
		Calendar cal = Calendar.getInstance();
	%>
	오늘은 <%=cal.get(Calendar.YEAR) %> 년 <%=cal.get(Calendar.MONTH)+ 1 %> 월 <%=cal.get(Calendar.DATE) %> 일 입니다.
</body>

 

-quiz1

구구단 웹에 출력하기

<body>
	<h2> 구구단(2~9단) </h2>
	<%
		for(int i=2; i<=9; i++){
			for(int j=1; j<=9; j++){
				out.print(i + " x " + j + " = " + (i*j) + "<br>"); 
			}
			out.print("<br>");
		}
	%>
</body>

 

-quiz2

	<h2>합계 구하기</h2>
	<%
		int total = 0, evenTotal = 0, oddTotal = 0;
		
		for(int i=1; i<=100; i++){
			total += i;
			if(i%2 == 0){
				evenTotal += i;
			}else{
				oddTotal += i;
			}
		}
	%>
	1 + 2 + 3 ... + 100 = <%=total %> <br>
	1 ~ 100까지 짝수의 합 : <%=evenTotal %> <br>
	1 ~ 100까지 홀수의 합 : <%=oddTotal %> <br>

 


 

■ 선언문(<%! %>)

 

선언문 안에서 접근제어(private등)은 안되지만 메서드 만들어 쓰는건 된다.

선언문 안에 변수 만들면 알아서 0으로 초기화 한다.

해당 jsp 파일 안에서 자주 사용하는 함수는 선언문 내에서 메서드로 사용할 수 있다.

다른 jsp 파일에서 메서드 사용 못하지만 지시자(directive, <%@ %>)로 include 하면 사용 가능하다.

그러나, jsp 방식의 선언문은 jsp만 쓰고 관리가 힘들어서 java로 작성해서 보관하거나 프레임워크 방식으로 사용한다. 

 

-선언문 사용하여 메서드 만들기

<title>ex8</title>
</head>
<body>
	<h2>합계 구하기</h2>
	<%!
		int total;
		int evenTotal;
		int oddTotal;
		
		void totalRange(int begin, int end){  // 메서드 생성
			for(int i=begin; i<=end; i++){
				total += i;
				if(i % 2 == 0){
					evenTotal += i;
				}else{
					oddTotal += i;
				}
			}
		}
	%>
	<%
		int begin = 1;
		int end = 10;
		totalRange(begin, end);
	%>
	<%=begin+" ~ "+end+"의 합 : "+total %> <br>
	<%=begin+" ~ "+end+"의 짝수의 합 : "+evenTotal %> <br>
	<%=begin+" ~ "+end+"의 홀수의 합 : "+oddTotal %> <br>
</body>

 

 

-quiz3

abs(절대값) 함수를 만들고 호출하여 결과를 출력하세요.

	<%!
		int abs(int data){
			if(data < 0)
				data = -data;
			return data;
		}
	%>
	
	<h3> abs(100) : <%=abs(100) %></h3>
	<h3> abs(-100) : <%=abs(-100) %></h3>