몇일만에 공부해본다. -_-; 가뜩이나 머리 나쁜데 몇일만에 공부하려니 한참을 헤맸다. -_-; 지금와서 보니 아주 간단한건데 거의 3시간 동안 헤맸다. 단순히 책에 있는 예제를 조금 내 방식대로 바꿔본것 뿐인데 이리 헤매다니 -_-; 내머리 똥찬것 확실하다.
아무튼 헛소리 그만하고 오늘 한것에 대해서 설명하자면 html 을 간단하게 출력하는 클래스를 만들었다.
그냥 단순히 out.print or out.println을 사용해서 할것이지 왜 html 출력 class를 만들었냐고 하면 직접 개발에 뛰어보면 알게 된다. -_-; html 페이지를 제작하다 보면 중복되는 부분이 상당히 많다 예를 들면 <html><body> </body></html>...등등 이런 부분은 페이지에서 빠질수 없다(물론 안적어도 되지만 적어두면 폼난다 -_-;) 그래서 일일이 똑같은 것을 반복해서 적기 상당히 귀찮다. -_-
이러한 귀찮은 부분을 없애고자 html 출력 class를 만든것이다. 현재는 간단하게 만들었는데 일단 sample 용이라서 그렇다 이것을 기본으로 해서 확장해서 사용하면 귀찮은 부분들을 상당히 줄일수 있게된다. -_-
참고로 하는 말인데 개발자는 상당히 귀찮음이 많아야 할것 같다. -_-; 너무 부지런해서 귀찮은 부분들 일일이 다 코딩하면 쌩노가다 하는거다 -_-; 차라리 귀찮음을 느껴서 좀 더 쉽게 하면 어떨가 하는게 진정한 개발자(?) 의 모습같다 -_-;;;; (또 헛소리 하는군 -_-; )
소스 설명은 언제나 마찬가지로 없다. -_- 알아서 해결해라 내가 설명하는 부분은 내가 열라 애먹은 부분만 설명할꺼다. -_-
패키지를 만들어서 사용하는것을 처음해 봤는데 한참을 헤맸다. -_-; 알고나면 아무것도 아닌것을 진짜 한참 헤맸다 여기저기 글 보고서야 해결했다 -_-;(거 별것 아니더구만 -_-;)
일단 package를 처음 써본사람들은 잘 따라하길 바란다. -_-; 헷갈리지 말고 -_-;
1. WEB-INFclasses 밑에 common 이란 폴더를 만든다.
2. printHTML.java 파일을 common 폴더밑에 둔 후 컴파일 한다.
3. 톰캣을 중지한다.
4. 1번의 위치를 환경변수 셋팅해 준다. (나의 경우는 setClass.bat 파일을 열어서 다음 구문을 추가하였다. set classpath=%CLASSPATH%;C:jakarta-tomcat-3.3-m4webappsnetjvWEB-INFclasses) 이부분 안해줘서 애먹었다!!
5. 톰캣을 시작한다.
6. TESTprintHTML.java 파일을 WEB-INFclasses 에 둔 후 컴파일 한다.
7. 웹에서 실행!
printHTML.java
package common;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class printHTML {
protected PrintWriter out = null;
protected String szHtmlHead[] = {
"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">",
"<HTML>",
"<HEAD>",
"<META http-equiv="Content-Type" content="text/html; charset=KS_C_5601-1987">",
"<TITLE>",
"",
"</TITLE>",
"</HEAD>",
"<BODY>"
};
public void outHeader(String szTitle, HttpServletResponse res, PrintWriter pOut)
throws IOException, ServletException {
out = pOut;
res.setContentType("text/html; charset=KS_C_5601-1987");
szHtmlHead[5] = szTitle;
outBody(szHtmlHead);
}
public void outBottom()
throws IOException {
out.println("</BODY>n</HTML>");
}
public void outBody(String[] arrHtmlHead)
throws IOException {
for(int z = 0; z < arrHtmlHead.length; z++) {
out.println(arrHtmlHead[z]);
}
}
}
TESTprintHTML.java
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import common.*;
public class TESTprintHTML extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {
String szBodyMsg[] = {
"<hr>",
"<center>outBody에서 뿌려지는 Body부분 입니다</center>",
"<hr>",
};
printHTML pHTML = new printHTML();
PrintWriter out = res.getWriter();
pHTML.outHeader("HTML 클래스 테스트",res,out);
pHTML.outBody(szBodyMsg);
pHTML.outBottom();
}
}
아끙 힘들어라 -_-; 이것 하면서 에러가 package printHTML does not exist 이란 메시지 뜨면 4번의 환경변수 셋팅이 잘못된것이다. 그 부분 잘 살펴가면서 해라 -_-
그리고 이것 웹에서 실행 시킨 후 소스보면 알겠지만 헤더나 메타태그등 기본적인 요소가 단 2줄의 코드(pHTML.outHeader("HTML 클래스 테스트",res,out);, pHTML.outBottom();)에 의해서 뿌려진다. 만약 이렇게 package로 만들어 두지 않았다면 페이지 마다 그 소스보기 할때 나와있던 기본적인 구문들을 일일이 적어야 한다. -_-;
배고파 죽것다. 아침에 8시쯤 일어나서 지금이 10시 50분쯤 되가니 거의 3시간동안 이짓하고 있었다. -_-;; 밥먹으로 가야것다 휘리릭~