<?xml version="1.0" encoding="euc-kr" ?>
<?xml-stylesheet type="text/xsl" href="../okjsplec_c.xsl" ?>
<lecture>
	<title>package ¼±¾ðµÈ java ÄÄÆÄÀÏÇÏ±â</title>
	<who>kenu</who>
	<when>2001-10-30 10:03¿ÀÈÄ</when>
	<what>
		<text>
		package ´Â ²Ù·¯¹Ì¶ó´Â ¶æÀÌÁÒ. ¼ÒÆ÷¶ó´Â ¶æµµ ÀÖ±¸¿ä. java ¿¡¼­ package ¶ó ÇÔÀº ¿¬°üÀÖ´Â class µéÀ» ¸ð¾Æ³õÀº ²Ù·¯¹Ì¶ó´Â ¶æÀ» °®°í ÀÖ½À´Ï´Ù. jdk ¸¦ ±ò¸é bin µð·ºÅä¸®¿¡ javac ÀÌ¶ó´Â java ÄÄÆÄÀÏ·¯°¡ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀ» ÀÌ¿ëÇØ¼­ .java ¶ó´Â È®ÀåÀÚ¸¦ °¡Áø ÆÄÀÏÀ» ÄÄÆÄÀÏÇÒ ¼ö ÀÖ½À´Ï´Ù. jvm »ó¿¡¼­ µ¹¾Æ°¡´Â .class ÆÄÀÏ(bytecode ¶ó°í ÇÕ´Ï´Ù. jvm ÀÌ ¾Ë¾Æµè´Â ¸í·É¾îÀÇ ÁýÇÕÃ¼¶ó°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù.)À» ¸¸µé¾î ³»´Â °ÍÀÌÁÒ.
		</text>
		<image>http://okjsp.pe.kr/images/spacer.gif
		</image>
	</what>
	<what>
		<text>Á¦°¡ »ç¿ëÇÏ´Â method ¸¦ ¸ð¾Æ³õÀº Kr.java ¿Í Fn.java ÆÄÀÏÀ» ÄÄÆÄÀÏÇØº¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. ÀÌ µÎ °³ÀÇ ÆÄÀÏÀº ok ¶ó´Â ÆÐÅ°Áö¿¡ ¼ÓÇÏ°Ô ¸¸µé¾ú½À´Ï´Ù. ROOT/WEB-INF/classes/ok/ ¿¡ Kr.java ÆÄÀÏÀ» ³õ¾ÆµÓ´Ï´Ù.
