WEB/JSP

[JSP] table, calendar, operator, declare

hvoon 2022. 9. 9. 18:42

table

HTML 테이블 생성

<table cellspacing="1" bgcolor="black" width="500">
	<tr bgcolor="white" height="80">
	<td>1행 1열</td><td>1행 2열</td><td>1행 3열</td><td>1행 4열</td><td>1행 5열</td>
	</tr>
	<tr bgcolor="white" height="80">
	<td>2행 1열</td><td>2행 2열</td><td>2행 3열</td><td>2행 4열</td><td>2행 5열</td>
	</tr >
	<tr bgcolor="white" height="80">
	<td>3행 1열</td><td>3행 2열</td><td>3행 3열</td><td>3행 4열</td><td>3행 5열</td>
	</tr>
	<tr bgcolor="white" height="80">
	<td>4행 1열</td><td>4행 2열</td><td>4행 3열</td><td>4행 4열</td><td>4행 5열</td>
	</tr>
	<tr bgcolor="white" height="80">
	<td>5행 1열</td><td>5행 2열</td><td>5행 3열</td><td>5행 4열</td><td>5행 5열</td>
	</tr>
</table>

JSP 테이블 생성

<table cellspacing="1" bgcolor="black" width="500">
<%
	for(int i=1; i<=5; i++){
%>
		<tr bgcolor="white" height="80">
<%
			for(int j=1; j<=5; j++){
%>
				<td><%=i %>행 <%=j %>열</td>
<%
			}
%>
		</tr>
<%
	}
%>
</table>


calendar

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Calendar" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>07_Calendar.jsp</title>
<style type="text/css">
	td{font-weight:bold; font-size:110%; }
	tr>td:first-child{color:red;}
	tr>td:last-child{color:blue;}
	a{text-decoration:none; font-size:110%}
</style>
</head>
<body>
<%
	Calendar sDay=Calendar.getInstance(); 
    // 출력될 달력의 1일자를 저장할 객체
	Calendar eDay=Calendar.getInstance(); 
    // 출력될 달력의 말일자가 저장될 객체
	
	int sYear=sDay.get(Calendar.YEAR); // 출력월의 날짜의 연도
	int sMonth=sDay.get(Calendar.MONTH); // 출력월 날짜의 월(0~11)
	
	// 오늘 날짜로 sYear, sMonth 변수를 설정했다가 
    // 전달되는 파라미터가 존재한다면 그 값으로 대체
	if(request.getParameter("sYear")!=null)
		sYear=Integer.parseInt(request.getParameter("sYear"));
	
	if(request.getParameter("sMonth")!=null){
		sMonth=Integer.parseInt(request.getParameter("sMonth"));
		if(sMonth==12) {
			sMonth=0;
			sYear++;
		}
		if(sMonth==-1){
			sMonth=11;
			sYear--;
		}
	}
	// request: 웹페이지에 별도로 만들지 않아도 
                존재하는 서버에 자료를 요청하기 위한 객체

	sDay.set(sYear,sMonth,1); // 출력할 월의 1일자로 설정
	eDay.set(sYear,sMonth+1,1); // 다음달 1일로 설정 후 
	eDay.add(Calendar.DATE,-1); // 바로 전날로 조정 -> 이달의 말일
	
	int START_WEEK=sDay.get(Calendar.DAY_OF_WEEK); 
    // 1:일요일, 2:월요일...
	
	int i,k,cnt=0; // i는 반복실행에 사용, k는 날짜 출력에 사용, 
                   // cnt는 줄바꿈에 사용
	
