1) java에서 했던 성적 을 나타내보자
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>02_성적프로그램.jsp</title>
</head>
<body>
<h1>성적프로그램</h1>
<%
String name="겨울밤";
int kor=80, eng=90, mat=85;
int aver= (kor + eng+ mat)/3;
//1)출력
out.println("이름:"+name+"<br>");
out.println("국어:"+kor+"<br>");
out.println("영어:"+eng+"<br>");
out.println("수학:"+mat+"<br>");
out.println("평균:"+aver+"<br>");
//byte int short long
%>
</body>
</html>
왼쪽- 위의 코드를 서버를 통해 출력해 낸값 오른쪽- 그 웹 페이지를 페이지 소스보기 보았다
코드로 나타내는 HTML 문법인 태그는 페이지 소스보기로 보여지지만 JSP는 보여지지 않는다!
2) JSP안에서 표를 작성하여 출력해보자
//2)표작성 출력
out.println("<table border='1px'>");
out.println("<tr>");
out.println("<th>이름</th>");
out.println("<td>"+name+"</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<th>국어</th>");
out.println("<td>"+kor+"</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<th>영어</th>");
out.println("<td>"+eng+"</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<th>수학</th>");
out.println("<td>"+mat+"</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<th>평균</th>");
out.println("<td>"+aver+"</td>");
out.println("</tr>");
out.println("</table>");
결과
3) 표현식(Expression) : out.print() 의 단축키
<table border="1">
<tr>
<th>이름</th>
<td><%out.print(name);%></td>
</tr>
</table>
※ 위와 같이 html <body> 태그안에 테이블을 작성할때 JSP를 이용할 수 있다
<body>
<tr>
<th>국어</th>
<td><%=kor%></td>
</tr>
<tr>
<th>영어</th>
<td><%=eng%></td>
</tr>
<tr>
<th>수학</th>
<td><%=mat%></td>
</tr>
<tr>
<th>평균</th>
<td><%out.print(aver);%></td>
</tr>
</body>
※ 또 다른 방법으로 <%= %>안에 '=' 을 넣어줘서 JSP에서 설정한 변수값을 넣어주면 <%=kor%> 출력가능
같은 결과
4) 배열
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>03_배열.jsp</title>
</head>
<body>
<h1>성적프로그램(배열)</h1>
<%
String[] name={"봄비","여름바다","가을하늘","겨울밤","계절이"};
int[] kor ={100,75,65,85,95};
int[] eng ={100,40,80,95,90};
int[] mat ={95,50,60,35,85};
int[] aver =new int[5];
int[] rank ={1,1,1,1,1};
int size=name.length;
//1)평균을 구하시오
//2)등수를 구하시오(평균을 기준으로)
// name[0]의 평균은
// (kor[0]+eng[0]+mat[0])/3 이다
// aver[0]= (kor[0]+eng[0]+mat[0])/3
// rank[0] 은 rank[1],ranl[2],ranl[3],ranl[4] 과 비교해서
// 작으면 rank[0]+=1 크면 rank[0]=rank[0]
for(int a=0; a<size;a++){
aver[a]=(kor[a]+eng[a]+mat[a])/3;
}
for(int a=0; a<size;a++){
for(int b=0; b<size;b++){
if(aver[a]<aver[b]){
rank[a]=rank[a]+1;
}
}
out.println(name[a]+"의 평균은 "+aver[a]+"이고 등수는 "+rank[a]+"입니다"+"<br>");
}//for end
out.println("<hr>");
%>
▲위에 할당한 배열로 각 이름에 맞는 평균과 등수를 구함
▼HTML에서 표를 이용해 데이터 값을 출력해보자
<table border="1">
<tr>
<th>이름</th>
<th>국어</th>
<th>영어</th>
<th>수학</th>
<th>평균</th>
<th>등수</th>
<th>결과</th>
<th>star</th>
<th>우등생</th>
</tr>
<%
for(int a= 0; a<size; a++){
%>
<tr>
<td><%=name[a]%></td>
<td><%=kor[a]%></td>
<td><%=eng[a]%></td>
<td><%=mat[a]%></td>
<td><%=aver[a]%></td>
<td><%=rank[a]%></td>
<td></td>
</tr>
<%
}//for end
%>
</table>
위에서 구한 데이터들을 HTML 에서 표로 작성
※밑에 있는 이름에 맞는 데이터를 각각 넣어줄때 for문을 사용해 줘야 하는데 HTML에서는 for이 들어가지 않기 때문에 <% %>를 중간에 넣어줘서 for 문을 넣고 위에서 만든 배열을 반복문으로 레터링시켜준다.
▼위의 테이블에서 결과 값을 출력해 보자
<%
if(aver[a]>=70){
if(kor[a]<40||eng[a]<40||mat[a]<40){
out.print("재시험");
}else{
out.print("합격");
}
}else{out.print("불합격");}
%>
<td></td>안에 if문으로 조건을 걸어주어 과락을 결과값에 출력해준다
▼위 조건과 같이 점수 10점당 ★을 넣어주고 평균이 95점 이상인 학생을 장학생을 빨강색으로 나타내 주자
<td>
<%
if(aver[a]>=70){
if(kor[a]<40||eng[a]<40||mat[a]<40){
out.print("재시험");
}else{
out.print("합격");
}
}else{out.print("불합격");}
%>
</td>
<td>
<%
for(int star=1;star<=aver[a]/10; star++){
out.print("<style>.a{color:orange}</style>");
out.print("<strong class='a'>★</strong>");
}
%>
</td>
<td>
<%
//평균이 95이상이면 장학생(진하게,빨강색)
if(aver[a]>95){
out.print("<style>.b{color:red}</style>");
out.print("<strong class='b'> 장학생</strong>");
}
%>
</td>
5) 메소드
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>04_메소드.jsp</title>
</head>
<body>
<h1>JSP 사용자 정의 함수</h1>
최대값 : <%=max(3,5) %>
<hr>
두수 사이의 차이 : <%=diff(2,6) %>
<%!
//<% 태그에 !만 넣어주면 된다
//JSP함수 작성 영역 (많이 사용안함)
public int max(int a ,int b){
return Math.max(a,b);
}//max() end
public int diff(int a ,int b){
int c= a-b;
return (c<0)?-c:c;
}//diff() end
%>
</body>
</html>
<%%>로 메소드를 불러와 변수값을 넣어준 함수를 만들어 보았다
-max(){} 함수는 Math.max로 매개변수 a,b 값을 넣어주어 함수 생성
-diff(){} 함수는 3항연산자를 이용해 두 수의 차인 함수를 생성하였다