<¼Ò½º ÆÄÀÏ¸í="Kr.java"><![CDATA[
package ok;

public class Kr{
	public static String a2k(String str) {
		String rtn = null;
		try {
			rtn = (str==null)?"":new String(str.getBytes("8859_1"),"euc-kr");
		} catch (java.io.UnsupportedEncodingException e) {}
		return rtn;
	}
	public static String k2a(String str) {
		String rtn = null;
		try {
			rtn = (str==null)?"":new String(str.getBytes("euc-kr"),"8859_1");
		} catch (java.io.UnsupportedEncodingException e) {}
		return rtn;
	}
	public static String nchk(String str) {
		return (str==null)?"":str;
	}
}]]>
</¼Ò½º>		</text>
		<image>http://okjsp.pe.kr/images/spacer.gif
		</image>
	</what>
	<what>
		<text>
		3°³ÀÇ ¸Þ¼Òµå¸¦ Âª°Ô ¼³¸íÇÏÀÚ¸é a2k() ´Â "8859_1" ¹®ÀÚ¼¼Æ®¸¦ "euc-kr" ·Î ÀüÈ¯ÇÏ´Â °ÍÀÔ´Ï´Ù. ÆÄ¶ó¸ÞÅÍ·Î ¹ÞÀº ÇÑ±ÛÀÇ °æ¿ì jasper.jar(jsp¸¦ servletÀ¸·Î º¯È¯½Ã »ç¿ë) °¡ 8859_1 ÀÇ ¹®ÀÚ¼¼Æ®·Î Ã³¸®¸¦ ÇÏ±â ¶§¹®¿¡ ÇÑ±Û¹®ÀÚ°¡ ±úÁý´Ï´Ù. ÀÌ°ÍÀ» ÇÑ±ÛÄÚµå·Î ÀüÈ¯ÇØÁÖ´Â °ÍÀÌÁÒ. k2a() ´Â ¹Ý´ëÀÇ °æ¿ìÀÔ´Ï´Ù. ÆÄÀÏÀ» ´Ù¿î¹Þ°Ô ÇÒ °æ¿ì ÇÑ±Û·Î º¸³»¸é ±úÁö±â ¶§¹®¿¡ "8859_1" ¹®ÀÚ¼¼Æ®·Î º¯È¯ÇÏ°í º¸³»ÁÖ´Â °æ¿ìÀÔ´Ï´Ù. nchk() ´Â ¹®ÀÚ¿­ÀÌ null ÀÏ °æ¿ì "" ¸¦ ¹ÝÈ¯ÇØ¼­ substring() ÀÌ³ª indexOf() ¸Þ¼Òµå µîÀ» »ç¿ë½Ã NullPointerException ÀÌ ÀÏ¾î³ª´Â °ÍÀ» ¹æÁöÇÏ´Â ±â´ÉÀÔ´Ï´Ù. ÀÌ°ÍÀ» ÄÄÆÄÀÏ ÇØ º¸µµ·Ï ÇÏÁÒ.
		</text>
		<image>package01_01.gif
		</image>
	</what>
	<what>
		<text>
		¿©·¯ºÐµéÀÌ ÁÁ¾ÆÇÏ½Ã´Â È­¸éÄ¸ÃÄ¿´½À´Ï´Ù. ^^; ±×·¡¼­ ¿©±â¸¦ Ã£À¸½Ã´Â ÁÙ·Î ¾Ë°í ÀÖ°Åµç¿ä. text ·Î¸¸ ÀÜ¶à º¸´Â °Íº¸´Ù ±×¸²µµ ÀÖ°í, ¼Ò¸®µµ ³ª°í, ¿ìÀ×? ¼Ò¸®¶ó... µü! ¾Æ¾æ! ^^; °è¼Ó Áøµµ ³ª°¡°Ú½À´Ï´Ù. MS-DOS ½ÃÀýºÎÅÍ ¸í·É¾î¿¡ ÀÍ¼÷ÇÏ½Å ºÐµéÀº * (wild card ¹®ÀÚ)¿¡ ÀÍ¼÷ÇÒ °Ì´Ï´Ù. À§¿Í °°Àº ¹æ¹ýÀ¸·Î µð·ºÅä¸®¸¦ º¯°æÇØ µé¾î°©´Ï´Ù. ¿©±â¼­ Àá±ñ À©µµ¿ì Tip ÇÏ³ª ¼Ò°³ÇÏ°í µé¾î°¡°Ú½À´Ï´Ù. Àú·¸°Ô ¿­½ÉÈ÷ µé¾î°¡·Á¸é ½Ã°£ÀÌ ¾öÃ»°É¸³´Ï´Ù. ¶Ç Program Files °°ÀÌ Áß°£¿¡ ¶ç¾îÁö°í ±ä ¹®Àå±îÁö µé¾î°¡·Á¸é ¿¡·¯µµ ÇÈÇÈ³ª°í ±×·´´Ï´Ù. ±×·³ Áö±ÝºÎÅÍ Á¦°¡ ¸¶¼úÀ» º¸¿©µå¸®°Ú½À´Ï´Ù. À©µµ¿ì Å½»ö±â¸¦ ¿·¿¡ ¿­¾î³õ½À´Ï´Ù. ÀÚ¾Æ~ c:\Program Files\Apache Group\Apache\conf\ µð·ºÅä¸®¸¦ ½±°Ô µé¾î°¡´Â ¹ýÀ» ¼Ò°³ÇÕ´Ï´Ù. Ãµ±â´©¼³ÀÔ´Ï´Ù. Àú ¸ñ¼û°É°í ¾Ë·Áµå¸®´Â °ÍÀÔ´Ï´Ù. ¿¬º¯¿¡¼­µµ ÀÌ°Å ¾Æ´Â »ç¶÷ ¸î ¾ÈµË´Ï´Ù. Å½»ö±â ¿©¼Ì½À´Ï±î? c:\Program Files\Apache Group\Apache\conf\ ¸¦ Å¬¸¯ÇØ¼­ ¿©´Â °ÍÀº ½±½À´Ï´Ù. ±×¸®°í cmd Ã¢(µµ½º ÇÁ·ÒÇÁÆ®Ã¢ÀÌ¶ó°íµµ ÇÏÁÒ.)¿¡ cd ÇÏ°í ½ºÆäÀÌ½º ÇÑ¹øÀ» ²Ú ´­·¯ÁÝ´Ï´Ù. ±×¸®°í conf µð·ºÅä¸®¸¦ ¸¶¿ì½º·Î Àâ¾Æ¼­ cmd Ã¢À¸·Î ²ø¸é... ^^ ¤»¤»
		</text>
		<image>package01_02.gif
		</image>
	</what>
	<what>
		<text>
		Enter¸¸ Ä¡¸é µË´Ï´Ù... ´Ù½Ã °Å±â·Î µ¹¾Æ°¡°Ú½À´Ï´Ù. ¸¶Âù°¡Áö·Î cd Ä¡°í Å½»ö±â¿¡¼­ ¿­¾î¼­ ok µð·ºÅä¸®¸¦ ²ø¾î´Ù ³õ¾Æµµ µË´Ï´Ù.
		</text>
		<image>package01_03.gif
		</image>
	</what>
	<what>
		<text>
		javac -d ../ -classpath ../ Kr.java ¶ó°í ÇÑ ÀÌÀ¯¸¦ ¼³¸íÇÏ°Ú½À´Ï´Ù. ¸¸ÀÏ ±×³É javac Kr.java ¶ó°í ÇÏ¸é ¾î¶»°Ô µÉ±î¿ä? Kr.class °¡ »ý±é´Ï´Ù. ^^; ÄÄÆÄÀÏ µÉ °ÍÀÔ´Ï´Ù. ±×·³ ¶Ç ÇÏ³ª ÄûÁî? javac -d . Kr.java ¶ó°í ÇÏ¸é¿ä? ±×·¯¸é ok/ µð·ºÅä¸® ¾È¿¡ ok/ µð·ºÅä¸® ÇÏ³ª°¡ ´õ »ý±â°í ±× ¾È¿¡ Kr.java °¡ »ý±é´Ï´Ù. ¸¸ÀÏ package ok.jsp; ¶ó°í ¼±¾ðÇß´Ù¸é ÇöÀç µð·ºÅä¸® ¾Æ·¡¿¡ ok/ µð·ºÅä¸®°¡ »ý±â°í ±× ¾Æ·¡¿¡ jsp/ µð·ºÅä¸®°¡ »ý±â°í class ÆÄÀÏÀº ±× ¾È¿¡ »ý¼ºµË´Ï´Ù. ±×·¸´Ù¸é javac -d ../ Kr.java ÇÏ¸é ÁüÀÛÇÒ ¼ö ÀÖÀ¸½Ç±î¿ä?
		¸¸ÀÏ package ok.jsp; ¶ó°í µÇ¾îÀÖÀ¸¸é javac -d ../../ Kr.java °¡ µÉ °ÍÀÔ´Ï´Ù.
		</text>
		<image>http://okjsp.pe.kr/images/spacer.gif
		</image>
	</what>
	<what>
		<text>
		package °¡ ¼±¾ðµÇÁö ¾ÊÀº class ÆÄÀÏÀÌ ROOT/WEB-INF/classes/ ¿¡ ÀÖ´Ù°í Ä¨½Ã´Ù. ´ëÇ¥ÀûÀÎ ¿¹°¡ DBConnectionManager.java °°Àº °æ¿ìÁÒ. ¸¸ÀÏ Kr.java ¿¡ import DBConnectionManager; ¶ó°í ¼±¾ðµÇ¾î ÀÖ´Ù¸é ÇÊ¿äÇÑ °ÍÀÌ -classpath ../ ¿É¼ÇÀÔ´Ï´Ù. ÀÌ·± °æ¿ì javac -d ../ -classpath ../ Kr.java ÇØÁÖ¸é »óÀ§µð·ºÅä¸®¿¡ ÀÖ´Â class ¸¦ import ÇØ¿À¸é¼­ ÄÄÆÄÀÏÀÌ ÀÌ·ïÁý´Ï´Ù. javac -d ../ -classpath ../;%classpath% Kr.java ´Â ±×·³ ¹«½¼ ¶æÀÏ±î¿ä? (linux °æ¿ì javac -d ../ -classpath ../:$CLASSPATH Kr.java ÀÔ´Ï´Ù.) È¯°æº¯¼ö¿¡ ÀâÈù classpath ¸¦ °¡Á® ¿Â´Ù´Â ¶æÀÔ´Ï´Ù. ÀÌ È¯°æº¯¼ö¿¡ ÀÖ´Â °ªÀº set ¸í·ÉÀ» Ä¡¸é È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.
		</text>
		<image>http://okjsp.pe.kr/images/spacer.gif
		</image>
	</what>
	<what>
		<text>
		ÀÌÇØ°¡ °¡¼ÌÀ» °Ì´Ï´Ù. Fn.java ÆÄÀÏÀÔ´Ï´Ù. Á» ±æÁÒ. ±×·±µ¥ ÀÌ ÆÄÀÏÀº ÄÄÆÄÀÏÇÏ¸é ¿¡·¯°¡ ³¯°ÍÀÔ´Ï´Ù. javac -d ../ -classpath ../ Fn.java 
