개발자입니다
IT BANK) JSP 7일차 - JSP(태그 종류, 기초) 본문
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>
'JSP > IT BANK - JSP' 카테고리의 다른 글
IT BANK) JSP 9일차 - JSP(form, result, 응답) (0) | 2022.09.20 |
---|---|
IT BANK) JSP 8일차 - JSP(내장 객체) (0) | 2022.09.16 |
IT BANK) JSP 6일차 - Javascript, 코드 분리 (0) | 2022.09.14 |
IT BANK) JSP 5일차 - Javascript (0) | 2022.09.13 |
IT BANK) JSP 4일차 - HTML, CSS (0) | 2022.09.08 |