%>
	<table width="560" align="left" cellspacing="1" bgcolor="black">
		<tr bgcolor="white" height="50">
			<td align="center" colspan="7" style="font-size:150%">
				<a href="07_Calendar.jsp?sYear=<%=sYear%>
				&sMonth=<%=sMonth-1%>">이전달</a>
				&nbsp;&nbsp;&nbsp;
				<%=sYear %>년 <%=sMonth+1 %>월
				&nbsp;&nbsp;&nbsp;
				<a href="07_Calendar.jsp?sYear=<%=sYear%>
				&sMonth=<%=sMonth+1%>">다음달</a>
			</td>
		</tr>
		<tr bgcolor="white" height="50">
			<td align="center" width="80">일</td>
			<td align="center" width="80">월</td>
			<td align="center" width="80">화</td>
			<td align="center" width="80">수</td>
			<td align="center" width="80">목</td>
			<td align="center" width="80">금</td>
			<td align="center" width="80">토</td>
		</tr>

<!-- 첫번째행: 1일자 요일 전까지 열에는 공백, 그 위부터는 날짜가 1,2,3... -->
		<tr bgcolor="white" height="50">
<%
			for(i=1; i<START_WEEK; i++){ %>
				<td>&nbsp;</td> 
            <!-- 첫칸부터 시작날짜의 요일바로 전열까지 빈칸 표시 -->
<%
			}
            for(i=1; i<=8-START_WEEK; i++){ %>
				<td align="right"><%=i %>&nbsp;</td> 
            <!-- 1일자부터 토요일까지 날짜 표시 -->
<%
			} %>
		</tr>
	
<!--  두번째행부터 이어지는 날짜를 표시: 
      현재 표시할 날짜 -i, i부터 말일까지 표시 -->
		<tr bgcolor="white" height="60">
<%
			for(k=i; k<=eDay.get(Calendar.DATE);k++){ %>
				<td align="right"><%=k%>&nbsp;</td><!-- 날짜출력 -->
<%
				cnt++; // 날짜 한 번 표시하고 cnt 증가
				if(cnt%7==0){ %>
			</tr>
			<tr bgcolor="white" height="60">
<%
				}
			}
			for(i=1; i<=7-(cnt%7); i++){ %>
				<td>&nbsp;</td>
<%
			} %>
		</tr>
	</table>
</body>
</html>

6월에서 이전달 클릭하면 나타나는 화면
6월에서 다음달 클릭하면 나타나는 화면


operator

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>01_Operator.jsp</title>
</head>
<body>
	<%
	int num1=20;
	int num2=7;
	double num3;
	int add=num1+num2;
	out.print(num1+" + "+num2+" = "+add+"<br>");
	add=num1-num2;
	out.print(num1+" - "+num2+" = "+add+"<br>");
	add=num1*num2;
	out.print(num1+" * "+num2+" = "+add+"<br>");
	num3=num1/(double)num2;
	out.print(num1+" / "+num2+" = "+num3+"<br>");
	// <%= 를 대신할 메서드 out.print()
	%>
	<!-- out.print(): System.out.print()와 비슷해보이지만 
         이 메서드는 웹페이지에 출력하는 메서드 -->
</body>
</html>


declare

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>02_Declare.jsp</title>
<%-- jsp는 실행영역과 선언부영역으로 구분됨. 
     보통 실행영역은 body 안에서 <%%>로 표시된 곳에 기술되지만 
     선언부는 head 부분에서 <%! %>로 표시된 곳에 대부분 기술됨 --%>
<%!
	// 선언부의 시작: 선언부 영역은 변수, 메서드 등이 정의됨

	// 변수 선언
	String str="안녕하세요!!";
	int a=5, b=-5;
	
	// 메서드 정의
	public int abs(int n){
		if(n<0) n=-n; //n=-1*n
				return n;
	} // jsp의 메서드는 static으로 선언하지 않아도 사용 가능함
%>
</head>
<body>
<%
	// jsp 실행부의 시작
	int c=10;
	c++;
	a++;
	out.print(str+"<br>");
	out.print(a+"의 절대값: "+abs(a)+"<br>");
	out.print(c+"의 절대값: "+abs(c)+"<br>");
%>
<br><br>
<%=str %><br>
<%=a %>의 절대값: <%=abs(a) %><br>
<%=c %>의 절대값: <%=abs(c) %><br>
</body>
</html>