<¼Ò½º ÆÄÀÏ¸í="Fn.java"><![CDATA[
package ok;

import javax.servlet.http.*;

public class Fn {
public static String rplc(String str, String n1, String n2) {
	int itmp = 0;
	if (str==null) return "";
	
	String tmp = str;
	StringBuffer sb = new StringBuffer();
	sb.append("");
	while (tmp.indexOf(n1)>-1) {
		itmp = tmp.indexOf(n1);
		sb.append(tmp.substring(0,itmp));
		sb.append(n2);
		tmp = tmp.substring(itmp+n1.length());
	}
	sb.append(tmp);
	return sb.toString();
}

public static String crop(String str, int i) {
	if (str==null) return "";
	String tmp = str;
	if(tmp.length()>i) tmp=tmp.substring(0,i)+"...";
	return tmp;
}

public static String wwwlink(String str) {
	if (str==null) return "";
	
	String tmp = str;
	int itmp = 0;
	int wend = 0;

	StringBuffer sb = new StringBuffer();
	sb.append("");
	
	while(tmp.indexOf("http://")>-1) {
		itmp = tmp.indexOf("http://");
		wend = tmp.indexOf(" ",itmp);
		if (wend>tmp.indexOf("\r",itmp)) wend = tmp.indexOf("\r",itmp);
		if (wend>tmp.indexOf("<",itmp)) wend = tmp.indexOf("<",itmp);
		else if (wend==-1) wend = tmp.length();
		sb.append(tmp.substring(0,itmp));
	
		if(itmp>3 && tmp.substring(itmp-3,itmp).indexOf("=")>-1) {
		wend = tmp.indexOf("</a>",itmp)+3;
		if (wend==2) wend = tmp.indexOf(">",itmp);
		sb.append(tmp.substring(itmp,wend));
		} else {
		sb.append("<a href=\""+
		    tmp.substring(itmp,wend)+"\" target=\"_blank\" class=\"ok-2\">");
		sb.append(tmp.substring(itmp,wend));
		sb.append("</a>");
		}
	
		tmp=tmp.substring(wend);
	}
	sb.append(tmp);
	
	tmp = sb.toString();
	sb.setLength(0);

	while(tmp.indexOf("www.")>-1) {
		itmp = tmp.indexOf("www.");
		wend = tmp.indexOf(" ",itmp);
		if (wend>tmp.indexOf("\r",itmp)) wend = tmp.indexOf("\r",itmp);
		if (wend>tmp.indexOf("<",itmp)) wend = tmp.indexOf("<",itmp);
		if (wend==-1) wend = tmp.length();
		sb.append(tmp.substring(0,itmp));
		if(itmp>10 && tmp.substring(itmp-10,itmp).indexOf("=")>-1) {
		wend = tmp.indexOf("</a>",itmp)+3;
		if (wend==2) wend = tmp.indexOf(">",itmp);
		sb.append(tmp.substring(itmp,wend));
		} else {
		sb.append("<a href=\"http://"+
		    tmp.substring(itmp,wend)+"\" target=\"_top\" class=\"ok-2\">");
		sb.append(tmp.substring(itmp,wend));
		sb.append("</a>");

		}
	
		tmp=tmp.substring(wend);
	}
	sb.append(tmp);

	return sb.toString();

}

public static void setCookie(HttpServletResponse response, 
                                 String name, String value, int iMinute) {
	value = java.net.URLEncoder.encode(value);
	Cookie cookie = new Cookie(name, value);
	cookie.setMaxAge(60 * iMinute);
	response.addCookie(cookie);
}

public static void setCookie(HttpServletResponse response,
                                 String name, String value) {
	value = java.net.URLEncoder.encode(value);
	Cookie cookie = new Cookie(name, value);
	cookie.setMaxAge(60*60*24*15);
	response.addCookie(cookie);
}

public static String getCookie(HttpServletRequest request,
                                   String cookieName) throws Exception {
	Cookie [] cookies = request.getCookies();
	if (cookies==null) return "";
	String value = "";
	for(int i=0;i<cookies.length;i++) {
		if(cookieName.equals(cookies[i].getName())) {
			value = java.net.URLDecoder.decode(cookies[i].getValue());
			break;
		}
	}
	return value;
}


}
]]>
</¼Ò½º>
		</text>
		<image>package01_04.gif
		</image>
	</what>
	<what>
		<text>
