수업시간에 JSP로 이용한 구구단 만들기 페이지를 만들어 보았다.
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>99Dam</title> </head> <body> <h2>구구댐 출력</h2> <table border="1" cellpadding="10" cellspacing="0"> <% for(int i = 2; i < 10; i++) { out.println("<tr>"); if(i%2==0) { out.print("<td bgcolor='#F2F2F2'>"); } else { out.print("<td>"); } out.print(i + "단</td>"); for(int j = 1; j < 10; j++) { if(i%2==0) { out.print("<td bgcolor='#F2F2F2'>"); } else { out.print("<td>"); } out.print(i + " * " + j + " = " + i*j + "</td>"); } out.println("</tr>"); } %> </table> </body> </html>
여기서 의문점이 들었던 부분은 <td>태그에 색을 넣는 if 문이 2번 반복된다는 점이다.
그래서 if 문을 함수로 묶을 수 없을까 고민해 보면서 끄적여 보았다.
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>99Dam</title> </head> <body> <h2>구구댐 출력</h2> <table border="1" cellpadding="10" cellspacing="0"> <%! int i; void e1() { if(i%2==0) { out.print("<td bgcolor='#F2F2F2'>"); } else { out.print("<td>"); } } %> <% for(int i = 2; i < 10; i++) { out.println("<tr>"); e1(); out.print(i + "단</td>"); for(int j = 1; j < 10; j++) { e1(); out.print(i + " * " + j + " = " + i*j + "</td>"); } out.println("</tr>"); } %> </table> </body> </html>
하지만 선언문에선 out.print() 함수를 읽을 수 없었다.
구글님 40분 검색 끝에 http://www.okjsp.pe.kr/seq/23601 이 곳에서 해결책을 찾았다ㅠ
<%@ page import = "javax.servlet.jsp.*" %> <!-- 서블릿을 불러온다 --> <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>99Dam</title> </head> <body> <h2>구구댐 출력</h2> <table border="1" cellpadding="10" cellspacing="0"> <%! // 컬러TD 함수 선언문 int i; // 공통으로 사용 할 변수 i 생성 public void colorTd(javax.servlet.jsp.JspWriter out) throws ServletException, Exception { if(i%2==0) { out.print("<td bgcolor='#F2F2F2'>"); } else { out.print("<td>"); } } %> <% for(i = 2; i < 10; i++) { // int를 지워준다. (지우지 않으면 색 적용이 안된다.) out.println("<tr>"); colorTd(out); out.print(i + "단</td>"); for(int j = 1; j < 10; j++) { colorTd(out); out.print(i + " * " + j + " = " + i*j + "</td>"); } out.println("</tr>"); } %> </table> </body> </html>
서블릿 패키지를 불러온 후 만들 컬러TD 함수 안에 (javax.servlet.jsp.JspWriter out)을 선언해 준 후 out을 사용하면 인식한다ㅠ
구구단 쉽지 않네!
의도한 내용은 아니지만 다른 방법도 있었다.
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>99Dam</title> </head> <body> <h2>구구댐 출력</h2> <table border="1" cellpadding="10" cellspacing="0"> <%! // 컬러TD 함수 선언문 public String colorTd(int i) { String a; if(i%2==0) { a ="<td bgcolor='#F2F2F2'>"; } else { a = "<td>"; } return a; } %> <% for(int i = 2; i < 10; i++) { out.println("<tr>"); out.println(colorTd(i)); out.print(i + "단</td>"); for(int j = 1; j < 10; j++) { out.println(colorTd(i)); out.print(i + " * " + j + " = " + i*j + "</td>"); } out.println("</tr>"); } %> </table> </body> </html>
Leave a Reply