๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ๋ฐฐ์šฐ๊ณ  ์ตํžˆ๊ธฐ +/Web

(82)[Web]18์ผ์ฐจ: ((JSP)) โ–  Servlet(์„œ๋ธ”๋ฆฟ) โ– , F_WebApp21

by ์ข…์ด๋นจ๋Œ€ 2023. 12. 20.
TOP

๋ชฉ์ฐจ

    1. 2023.12.20(์ˆ˜)

     

    โ– โ– โ–  Servlet(์„œ๋ธ”๋ฆฟ) โ– โ– โ– 

     


    0. ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ์›น ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ์–ธ์–ด์˜ ํ•œ ์ข…๋ฅ˜.

        (JAVA ๊ธฐ๋ฐ˜)

     

    1. JSP ์—์„œ ์ •์ ์ธ ๋ถ€๋ถ„์„ ๋‹ด๋‹นํ•˜๊ณ , Servlet ์—์„œ๋Š” ๋™์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ถ€๋ถ„์œผ๋กœ ์‚ฌ์šฉ๋˜์–ด ๋ณด๋‹ค ํšจ์œจ์ ์ธ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.

        - JSP → ๋‹จ์ . MVC ํŒจํ„ด์„ ์ ์šฉํ•˜๊ธฐ ํž˜๋“ค๋‹ค.
        - Servlet → ๋‹จ์ . ์›น ํŽ˜์ด์ง€(view) ์ž‘์„ฑ์ด ๋ฒˆ๊ฑฐ๋กญ๊ณ  ๋ณต์žกํ•˜๋‹ค. (๋ถˆํŽธ)
        - Servlet + JSP → MVC ํŒจํ„ด ์ ์šฉ ๋ฐ ์›น ํŽ˜์ด์ง€(view)๋ฅผ ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž‘์„ฑ.
                            ๋‹จ์ . ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ฒŒ ๋œ๋‹ค.

     

    2. JSP ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ Web Container ๊ฐ€ Servlet ์œผ๋กœ ๋ณ€๊ฒฝ์‹œ์ผœ์ค€๋‹ค.

     

    3. WEB-INF ๋Š” ํ™˜๊ฒฝ ์„ค์ • ํŒŒ์ผ์ด ์ €์žฅ๋˜๋Š” ๊ณณ

        (→ ์™ธ๋ถ€์—์„œ๋Š” ์ ‘๊ทผ ๋ถˆ๊ฐ€ / ๊ธˆ์ง€)  check~!!!

        - `lib` : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ์„ ์ €์žฅ(ojdbc.jar, jstil.jar ๋“ฑ) 

        - `J2EE`

        - `J2SE`

        - `classes` : class ํŒŒ์ผ์ด ์ €์žฅ(servlet)

            `ใ€Žclasses > com > util > MyUtil.classใ€`

            ์›๋ž˜๋Š” ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•˜์ง€๋งŒ ์ดํด๋ฆฝ์Šค๊ฐ€ ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐ

            ์‹ค์ œ ์œ„์น˜๋Š”

            `ใ€ŽC:\WebStudy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\WebApp20\org\apache\jspใ€`

        * `.jar` : java

        * `.war` : web(ํ”„๋กœ์ ํŠธ ์•„๋ž˜ ๋ชจ๋“  ๊ฒƒ์„ ์••์ถœํ•  ๋•Œ)

        * `.ear` : jar + war

        `web.xml` : context path ์˜ ํ™˜๊ฒฝ ์„ค์ •

    4. `ใ€Žinit()ใ€` ๊ณผ `ใ€Ždestory()ใ€`๋Š” ๋‹จ ํ•œ ๋ฒˆ ํ˜ธ์ถœ๋˜๋ฉฐ

        `ใ€Žservice()ใ€`๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด ์žˆ์„ ๋•Œ ๋งˆ๋‹ค ํ˜ธ์ถœ๋œ๋‹ค.

        ์ด์ œ๋Š” JSP๋ฅผ `ใ€Žservice()ใ€` ๋ฉ”์†Œ๋“œ ๋‚ด๋ถ€์— ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

     

    5. `ใ€ŽGenericServletใ€` ์ด๋‚˜ `ใ€ŽHttpServletใ€`์„ ํ™œ์šฉํ•œ๋‹ค.

     

    6. URL ํŒจํ„ด์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ 3 ๊ฐ€์ง€ ์ด๋‹ค.

        - `ใ€Ž/aใ€`

        - `ใ€Ž/*ใ€`

        - `ใ€Ž.doใ€`

    7. web.xml ์„ ์ˆ˜์ •ํ•˜๋ฉด ์„œ๋ฒ„๋ฅผ ๊ผญ ์žฌ๊ตฌ๋™ํ•œ ์ดํ›„์— ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

    8. ์ง€๊ธˆ๊นŒ์ง€๋Š”

        JSP(์ž…๋ ฅ) → JSP(์ฒ˜๋ฆฌ, ๊ฒฐ๊ณผ) ์˜€์œผ๋‚˜

        JSP ์™€ ํ•จ๊ป˜ Servelet ์„ ๋‹ค๋ฃจ๊ฒŒ ๋œ ์ดํ›„์—๋Š”

        `JPS(์ž…๋ ฅ)` → `Servlet(๊ฒฐ๊ณผ๋ฅผ ์œ„ํ•œ ์ฒ˜๋ฆฌ)` → `JSP(๊ฒฐ๊ณผ)` ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.


     

    F_WebApp21

    ใ„ด/WebApp21/src/com/svt

    ์„œ๋ธ”๋ฆฟ ๊ตฌ์„ฑ 1

    ใ„ดใ„ดTest1.java

    /* ==================
    	Test1.java
    =================== */
    
    package com.svt;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class Test1 extends HttpServlet
    {
    	private static final long serialVersionUID = 1L;
    
    	// ์‚ฌ์šฉ์ž์˜ http ํ”„๋กœํ† ์ฝœ ์š”์ฒญ์ด GET ๋ฐฉ์‹์ผ ๊ฒฝ์šฐ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ
    	@Override
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    	{
    		doGetPost(request, response);
    	}
    
    	// ์‚ฌ์šฉ์ž์˜ http ํ”„๋กœํ† ์ฝœ ์š”์ฒญ์ด POST ๋ฐฉ์‹์„ ๊ฒฝ์šฐ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ
    	@Override
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    	{
    		doGetPost(request, response);
    	}
    	 
    	// ์‚ฌ์šฉ์ž ์ •์˜ ๋ฉ”์†Œ๋“œ
    	protected void doGetPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    	{
    		//*** ํ˜ธ์ถœํ•˜๋Š” ์ฃผ์ฒด์™€ ์žฅ์†Œ → ์„œ๋ธ”๋ฆฟ์ปจํ…Œ์ด๋„ˆ.
    		//*** ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋ฉด ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณณ → web.xml
    		
    		
    		// GET ๋ฐฉ์‹์ด๋“  POST ๋ฐฉ์‹์ด๋“ 
    		// ์–ด๋–ค ๋ฐฉ์‹์˜ ์š”์ฒญ์—๋„ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๋ฉ”์†Œ๋“œ
    		
    		
    		// โ‘ 
    		/*
    		response.setContentType("text/html; charset=UTF-8");
    		PrintWriter pw = response.getWriter();
    		
    		pw.println("<html>");
    		pw.println("<head>");
    		pw.println("<title>" + "Test1.java"+ "</title>");
    		pw.println("</head>");
    		pw.println("<body>");
    		pw.println("<div>");
    		pw.println("<h1>name: "+ "ํ™๊ธธ๋™" + "</h1>");
    		pw.println("<h1>age: "+ 19 + "</h1>");
    		pw.println("</div>");
    		pw.println("</body>");
    		pw.println("</html>");
    		*/
    		
    		// โ‘ก // **๊ฐ’์„ ์ƒ๋‹จ์—์„œ ๋ณ€์ˆ˜ ์ฒ˜๋ฆฌ**
    		/*
    		String name = "๊ธธํ˜„์šฑ";
    		int age = 21;
    		
    		response.setContentType("text/html; charset=UTF-8");
    		PrintWriter pw = response.getWriter();
    				
    		pw.println("<html>");
    		pw.println("<head>");
    		pw.println("<title>" + "Test1.java"+ "</title>");
    		pw.println("</head>");
    		pw.println("<body>");
    		pw.println("<div>");
    		pw.println("<h1>name: "+ name + "</h1>");
    		pw.println("<h1>age: "+ age + "</h1>");
    		pw.println("</div>");
    		pw.println("</body>");
    		pw.println("</html>");
    		*/
    		
    		// โ‘ข
    		/*
    		์ด์ „์˜ ์ฒ˜๋ฆฌ๋Š”,
    			๋Œ์•„๊ฐ€๊ณ  ์žˆ๋Š” ๊ตฌ์กฐ๋ผ๋ฉด ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์‹ถ์–ด๋„(์œ ์ง€๋ณด์ˆ˜) ๋‹ค์‹œ ๋นŒ๋“œํ•˜๊ณ  ํŒจํ‚ค์ง€-๋ฐฐํฌํ•ด์•ผํ•จ
    		ํ•˜์ง€๋งŒ 3๋ฒˆ์˜ ์ฒ˜๋ฆฌ๋Š” java ํŒŒ์ผ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ๋นŒ๋“œํ•  ํ•„์š”๊ฐ€ ์—†๊ณ  xml์€ ๊ทธ์ € ํ…์ŠคํŠธ๋กœ ๋œ ํŒŒ์ผ์ด๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ž„
    		*/
    		
    		// ใ€ŽServletConfigใ€
    		//-- ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์„œ๋ธ”๋ฆฟ์„ ์ดˆ๊ธฐํ™”ํ•  ๋•Œ
    		//	์„œ๋ธ”๋ฆฟ ๋‹น ํ•˜๋‚˜์”ฉ ServletConfig ์„ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค.
    		ServletConfig config = getServletConfig();
    		
    		// ใ€Žweb.xmlใ€ ์— ใ€Ž<init-param>ใ€
    		String name = config.getInitParameter("name");
    		String age = config.getInitParameter("age");
    		
    		/*
    		response.setContentType("text/html; charset=UTF-8");
    		PrintWriter pw = response.getWriter();
    		
    		pw.println("<html>");
    		pw.println("<head>");
    		pw.println("<title>" + "Test1.java"+ "</title>");
    		pw.println("</head>");
    		pw.println("<body>");
    		pw.println("<div>");
    		pw.println("<h1>name: "+ name + "</h1>");
    		pw.println("<h1>age: "+ age + "</h1>");
    		pw.println("</div>");
    		pw.println("</body>");
    		pw.println("</html>");
    		*/
    		
    		// โ‘ฃ
    		
    		// ใ€ŽServletContextใ€
    		//-- ServletConfig ๋Š” ์„œ๋ธ”๋ฆฟ์— ๋Œ€ํ•œ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๋Š” ๊ณผ์ •์—์„œ
    		//	ํ•„์š”ํ•œ ๊ฐ’๋“ค์„ ์ „๋‹ฌํ•˜๋Š” ํ˜•ํƒœ๋กœ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค๋ฉด..
    		//	ServletContext ๋Š” ์„œ๋ธ”๋ฆฟ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ปจํ…์ŠคํŠธ๋ฅผ
    		//	๊ตฌ์„ฑํ•˜๋Š” ํ˜•ํƒœ๋กœ ํ™œ์šฉ๋œ๋‹ค.
    		ServletContext context = getServletContext();
    		
    		String type = context.getInitParameter("type");
    		
    		response.setContentType("text/html; charset=UTF-8");
    		PrintWriter pw = response.getWriter();
    		
    		
    		pw.println("<html>");
    		pw.println("<head>");
    		pw.println("<title>" + "Test1.java"+ "</title>");
    		pw.println("</head>");
    		pw.println("<body>");
    		pw.println("<div>");
    		pw.println("<h1>name: "+ name + "</h1>");
    		pw.println("<h1>age: "+ age + "</h1>");
    		
    		pw.println("<h1>age: "+ type + "</h1>");	// ์ถ”๊ฐ€
    		
    		pw.println("</div>");
    		pw.println("</body>");
    		pw.println("</html>");
    		
    	}
    }

    ใ„ด/WebApp21/WebContent/WEB-INF/lib

    ใ„ดใ„ดweb.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
    	<display-name>WebApp00</display-name>
    	<welcome-file-list>
    	  <welcome-file>index.html</welcome-file>
    	  <welcome-file>index.htm</welcome-file>
    	  <welcome-file>index.jsp</welcome-file>
    	  <welcome-file>default.html</welcome-file>
    	  <welcome-file>default.htm</welcome-file>
    	  <welcome-file>default.jsp</welcome-file>
    	</welcome-file-list>
      
      
    	<!-- Test1 ํด๋ž˜์Šค  → Servlet ๊ตฌ์„ฑ โ‘  -->
    	<!-- 
    	<servlet>
    		<servlet-name>lys</servlet-name>
    		<servlet-class>com.svt.Test1</servlet-class>
    	</servlet>
    	
    	<servlet-mapping>
    		<servlet-name>lys</servlet-name>
    		<url-pattern>/test1</url-pattern>
    	</servlet-mapping>
    	 -->
    	
    	
    	<!-- Test1 ํด๋ž˜์Šค  → Servlet ๊ตฌ์„ฑ โ‘ก -->
    	<!-- 
    	<servlet>
    		<servlet-name>lys</servlet-name>
    		<servlet-class>com.svt.Test1</servlet-class>
    	</servlet>
    	
    	<servlet-mapping>
    		<servlet-name>lys</servlet-name>
    		<url-pattern>/test1</url-pattern>
    	</servlet-mapping>
    	 -->
    	
    	
    	<!-- Test1 ํด๋ž˜์Šค  → Servlet ๊ตฌ์„ฑ โ‘ข -->
    	 
    	<servlet>
    		<servlet-name>lys</servlet-name>
    		<servlet-class>com.svt.Test1</servlet-class>
    		<init-param>
    			<param-name>name</param-name>
    			<param-value>์ตœํ˜œ์ธ</param-value>
    		</init-param>
    		<init-param>
    			<param-name>age</param-name>
    			<param-value>21</param-value>
    		</init-param>
    	</servlet>
    	
    	<servlet-mapping>
    		<servlet-name>lys</servlet-name>
    		<url-pattern>/test1</url-pattern>
    	</servlet-mapping>
    	
    	<!-- Test1 ํด๋ž˜์Šค  → Servlet ๊ตฌ์„ฑ โ‘ฃ ์ถ”๊ฐ€ -->
      	<context-param>
      		<param-name>type</param-name>
      		<param-value>์œ ๋จธ๋Ÿฌ์Šค</param-value>
      	</context-param>
      
    	<!-- ****************************************************************** -->
      
    	<!-- Test2 ํด๋ž˜์Šค  → Servlet ๊ตฌ์„ฑ -->
    	
    	<servlet>
    		<servlet-name>test2servlet</servlet-name>
    		<servlet-class>com.svt.Test2</servlet-class>
    	</servlet>
    	
    	<servlet-mapping>
    		<servlet-name>test2servlet</servlet-name>
    		<url-pattern>/abc</url-pattern>
    	</servlet-mapping>
    	
    	
    </web-app>

    ใ„ดใ„ดTest2.jsp

    /* ==================
    	Test1.java(Test2_ok.jsp)
    =================== */
    
    package com.svt;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class Test2 extends HttpServlet
    {
    	private static final long serialVersionUID = 1L;
    
    	// ์‚ฌ์šฉ์ž์˜ http ํ”„๋กœํ† ์ฝœ ์š”์ฒญ์ด GET ๋ฐฉ์‹์ผ ๊ฒฝ์šฐ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ
    	@Override
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    	{
    		doGetPost(request, response);
    	}
    
    	// ์‚ฌ์šฉ์ž์˜ http ํ”„๋กœํ† ์ฝœ ์š”์ฒญ์ด POST ๋ฐฉ์‹์„ ๊ฒฝ์šฐ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ
    	@Override
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    	{
    		doGetPost(request, response);
    	}
    	 
    	// ์‚ฌ์šฉ์ž ์ •์˜ ๋ฉ”์†Œ๋“œ
    	protected void doGetPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    	{
    		// GET ๋ฐฉ์‹์ด๋“  POST ๋ฐฉ์‹์ด๋“ 
    		// ์–ด๋–ค ๋ฐฉ์‹์˜ ์š”์ฒญ์—๋„ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๋ฉ”์†Œ๋“œ
    		
    		// ์„œ๋ธ”๋ฆฟ ๊ด€๋ จ ์ฝ”๋”ฉ
    		
    		// ์ด์ „ ํŽ˜์ด์ง€(Test2.jsp)๋กœ ๋ถ€ํ„ฐ ๋„˜์–ด์˜จ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 
    		// → name, age
    		
    		// ํ•œ๊ธ€ ๊นจ์ง ๋ฐฉ์ง€ ์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌ
    		request.setCharacterEncoding("UTF-8");
    		
    		// ๋ฐ์ดํ„ฐ ์ˆ˜์‹ 
    		String name = request.getParameter("name");
    		String age = request.getParameter("age");
    		
    		// ์—…๋ฌด ์ฒ˜๋ฆฌ
    		String str = "์ด๋ฆ„์€ [" + name + "]์ด๋ฉฐ, ๋‚˜์ด๋Š” [" + age + "]์„ธ ์ž…๋‹ˆ๋‹ค.";
    		
    		// ์ฒ˜๋ฆฌํ•œ ์—…๋ฌด ๋„˜๊ธฐ๊ธฐ
    		request.setAttribute("result", str);
    		//-- ํฌ์›Œ๋”ฉํ•˜๋Š” ํŽ˜์ด์ง€์— ๊ฐ’์„ ๋„˜๊ธฐ๊ธฐ ์œ„ํ•œ ์ค€๋น„(์„ค์ •)
    		//	์ฆ‰, str ๊ฐ’์„ result ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ Test2_result.jsp ํŽ˜์ด์ง€๋กœ
    		//	๋„˜๊ธฐ๊ธฐ ์œ„ํ•œ ์ค€๋น„
    		
    		// ํฌ์›Œ๋”ฉ
    		RequestDispatcher dispatcher = request.getRequestDispatcher("/Test2_result.jsp");
    		dispatcher.forward(request, response);
    		
    	}
    }

    ใ„ดใ„ดTest2.java(Test2_ok.jsp)

     

    ใ„ด/WebApp21/WebContent

    ใ„ดใ„ดTest2_result.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <%
    	String result = (String)request.getAttribute("result");
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Test2_result.jsp</title>
    <!-- <link rel="stylesheet" type="text/css" href="css/main.css"> -->
    <link rel="stylesheet" type="text/css" href="css/style.css">
    </head>
    <body>
    
    <div>
    	<h1>์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ’ ์ˆ˜์‹ </h1>
    	<hr />
    </div>
    
    <div>
    	<!-- <h2>๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ</h2> -->
    	<h2><%=result %></h2>
    </div>
    
    </body>
    </html>

    ใ„ดใ„ดTest2.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Test2.jsp</title>
    <!-- <link rel="stylesheet" type="text/css" href="css/main.css"> -->
    <link rel="stylesheet" type="text/css" href="css/style.css">
    </head>
    <body class="section">
    
    <div>
    	<h1>์„œ๋ธ”๋ฆฟ์—์„œ ๋ฐ์ดํ„ฐ ํ๋ฆ„</h1>
    	<hr />
    </div>
    
    <div class="layout">
    	<form action="<%=cp%>/abc" method="post">
    		<ul class="input_box">
    			<li>
    				์ด๋ฆ„<input type="text" name="name" class="txt" /><br />
    			</li>
    			<li>
    				๋‚˜์ด<input type="text" name="age" class="txt" /><br />
    			</li>
    		</ul>
    		
    		<div class="btn_box">
    			<button type="submit" class="btn">ํ™•์ธ</button>
    		</div>
    	</form>
    </div>
    
    </body>
    </html>