Fn.java:3¹øÂ° ÁÙ¿¡ ÀÖ´Â package javax.servlet.http °¡ ¾ø´Ù´Â ¾ê±âÁÒ. import javax.servlet.http.*; ¹®Àå¿¡¼­ ¹ß»ýÇÑ ¹®Á¦ÀÎµ¥, servlet ¿¡ °ü·ÃµÈ API(Tomcat:servelt.jar È¤Àº Resin:jsdk22.jar,jsdk23.jar) ¸¦ Ã£Áö ¸øÇØ¼­ ±×·¸½À´Ï´Ù. classpath ¿¡ ¾ø´Ù´Â ¶æÀÎµ¥¿ä. javac À¸·Î ÄÄÆÄÀÏÀ» ÇÒ ¶§ jvm À» ¶ç¿ó´Ï´Ù. ÀÌ jvm ÀÌ °¡µ¿ÇÒ ¶§ ÀÚµ¿À¸·Î *.jar ÆÄÀÏµéÀ» ÀÎ½ÄÇÏ´Â °÷ÀÌ ÀÖ½À´Ï´Ù. ÀÌ°÷¿¡¸¸ ÀÖÀ¸¸é ¸ðµç *.jar ÆÄÀÏÀÌ classpath ¿¡ ³»ºÎÀûÀ¸·Î µé¾î°¡¼­ ÀÎ½ÄÀÌ µË´Ï´Ù. ¾îµð³Ä¸é jdk1.3/jre/lib/ext/ µð·ºÅä¸® ÀÔ´Ï´Ù. jre ´Â java runtime environment ¶ó°í ÇÕ´Ï´Ù.(zip Àº ¾ÈµË´Ï´Ù. oracle ÀÇ classes12.zip Àº ¾ÐÃàÇ®°Å³ª -classpath c:/jdbc/classes12.zip ¿É¼Ç¿¡ °æ·Î¸¦ ¹Ù·Î ³Ö¾îÁÖ¼¼¿ä.) ¿©±â¿¡ Tomcat ÀÇ lib µð·ºÅä¸®³ª common µð·ºÅä¸® ¾Æ·¡ÀÖ´Â servlet.jar ÆÄÀÏ(resin Àº lib ¾Æ·¡ jdsk22.jar) ÆÄÀÏÀ» jdk1.3/jre/lib/ext/ µð·ºÅä¸®¿¡ º¹»çÇØÁÝ´Ï´Ù. ±×¸®°í ´Ù½Ã javac -d ../ -classpath ../ Fn.java ÇØº¸¼¼¿ä.
		</text>
		<image>package01_05.gif
		</image>
	</what>
	<what>
		<text>
