¼ºí¸´ ÇÁ·Î±×·¡¹Ö #5 - Ŭ¶óÀ̾ðÆ® ´ç±â±â, ¼ºí¸´, frameÀ» ÀÌ¿ëÇÑ Ã¤Æà ÇÁ·Î±×·¥ ¼Ò°³
À̹ø ½Ã°£¿¡´Â Ŭ¶óÀ̾ðÆ® ´ç±â±â, ¼ºí¸´, frameÀ» ÀÌ¿ëÇÑ Ã¤Æà ÇÁ·Î±×·¥À» ¸¸µé¾î º¸°Ú½À´Ï´Ù.
ÀÏ´Ü ¿ë¾î ¼³¸íÀ» ¸ÕÀú Çؾ߰ÚÁö¿ä?
Ŭ¶óÀ̾ðÆ® ´ç±â±â¶õ?
meta ű׸¦ ÀÌ¿ëÇÑ Å¬¶óÀ̾ðÆ® f5 ½Å°øÀÔ´Ï´Ù. ½±ÁÒ?? ÀÚµ¿À¸·Î f5¸¦ ÀÏÁ¤½Ã°£¸¶´Ù ´·¯ÁÖ´Â °Ì´Ï´Ù. ¤»¤»¤»¤»¤» Á» ´õ ±â¼úÀûÀ¸·Î ¸»Çϸé meta ű×ÀÇ http-equiv ¼Ó¼º¿¡ refresh ¼Ó¼º°ªÀ» ÀÌ¿ëÇؼ ÀÏÁ¤½Ã°£¸¶´Ù ¼¹ö¿¡ ÆäÀÌÁö¸¦ ¿äûÇÏ´Â °ÍÀ̶ó°í º¸½Ã¸é µË´Ï´Ù.
frameÀ̶õ??
¿ø·¡ ÇÑ ¹ø¿¡ ÇÑ°³ÀÇ ÆäÀÌÁö¸¦ º¸¿©ÁÖ´Â À¥ ÆäÀÌÁö¿¡ ¿µ¿ªÀ» ³ª´©¾î ¼·Î ´Ù¸¥ ÆäÀÌÁö¸¦ º¸¿©ÁÖ´Â html ű×ÀÔ´Ï´Ù. ¿ì¸®´Â ÀÌ Å±׸¦ ÅؽºÆ®¸¦ ÀÔ·ÂÇÏ´Â ºÎºÐ°ú º¸¿©ÁÖ´Â ºÎºÐÀ¸·Î ³ª´©¾î¼ Á¦ÀÛÇÒ °ÍÀÔ´Ï´Ù.
¼ºí¸´Àº ´Ùµé ¾Æ½ÃÁÒ??
´ÙÀ½À¸·Î º¸½Ç °ÍÀº äÆà ÇÁ·Î±×·¥ÀÇ ÆäÀÌÁö ±¸¼ºÀÔ´Ï´Ù.
óÀ½À¸·Î º¸¿©ÁÙ ÆäÀÌÁö´Â chat.html ÆäÀÌÁö ÀÔ´Ï´Ù.
ÀÌ ÆäÀÌÁö¿¡¼´Â Á¢¼ÓÀÚ¿¡°Ô »ç¿ëÇÒ ´Ð³×ÀÓÀ» ¹°¾îº¸´Â ÆäÀÌÁö¶ó°í º¸½Ã¸é µË´Ï´Ù.
´Ð³×ÀÓÀ» ÀÔ·Â ÇϽøé ChatLogin.javaÀÇ ¼ºí¸´ ÆäÀÌÁö¸¦ ¿äûÇÕ´Ï´Ù. ÀÌ °÷¿¡¼ ´Ð³×ÀÓÀ» ÀÔ·ÂÇÏÁö ¾Ê°í µé¾î¿Â »ç¿ëÀÚ¸¦ ´Ù½Ã chat.html ÆäÀÌÁö·Î ³Ñ±â°í »ç¿ëÀÚÀÇ id¸¦ ÀúÀåÇÕ´Ï´Ù. ±×¸®°í frameÀ» ÀÌ ÆäÀÌÁö¿¡¼ ³ª´©¾î °¢°¢ ChatInput ÆäÀÌÁö¿Í ChatServer ÆäÀÌÁö¸¦ º¸¿©ÁÝ´Ï´Ù.
ChatInput ÆäÀÌÁö´Â ÅؽºÆ®¸¦ ÀÔ·ÂÇÏ´Â ÆäÀÌÁö°í ChatServer ÆäÀÌÁö´Â ÀÔ·ÂÇÑ ³»¿ëÀ» Ŭ¶óÀ̾ðÆ®¿¡°Ô º¸¿©ÁÖ´Â ÆäÀÌÁö¶ó°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù.
´ÙÀ½ ±Û¿¡¼ chat.html ÆäÀÌÁöºÎÅÍ ÂùÂùÈ÷ »ìÆ캸µµ·Ï ÇÏ°Ú½À´Ï´Ù.
±Û ¸ñ·Ï
<html>
<head>
<title>äÆà ·Î±×ÀÎ</title>
</head>
<body>
<h2>äÆà ·Î±×ÀÎ</h2>
<form method = get action =ChatLogin>
»ç¿ëÀÚ ID : <input type = text name =id>
<input type = submit value='È®ÀÎ'>
</form>
</body>
</html>
chat.htmlÀº º°°Ô ¾ø½À´Ï´Ù.
get method¸¦ ÀÌ¿ëÇØ ChatLogin ÆäÀÌÁö¸¦ ¿äûÇÏ°í ÆäÀÌÁö¿¡ ³Ñ°ÜÁÙ µ¥ÀÌÅÍ´Â name ¼Ó¼º°ªÀÌ id ÀÎ ÅؽºÆ® »ÓÀÔ´Ï´Ù!!
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* Servlet implementation class ChatLogin
*/
public class ChatLogin extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
login(req, res);
//get ¸Þ¼Òµå·Î ÆäÀÌÁö¸¦ ¿äûÇßÀ» ¶§ ½ÇÇàµÇ´Â ºÎºÐÀ¸·Î ¹Ù·Î login ¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï´Ù.
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
login(req, res);
//post ¸Þ¼Òµå·Î ÆäÀÌÁö¸¦ ¿äûÇßÀ» ¶§ ½ÇÇàµÇ´Â ºÎºÐÀ¸·Î ¹Ù·Î login ¸Þ¼Òµå¸¦
È£ÃâÇÕ´Ï´Ù.
}
public void login(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException{
req.setCharacterEncoding("KSC5601");
res.setContentType("text/html;charset=KSC5601");
PrintWriter out = res.getWriter();
//PrintWriter °´Ã¼¿¡ ÆäÀÌÁö¿¡ ÅؽºÆ®¸¦ Ç¥½ÃÇÏ´Â PrintWriter °´Ã¼¸¦ ȹµæÇÕ´Ï´Ù.
//¿©±â±îÁö´Â ÀϹÝÀûÀÎ ¼ºí¸´ ÆäÀÌÁö¿Í °°½À´Ï´Ù. º°°Å ¾øÁö¿ä?
String id = req.getParameter("id");
//Àü ÆäÀÌÁö¿¡¼ id¶ó´Â À̸§ÀÌ·Î µÈ ű×ÀÇ value °ªÀ» Stirng Çü½ÄÀ¸·Î ¹Þ½À´Ï´Ù.
//ÀÌ·¸°Ô ¼¹ö´Â »ç¿ëÀÚ¿Í ´ëȸ¦ ÇÕ´Ï´Ù.
if(id == null || id.trim().length() == 0){
res.sendRedirect("/chat.html");
return;
}//¸¸¾à idÀÇ ¼Ó¼º°ªÀÌ ¾ø´Ù¸é chat.html·Î ´Ù½Ã µ¹¾Æ°©´Ï´Ù. id´Â ²À ÇÊ¿äÇÑ °ÍÀ̴ϱñ¿ä.
out.println("<html>");
out.println("<frameset rows='85%, 15%'>");
out.println("<frame src='ChatServlet?id="+id+"'&frirst=true' name ='main'>");
//frame À» ´ÙÀ½°ú °°ÀÌ È£ÃâÇÒ ¼ö µµ ÀÖ´Ù. º¸½Ã¸é ¾Ë°ÚÁö¸¸, id¼Ó¼º°ú first¼Ó¼ºÀ» get ÇüÅ ·Î ³Ñ°ÜÁØ°ÍÀÔ´Ï´Ù.
out.println("<frame src='reChatInput?id="+id+"'>");
//À§ frame¿¡µµ id °ªÀ» ¼Ó¼ºÀ¸·Î ³Ñ°ÜÁÝ´Ï´Ù.
out.println("</frameset>");
out.println("</html>");
}
}
ChatLogin.java´Â ·Î±×ÀÎÀ» È®ÀÎÇÏ°í ÆäÀÌÁöÀÇ Æ²À» ¸¸µé¾îÁÖ´Â ºÎºÐÀ̶ó°í º¸½Ã¸é µË´Ï´Ù.
id¸¦ È®ÀÎ ÇÏ´Â ºÎºÐÀÌ ÀÖÁö¿ä ±×·¡¼ ChatLoginÀÎ°Í °°¾Æ¿ä ¤»¤»¤»¤»¤»
ChatServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* Servlet implementation class ChatLogin
*/
public class ChatServlet extends HttpServlet {
String message[];
//»ç¿ëÀÚµéÀÌ ÀÔ·ÂÇÑ ¸Þ½ÃÁö¸¦ ÀúÀåÇÏ´Â ºÎºÐÀÔ´Ï´Ù.
int index = 0 , size = 10;
public void init(){
message = new String[size];
//message µ¥ÀÌÅ͸¦ size°ªÀ» ÀÌ¿ëÇØ memory¸¦ ÇÒ´çÇØ ÁÝ´Ï´Ù. ÀÌ¿¡ ÀÇÇؼ ¸Þ½ÃÁö´Â 10
//°³ ±îÁö¹Û¿¡ ÀúÀåÀÌ µÇÁö ¾Ê´Â´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù.
for(int i=0; i<size; i++)
{
message[i] = "";
//¸Þ¸ð¸®¸¸ ÇÒ´çÇØ ÁÖ¾úÀ¸´Ï,,, ¾²·¹±â °ªÀÌ µé¾îÀÖ°ÚÁÒ?? ºóÄÀ¸·Î ÃʱâÈ ÇØÁÝ´Ï´Ù.
}
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
req.setCharacterEncoding("KSC5601");
String id = req.getParameter("id");
String msg = req.getParameter("msg");
//À§ÀÇ µÎÁÙÀÇ ÄÚµå´Â ¿Ö ÀÖ´Â °ÍÀϱî¿ä? ¹Ù·Î id¿Í »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ¸Þ½ÃÁö¸¦ °è¼Ó
//¹Þ¾Æ¿À´Â °ÍÀÔ´Ï´Ù. ÆäÀÌÁö°¡ °è¼Ó ·ÎµùµÇ±â ¶§¹®¿¡ id¸¦ °è¼Ó ³Ñ°Ü ÁÖ¾î¾ß ÇÏ´Â ////°ÍÀÌÁö¿ä. ³Ñ°ÜÁÖÁö ¾ÊÀ¸¸é id¸¦ ÆäÀÌÁö°¡ ±î¸Ô°Ô µË´Ï´Ù. º°´Ù¸¥ µ¥ÀÌÅÍ //º£À̽º³ª ÆÄÀÏÀÌ ¾ø±â ¶§¹®ÀÌÁö¿ä.
if(msg!=null && msg.trim().length() != 0){
synchronized(message){
message[index] = id + " : " + msg;
//¸Þ½ÃÁö´Â 'id : ÀÔ·ÂÇÑ ¸Þ½ÃÁö ³»¿ë'À¸·Î ÀúÀåÀÌ µÇ°Ô ¼³Á¤ Çß½À´Ï´Ù.
index = (index+1) % size;
//index°¡ message¹è¿ÀÇ indexÀÎ °ÍÀº ¾Æ½Ã°ÚÁÒ?
//Áö¼ÓÀûÀ¸·Î 1¾¿ Ãß°¡µÇ´Â indexµµ 10À» ³ÑÀ¸¸é ¾ÈµÇ±â ¶§¹®¿¡ size·Î
//³ª´« ³ª¸ÓÁö¸¸ »ç¿ëÀ»ÇÕ´Ï´Ù!! ±×·³ 0~9±îÁö ¼ø¼´ë·Î ³ª¿À°ÚÁÒ?
}//¿©±â¼ ³ª¿À´Â synchronized ¼Ó¼ºÀ» ÅëÇؼ message ¹è¿À» Çѹø¿¡ ÇѸí
//¸¸ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï lockÀ» °É¾î ³õ½À´Ï´Ù. synchronized¿¡ ´ëÇÑ ´õ ¸¹Àº
// Á¤º¸¸¦ ¾Ë °í ½ÍÀ¸½Å ºÐÀº Á¦ ºí·Î±×¿¡¼ synchronized Å°¿öµå·Î °Ë»öÀ» ÇØ
//º¸¼¼¿ä. ³ª¿Í¿ä
}
doGet(req, res);
//doGet ¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï´Ù. ¿Ö ÀÌ·¸°Ô ÄÚµùÀÌ µÇ¾îÀÖ´ÂÁö´Â ÄÚµåÀÇ ¹Û¿¡¼
//¼³¸íÀ» µå¸®°Ú½À´Ï´Ù.
}
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
res.setContentType("text/html;charset=KSC5601");
String first = req.getParameter("first");
//¾î´À »ç¿ëÀÚ°¡ Á¢¼ÓÀ» Çß´ÂÁö ¾Ë·ÁÁÖ±â À§Çؼ »ç¿ëÇÕ´Ï´Ù. ¹ØÀÇ if¹®À» º¸½Ã¸é µé¾î¿Ô
//´Ù°í Ç¥½ÃÇØÁÖ´Â ºÎºÐÀÌ º¸À̽ÃÁÒ?
if(first != null){
String id = req.getParameter("id");
synchronized(message){
message[index] ="<p align = center>" + id +" ´ÔÀÌ µé¾î¿Ô¾¹´Ï´Ù.</p>";
index=(index+1) % size;
}
}
PrintWriter out = res.getWriter();
out.println("<html><head>");
out.println("<meta http-equiv='pragma' content='no-cache'>");
out.println("<meta http-equiv='cache-control' content='no-cache'>");
out.println("<meta http-equiv='refresh' ");
out.println("content = '2; url=ChatServlet'>");
out.println("<title>äÆÃ</title></head>");
out.println("<body><center<h2>äÆÃ</h2></center><hr>");
int i = index;
while(true){
out.println(message[i]);
out.println("<br>");
i = ++i %size;
if(i == index - 1)
break;
//while¹®ÀÌ µ¹´Ù°¡ ÀԷµǾîÀÖ´Â index±îÁö Ãâ·ÂÀÌ µÇ¸é while¹®À» ¸ØÃä´Ï´Ù.
if(index == 0 && i == size - 1)
break;
//¾Æ¹« ±Ûµµ ÀԷµǾîÀÖÁö ¾Ê°Å³ª, 9ıîÁö Ãâ·ÂÀ» ´Ù ÇÏ¿´À¸¸é while¹®À» ¸ØÃä´Ï´Ù.
}
out.print(message[i]);
out.println("<br>");
out.println("</body></html>");
}
}
ÀÚ, ÀÌÁ¦ ¿Ö doPost¿¡¼ ¸Þ½ÃÁö¸¦ ó¸®ÇÏ°í, ±× µÚ¿¡ doGet ¸Þ¼Òµå¸¦ ¿äûÇÏ´ÂÁö ¼³¸íÀ» µå¸®°Ú½À´Ï´Ù.
½¬¾î¿ä. ¤»¤» ÇÁ·¹ÀÓ¿¡¼ ÆäÀÌÁö¸¦ ¿äûÇÒ ¶§´Â get¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿´°í, äÆÃÀ» ÀÔ·ÂÇÏ´Â ºÎºÐÀº post·Î ³Ñ°ÜºÃ±â ¶§¹®ÀÌÁö¿ä. Áï, doGet ¸Þ¼Òµå´Â ÆäÀÌÁö°¡ Ç×»ó °øÅëÀ¸·Î ó¸®ÇؾßÇÒ ºÎºÐÀ» ³ªÅ¸³»´Â °ÍÀÔ´Ï´Ù.
¸¸¾à, doPostºÎºÐÀÌ doGet¸Þ¼Òµå ¾È¿¡ ÀÖ´Ù¸é,,, äÆà ³»¿ëÀ» ÀÔ·ÂÇßÀ»¶§¿¡¸¸ ó¸®ÇØ¾ß ÇÏ´Â ºÎºÐÀ» ¸Ç óÀ½ frameÀ» ÅëÇØ Á¢¼ÓÇßÀ» ¶§µµ 󸮸¦ ÇÏ°ÚÁö¿ä?
±×°ÍÀ» ¸·±â À§Çؼ ÀÌ·±½ÄÀ¸·Î ÄÚµùÀ» ÇÑ °ÍÀÔ´Ï´Ù.
µÎ°¡ÁöÀÇ µ¥ÀÌÅÍ Àü´Þ¹æ¹ýÀ» ÀûÀýÇÏ°Ô »ç¿ëÇÑ ¿¹¶ó°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù.
doPost ºÎºÐÀº ¸»¾¸µå¸°´ë·Î äÆà ³»¿ëÀ» ÀÔ·ÂÇßÀ»¶§ ³Ñ°Ü¹Þ´Â ¸Þ¼Òµå·Î ³»¿ëÀ» ÀÔ·ÂÇßÀ» ¶§, ó¸®ÇؾßÇÒ ºÎºÐÀÌ µé¾î°¡ ÀÖ½À´Ï´Ù.
ChatInput.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* Servlet implementation class ChatLogin
*/
public class reChatInput extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
DO(req, res);
//get ¸Þ¼Òµå·Î ÆäÀÌÁö¸¦ È£ÃâÇßÀ»¶§ DO ¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï
//´Ù.
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
DO(req, res);
//post ¸Þ¼Òµå·Î ÆäÀÌÁö¸¦ È£ÃâÇßÀ»¶§ DO ¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï
//´Ù.
}
public void DO(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
res.setContentType("text/html;charset=KSC5601");
PrintWriter out = res.getWriter();
req.setCharacterEncoding("KSC5601");
String id = req.getParameter("id");
if(id == null || id.trim().length() == 0){
res.sendRedirect("/chat.html");
return;
}//ChatLogin°ú ¸¶Âù°¡Áö·Î id°¡ Á¦´ë·Î ³Ñ¾î¿Ô´ÂÁö È®ÀÎÀ» ÇÕ´Ï´Ù.
//¾È ¿Ô´Ù¸é ´Ù½Ã chat.htmlÆäÀÌÁö·Î µ¹¾Æ°¡Áö¿ä.
out.println("<html><head>" );
out.println("<script language = 'JavaScript'> ");
//ÀÚ¹Ù½ºÅ©¸³Æ® ºÎºÐ ½ÃÀÛ
out.println("function send(form) { ");
out.println(" form.msg.value = form.temp.value;");
//msgÀÇ value°ª¿¡ tempÀÇ value°ªÀ» ³Ö¾î ÁÝ´Ï´Ù.
//¿Ö³ÄÇϸé Àü´ÞÇÒ¶§ value°ªÀ» ºóÄÀ¸·Î ÇؾßÁö¸¸,,, ´ÙÀ½ ÅؽºÆ®¸¦
//ÀÔ·ÂÇÒ¶§ ´Ù½Ã Áö¿ì°í ¾²´Â ºÒÆíÀ» ¾ø¾Ù¼ö Àְŵç¿ä.
//target¼Ó¼ºÀ¸·Î ÇöÀç ÆäÀÌÁö´Â ±×³É À¯Áö µÈ´Ù´Â °ÍÀ» ¾Æ¼Å¾ßÇØ¿ä!!
//¸¸¾à ±×³É ¹Ù·Î temp°¡ ¾Æ´Ñ msg¿¡ ÀÔ·ÂÀ» ¹Þ°í resetÀ» Çعö¸®¸é
//ÀÔ·ÂÇÑ ³»¿ë ÀÚü°¡ Áõ¹ßÀ» Çعö¸³´Ï´Ù.
//±×·¡¼ ÀÌ·¸°Ô ¹ø°Å·Ó°Ô ÇÁ·Î±×·¡¹Ö ÇÏ´Â °ÍÀÌÁö¿ä.
out.println(" form.temp.value = ''; ");
//ÀÌ°Ô resetÀ» ÇÑ °ÍÀÔ´Ï´Ù.
out.println(" form.temp.focus(); ");
//focus¶ó´Â °ÍÀº ´ëÃæ °¨ÀÌ ¿À½ÃÁÒ? Ä¿¼°¡ tempÀ§¿¡ ±ôºýÀÌ°Ô ÇØÁÝ´Ï´Ù.
out.println(" return true; ");
//return true¸¦ ÀÌ¿ëÇؼ µ¥ÀÌÅ͸¦ ³Ñ°ÜÁÝ´Ï´Ù. onsubmit return true¿¡
//´ëÇؼ´Â °Ë»öÀ» Çغ¸¼¼¿ä. ³ª¸§ Áß¿äÇÑ ÀÚ¹Ù½ºÅ©¸³Æ® ÄÚµù ±â¹ý?
//ÀÔ´Ï´Ù.
out.println("} ");
//ÀÚ¹Ù½ºÅ©¸³Æ® ºÎºÐ ³¡
out.println("</script> ");
out.println("<title>äÆà ·Î±×ÀÎ</title></head> ");
out.println("<body> ");
out.println("<form method = post action =ChatServlet ");
//¾Õ¿¡¼ ¸»¾¸µå¸°´ë·Î äÆà ³»¿ëÀº method¸¦ post·Î Àü´ÞÇÕ´Ï´Ù.
//ÆäÀÌÁö°¡ óÀ½À¸·Î ·ÎµùÇßÀ»¶§¿Í ¾Æ´Ò¶§¸¦ ±¸ºÐÇϱâ À§ÇؼÁö¿ä,
out.println("onSubmit='return send(this)' target='main'> ");
//¿£Å͸¦ ´·¶À»¶§ send ÇÔ¼ö¸¦ ½ÇÇàÇÕ´Ï´Ù. targetÀº mainÀε¥ frame¿¡
//¼³Á¤ÇÑ name ¼Ó¼º°ªÀ¸·Î ChatServlet.java ºÎºÐÀÌÁö¿ä.
out.println("¸Þ½ÃÁö : <input type = text size = 50 name= temp> ");
out.println("<input type = hidden name = msg> ");
out.println("<input type = hidden name = id value='"+id+"'> ");
//³Ñ°ÜÁÙ ºÎºÐÀÔ´Ï´Ù. ¸Þ½ÃÁö¿Í ¾ÆÀ̵𰡠µÇ°Ú³×¿ä. temp¿Í msgÀÇ °ü°è
//´Â ÀÚ¹Ù½ºÅ©¸³Æ® ºÎºÐ¿¡¼ ¼³¸íÀ» ÇÏ°Ú½À´Ï´Ù.
out.println("</form> ");
out.println("</body></html> ");
}
}
Ãâó: http://webclass.tistory.com/entry/¼ºí¸´-ÇÁ·Î±×·¡¹Ö-5-Ŭ¶óÀ̾ðÆ®-´ç±â±â-¼ºí¸´-frameÀ»-ÀÌ¿ëÇÑ-äÆÃ-ÇÁ·Î±×·¥-1 [Welcome PHP World!!!!]