ÀÌÁ¦ compile ÇÏ´Â ¿ä·ÉÀÌ »ý°åÀ» °Ì´Ï´Ù. ÁÁÀº ÇÏ·ç µÇ½Ã°í¿ä. ´äº¯µµ Áß¿äÇÑµ¥¿ä. ÀÌ·¸°Ô ¹®¼­¸¦ ¸¸µå´Â °ÍÀÌ Èûµé±ä ÇÏÁö¸¸ ´õ ±ÍÇÑ °Í °°ÀÌ »ý°¢µË´Ï´Ù. ¿­½ÉÈ÷ °øºÎÇÏ¼¼¿ä. ÇÑ °¡Áö Áö±Ý »ý°¢³ª´Â ¸»¾¸Àº¿ä. "Àß ÇÏ´Â °Í"°ú "¿­½ÉÈ÷ ÇÏ´Â °Í"Àº ´Ù¸¥ °ÍÀÌ¶ó°í ÇÕ´Ï´Ù. »çÈ¸ »ýÈ°ÀÏ¼ö·Ï ´õ ±×·¸½À´Ï´Ù. ±×·¸´Ù°í Æ÷±âÇÏÁö ¸¶¼¼¿ä. "¿­½ÉÈ÷" + "½Ã°£/°æ·Â" = "Àß" ÀÌ´Ï±î¿ä. ^^; kenu »ý°¢ÀÔ´Ï´Ù. 
		</text>
		<image>http://okjsp.pe.kr/images/spacer.gif
		</image>
	</what>
</lecture>

