λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“ 배우고 읡히기 +/Web

(80)[Web]16일차: ((JSP)) β–  JSP μ•‘μ…˜ νƒœκ·Έ(JSP Action Tag) β– , F_WebApp16~19

by μ’…μ΄λΉ¨λŒ€ 2023. 12. 18.
TOP

λͺ©μ°¨

    1. 2023.12.18(μ›”)

    β– β– β–  JSP μ•‘μ…˜ νƒœκ·Έ(JSP Action Tag) β– β– β– 

     

    β—‹ κ°œμš”

        JSP μ•‘μ…˜ νƒœκ·ΈλŠ” ν΄λΌμ΄μ–ΈνŠΈ ν˜Ήμ€ μ„œλ²„에 μ–΄λ–€ λ™μž‘을 μˆ˜ν–‰ν•˜λ„둝 λͺ…령을 λ‚΄λ¦¬λŠ” νƒœκ·Έλ‘œ 
        JSP νŽ˜μ΄μ§€ μ•ˆμ—μ„œ μžλ°” λΉˆμ¦ˆλ₯Ό μ‚¬μš©ν•  μˆ˜ μžˆλ„둝 ν•˜λŠ” μ•‘μ…˜ νƒœκ·Έμ™€ νŽ˜μ΄μ§€λ₯Ό ν™œμš©ν•  μˆ˜ μžˆλ„둝 ν•˜λŠ” μ•‘μ…˜ νƒœκ·Έλ‘œ λ‚˜λˆŒ μˆ˜ μžˆλ‹€.

        - JSP λΉˆκ³Ό κ΄€λ ¨λœ μ•‘μ…˜ νƒœκ·Έ

        `<jsp:useBean>`, `<jsp:setProperty>`, `<jps:getProperty>`

     


        - JSP νŽ˜μ΄μ§€ λͺ¨λ“ˆκ³Ό μš”청흐름 μ²˜λ¦¬λ₯Ό μœ„ν•œ μ•‘μ…˜ νƒœκ·Έ

        `<jsp:include>`, `<jsp:forward>`, `<jsp:param>` λ“±

     


    β—‹ ν˜•식 λ° κ΅¬μ‘°

     

        `γ€Ž<jsp:μ•‘μ…˜νƒœκ·Έ 속성="κ°’"> νƒœκ·Έμ— λ“€μ–΄μžˆλŠ” λ‚΄μš©</jsp:μ•‘μ„ νƒœκ·Έ>』`

        `γ€Ž<jsp:μ•‘μ…˜νƒœκ·Έ 속성="κ°’">』` <- νƒœκ·Έμ— λ“€μ–΄μžˆλŠ” λ‚΄μš©μ΄ 없을 경우

     

     

    β€» μŠ€μ½”ν”„(Scope)

     

        JSP μ•‘μ…˜ νƒœκ·Έλ₯Ό 톡해 μƒμ„±λœ κ°μ²΄λŠ” κ·Έ 객체가 μ‚¬μš©λ  수 μžˆλŠ” μŠ€μ½”ν”„ ν˜Ήμ€ 라이프사이클(Life Cycle : 생λͺ…μ£ΌκΈ°) 속성을 κ°–λŠ”λ°, 이것은 μƒμ„±λœ 객체의 λ ˆνΌλŸ°μŠ€κ°€ μ–΄λ””μ—μ„œ μ‚¬μš©λ  수 있고, μ–Έμ œ μ‚­μ œλ  것인지λ₯Ό κΈ°μˆ ν•œλ‹€.

        - page

            μƒμ„±λœ κ°μ²΄λŠ” λ‹¨μΌ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”청에 μ˜ν•΄ μƒμ„±λœ νŽ˜μ΄μ§€ λ‚΄μ—μ„œ μ ‘κ·Όν•˜μ—¬ μ‚¬μš©λ  μˆ˜ μžˆλ‹€.
            μƒμ„±λœ κ°μ²΄λŠ” μ‹€μ§ˆμ μœΌλ‘œ pageContext μ— μ €μž₯λœλ‹€.

     

        - request

            μƒμ„±λœ κ°μ²΄λŠ” λ‹¨μΌ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”청이 μ²˜λ¦¬λ˜λŠ” λ™μ•ˆμ— μ ‘κ·Όν•˜μ—¬ μ‚¬μš©λ  μˆ˜ μžˆλ‹€.
            requestκ°€ page 와 λ‹€λ₯Έ 점은 `request` μ—μ„œλŠ” `forward` λ‚˜ `include` λ₯Ό μ‚¬μš©ν•΄μ„œ 
            λ‹€λ₯Έ νŽ˜μ΄μ§€λ‘œ μ œμ–΄κ°€ μ΄λ™λ˜λŠ” κ²½μš°μ—λ„ κ°μ²΄μ— μ ‘κ·Όν•˜μ—¬ μ‚¬μš©ν•  μˆ˜ μžˆλ‹€.
            μƒμ„±λœ κ°μ²΄λŠ” μ‹€μ§ˆμ μœΌλ‘œ HttpServletRequest μ— μ €μž₯λœλ‹€.

        - session

            μƒμ„±λœ κ°μ²΄λŠ” μ‚¬μš©μžμ˜ μ„Έμ…˜μ΄ μœ μ§€λ˜λŠ” μ–΄λА κ³³μ—μ„œλ‚˜ μ ‘κ·Όν•˜μ—¬ μ‚¬μš©λ  μˆ˜ μžˆλ‹€.
            μƒμ„±λœ κ°μ²΄λŠ” μ‹€μ§ˆμ μœΌλ‘œ HttpSession에 μ €μž₯λœλ‹€.

        - application

            μƒμ„±λœ κ°μ²΄λŠ” μ›Ή μ‘μš©ν”„λ‘œκ·Έλž¨μ˜ λΌμ΄ν”„ μ‚¬μ΄ν΄ λ™μ•ˆμ— μ›Ή μ‘μš©ν”„λ‘œκ·Έλž¨μ— μ†Œμ†λœ μž„μ˜μ˜ Servlet κ³Ό JSP μ—μ„œ μ ‘κ·Όν•˜μ—¬ μ‚¬μš©λ  μˆ˜ μžˆλ‹€.
            μƒμ„±λœ κ°μ²΄λŠ” μ‹€μ§ˆμ μœΌλ‘œ ServletContext μ— μ €μž₯λœλ‹€.

    β—‹ <jsp:param>


        <jsp:param> νƒœκ·ΈλŠ” μš”μ²­ν•œ νŽ˜μ΄μ§€λ‘œ μ €μ˜€λ₯Ό μ „달할 λ•Œ μ‚¬μš©ν•˜λŠ” νƒœκ·Έλ‘œ ν˜„μž¬ νŽ˜μ΄μ§€μ—μ„œ μš”μ²­ν•œ νŽ˜μ΄μ§€λ‘œ μΈμž(parameter)와 μΈμžκ°’(value) ν˜•νƒœλ‘œ λ„˜κ²¨μ€€λ‹€.

        <jsp:param name="paramName" value="var" />

        β€» μ΄ νƒœκ·ΈλŠ” λ‹¨λ…μœΌλ‘œ μ‚¬μš©ν•˜μ§€ λͺ»ν•˜κ³  
            <jsp:inclue> λ‚˜ <jsp:forward> νƒœκ·Έμ˜ λ‚΄λΆ€μ— κΈ°μˆ ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.

        - name  μ†μ„±

            ν¬ν•¨λ˜λŠ” JSP νŽ˜μ΄μ§€μ— μ „달할 νŒŒλΌλ―Έν„°μ˜ μ΄λ¦„을 ν‘œμ‹œ.

        - value μ†μ„±

            μ „달할 νŒŒλΌλ―Έν„° κ°’을 ν‘œμ‹œ. μ΄λ•Œ, value μ†μ„± κ°’μœΌλ‘œ ν‘œν˜„식을 μ‚¬μš©ν•˜λŠ” κ²ƒλ„ κ°€λŠ₯ν•˜λ‹€.

     

    β—‹ <jsp:forward>

        <jsp:forward> νƒœκ·ΈλŠ” ν˜„μž¬ λ¨Έλ¬Όκ³  μžˆλŠ” JSP νŽ˜μ΄μ§€μ—μ„œ URL둜 μ§€μ •ν•œ νŠΉμ •ν•œ νŽ˜μ΄μ§€λ‘œ λ„˜μ–΄κ°ˆ λ•Œ μ‚¬μš©ν•˜λŠ” νƒœκ·Έλ‘œ
        ν˜„μž¬ νŽ˜μ΄μ§€μ—μ„œ 쑰건에 따라 μ„œλ‘œ λ‹€λ₯Έ νŽ˜μ΄μ§€λ₯Ό ν˜ΈμΆœν•  경우 μ‚¬μš©λœλ‹€. 이 νƒœκ·Έμ˜ νŠΉμ΄ν•œ 점은 ν˜„μž¬ νŽ˜μ΄μ§€μ— λŒ€ν•œ URL만 λ‚˜νƒ€λ‚  뿐 μ œμ–΄κ°€ λ„˜μ–΄κ°„ νŠΉμ • νŽ˜μ΄μ§€μ˜ URL μ΄ μ „ν˜€ λ‚˜νƒ€λ‚˜μ§€ μ•ŠλŠ”λ‹€λŠ” μ μ΄λ‹€.
        ν΄λΌμ΄μ–ΈνŠΈμ˜ μ›Ή λΈŒλΌμš°μ € μ£Όμ†Œλž€μ— λ³΄μ΄λŠ” URL κ³Ό μ‹€μ œ λΈŒλΌμš°μ €μ—μ„œ μ½μ–΄λ“€μ΄κ³  μžˆλŠ” λ¬Έμ„œκ°€ μ„œλ‘œ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ—
        μ‚¬μš©μžλŠ” μ΄λŸ¬ν•œ μƒν™©μ΄ λ²Œμ–΄μ§€κ³  μžˆλŠ” μ§€λ₯Ό κ°μ§€ν•  μˆ˜ μ—†λ‹€.
        κ·Έλ¦¬κ³  μ œμ–΄κ°€ λ„˜μ–΄κ°ˆ λ•Œ request λ‚΄λΆ€ 객체도 같이 μ „λ‹¬λœλ‹€.
     

     <jsp:formard page="μ΄λ™ν• νŽ˜μ΄μ§€μ΄λ¦„" />

     



        - page μ†μ„±

            μ΄λ™ν•  νŽ˜μ΄μ§€μ˜ μ΄λ¦„을 κΈ°μˆ ν•˜λ©° page μ†μ„±μ˜ κ°’인 μ΄λ™ν•  νŽ˜μ΄μ§€μ˜ μ΄λ¦„은 μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μƒλŒ€ κ²½λ‘œλ‚˜, μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ ˆλŒ€ κ²½λ‘œλ‘œ μ§€μ •ν•  μˆ˜ μžˆκ³ , ν‘œν˜„식을 μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€.

        - <jsp:forward> μ•‘μ…˜ νƒœκ·Έμ—μ„œ <jsp:param> νƒœκ·Έλ‘œ ν”„λ‘œκ·Έλž¨μ˜ μ œμ–΄κ°€ 이동할 νŽ˜μ΄μ§€μ— νŒŒλΌλ―Έν„° 값을 전달할 수 있으며
            μ „달받은 κ°’은 γ€Žrequest.getParameter("νŒŒλΌλ―Έν„°μ΄λ¦„")γ€μœΌλ‘œ λ„˜κ²¨λ°›λŠ”λ‹€.

     

            <jsp:forward page="μ΄λ™ν• νŽ˜μ΄μ§€μ΄λ¦„">
                <jsp:param naem="paramName1" value="var1">
                <jsp:param naem="paramName2" value="var2">
            </jsp:forward page="<%=url%>" />



        - λ‹¨μˆœνžˆ page μ†μ„±μ— μ§€μ •λœ νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•˜λŠ”λ° κ·ΈμΉ˜λŠ” κ²ƒμ΄ μ•„λ‹ˆλΌ μ΄λ™ν•  νŽ˜μ΄μ§€μ— μžμ‹ μ˜ μ •보λ₯Ό νŒŒλΌλ―Έν„° ν˜•μ‹μœΌλ‘œ μ „달할 μˆ˜ μžˆλŠ” κ²ƒμ΄λ‹€.

            <jsp:forward page="view.jsp" />
            <%
                String url = "/To.jsp";
            %>
            </jsp:forward>

     


    β—‹ <jsp:include>

        <jsp:includa> νƒœκ·ΈλŠ” μ›ΉνŽ˜μ΄μ§€λ₯Ό κ³΅ν†΅λœ νŽ˜μ΄μ§€λ₯Ό λͺ¨λ“ˆν™”ν•˜μ—¬ λ ˆμ΄μ•„웃을 κ΅¬μ„±(μž‘μ„±)ν•  μˆ˜ μžˆλ„둝 μ§€μ›ν•œ νƒœκ·Έμ΄λ‹€.
        include λ””λ ‰ν‹°λΈŒ(<@ include>)와 ν•¨κ»˜
        λ‹€λ₯Έ νŽ˜μ΄μ§€λ₯Ό ν˜„μž¬ νŽ˜μ΄μ§€μ— ν¬ν•¨μ‹œν‚¬ μˆ˜ μžˆλŠ” κΈ°λŠ₯을 κ°€μ§„ νƒœκ·Έμ΄λ‹€.
        λ‹¨, include λ””λ ‰ν‹°λΈŒλŠ” λ‹¨μˆœν•˜κ²Œ μ†ŒμŠ€μ˜ λ‚΄μš©μ΄ ν…μŠ€νŠΈλ‘œ ν¬ν•¨λ˜μ§€λ§Œ <jsp:include> μ•‘μ…˜ νƒœκ·Έλ₯Ό ν¬ν•¨μ‹œν‚¬ νŽ˜μ΄μ§€μ˜ μ²˜λ¦¬ κ²°κ³Όλ₯Ό ν¬ν•¨μ‹œν‚¨λ‹€λŠ” μ μ—μ„œ μ°¨μ΄λ₯Ό κ°–λŠ”λ‹€.
        ν¬ν•¨λ˜λŠ” νŽ˜μ΄μ§€ html, jsp, Servlet νŽ˜μ΄μ§€ λͺ¨λ‘ κ°€λŠ₯ν•˜λ©° include λ””λ ‰ν‹°λΈŒλŠ” μ£Όλ‘œ μ‘°κ° μ½”λ“œλ₯Ό μ‚½μž…ν•  λ•Œ μ‚¬μš©λ˜κ³ , <jsp:include>μ•‘μ…˜ νƒœκ·ΈλŠ” νŽ˜μ΄μ§€λ₯Ό λͺ¨λ“ˆν™” ν•  λ•Œ μ‚¬μš©λœλ‹€.
         μ¦‰, ν…œν”Œλ¦Ώ νŽ˜μ΄μ§€λ₯Ό μž‘μ„±ν•  λ•Œ μ£Όλ‘œ μ‚¬μš©λœλ‹€λŠ” κ²ƒμ΄λ‹€.λ˜ν•œ, <jsp:include>μ•‘μ…˜ νƒœκ·Έ κ°™μ€ request κΈ°λ³Έ κ°μ²΄λ₯Ό κ³΅μœ ν•œλ‹€.

         <jsp:include page="url" flush="false" />

        - page μ†μ„±

            ν˜„μž¬ νŽ˜μ΄μ§€μ— κ²°κ³Όκ°€ ν¬ν•¨λ  λŒ€μƒμ˜ νŽ˜μ΄μ§€μ™€ μ΄λ¦„

        - flush μ†μ„±

            μΆœλ ₯ λ²„νΌμ˜ ν”ŒλŸ¬μ‹œ μœ λ¬΄
            ν¬ν•¨λ  νŽ˜μ΄μ§€λ‘œ 이동할 λ•Œ ν˜„μž¬ νŽ˜μ΄μ§€κ°€ μ§€κΈˆκΉŒμ§€ 좜λ ₯ 버퍼에 μ €μž₯ν•œ κ²°κ³Όλ₯Ό μ–΄λ–»κ²Œ μ²˜λ¦¬ν• μ§€λ₯Ό κ²°μ •ν•œλ‹€.
            flush μ†μ„±μ˜ κ°’은 false둜 μ„€μ •ν•˜λŠ” κ²ƒμ΄ μΌλ°˜μ μ΄λ‹€.
            flush μ†μ„±μ˜ κ°’을 true둜 μ§€μ •ν•  κ²½μš° μΌλ‹¨ μΆœλ ₯ λ²„νΌμ˜ λ‚΄μš©μ„ μ›Ή λΈŒλΌμš°μ €λ‘œ μ „μ†‘ν•˜κ²Œ λ˜λŠ”λ°
            μ΄ λ•Œ, ν—€λ” μ •보도 ν•¨κ»˜ μ „μ†‘λœλ‹€. ν•΄λ” μ •보가일단 μ›Ή λΈŒλΌμš°μ €λ‘œ μ „솑되고 λ‚˜λ©΄ μ΄ν›„ ν—€λ” μ •보λ₯Ό μΆ”κ°€ν•˜λ”λΌλ„ κ²°κ³ κ°€ λ°˜μ˜λ˜μ§€ μ•ŠλŠ”λ‹€.

            <jsp:include page="url" flush="false"> 
                <jsp:param naem="paramName1" value="var1">
                <jsp:param naem="paramName2" value="var2">
            </jsp:include>

     

     

    β€» μžλ°” λΉˆμ¦ˆ(Java Bean)


        JSP νŽ˜μ΄μ§€μ— ν™”λ©΄ μΆœλ ₯ λΆ€λΆ„κ³Ό λ‘œμ§λ“€μ΄ μ„žμ—¬ μžˆλŠ” ν˜•νƒœλ‘œ μž‘μ„±ν•  κ²½μš° JSP νŽ˜μ΄μ§€λ₯Ό μ΄ν•΄ν•˜κΈ° μ–΄λ ΅κ³  λ””μžμ΄λ„ˆμ™€ ν˜‘업도 μ–΄λ €μ›Œ μ§„λ‹€.  
        λ˜ν•œ, JSP νŽ˜μ΄μ§€μ— ν™”λ©΄ μΆœλ ₯ λΆ€λΆ„κ³Ό λ‘œμ§λ“€μ΄ ν˜Όμž¬ν•œ ν˜•νƒœμ˜ μ½”λ“œλŠ” μž¬μ‚¬μš©μ„ ν•˜λŠ” κ²ƒλ„ μ–΄λ €μ›Œμ§€κ²Œ λœλ‹€.  
        JSPμ—μ„œλŠ” μžλ°”λ‘œ μž‘μ„±ν•œ ν΄λž˜μŠ€ μ€‘에 μžλ°”λΉˆμ¦ˆ κ΅¬μ•½μ— λ§žκ²Œ μž‘μ„±λœ ν΄λž˜μŠ€λ₯Ό JSP μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•˜κ²Œ ν•˜μ˜€μœΌλ©°,  
        μ΄λ₯Ό ν†΅ν•΄ ν”„λ¦¬μ  ν…Œμ΄μ…˜(μ›Ή λ””μžμ΄λ„ˆ μΈ‘)λΆ€λΆ„κ³Ό λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§(개발자 μΈ‘)을 μ²˜λ¦¬ν•˜λŠ” λΆ€λΆ„을 λΆ„λ¦¬ν•˜μ—¬ μž‘μ„±ν•  μˆ˜ μžˆλ‹€.  
        μ΄λ ‡κ²Œ ν•¨μœΌλ‘œμ¨ μ›Ήμ˜ λ‚΄μš©μœΌλ‘œλΆ€ν„° μ›Ήμ˜ ν‘œν˜„ λΆ€λΆ„을 λΆ„λ¦¬ν•˜κ²Œ λ˜κ³  λ™μ μΈ μ›Ή νŽ˜μ΄μ§€ μ œμž‘을 μœ„ν•œ κ°œλ°œκ³Ό κ΄€λ¦¬μ— μžˆμ–΄ λͺ…ν™•ν•œ λΆ„리가 κ°€λŠ₯ν•˜λ‹€.  
        λ˜ν•œ, 동일 κΈ°λŠ₯이 νŽ˜μ΄μ§€ ꡬ성이 λ‹¬λΌμ„œ 반볡적으둜 μ‚¬μš© λ˜λŠ” 경우 μ›Ή νŽ˜μ΄μ§€λ₯Ό 효율적으둜 μž‘μ„±, μˆ˜μ •ν•˜λ €λ©΄ 반볡적으둜 μ‚¬μš©λ˜λŠ” μ½”λ“œλ₯Ό μž¬μ‚¬μš©ν•  수 μžˆμ–΄μ•Ό ν•œλ‹€.  
        λΉˆμ€ μ΄μ™€ κ°™μ€ νš¨μœ¨μ μΈ μ½”λ”© μž‘업을 κ°€λŠ₯ν•˜κ²Œ λœλ‹€.  

        ν˜„μž¬ κ°œλ°œλ˜μ—ˆκ±°λ‚˜ κ°œλ°œμ€‘인(μž‘μ—… μ€‘인) ν”„λ‘œκ·Έλž¨λ“€μ€ λͺ¨λ‘ MVC κΈ°λ²•에 μ˜ ν•΄ κ°œλ°œλ˜κ³  μžˆλ‹€.  
        MVC κΈ°λ²•은 ν”„λ‘œκ·Έλž¨μ„ λͺ¨λΈ(Model), λ·°(View), μ»¨νŠΈλ‘€λŸ¬(Controller)둜 λ‚˜λˆ„μ–΄ κ°œλ°œμ„ ν•˜λŠ”λ°...  
        Model μ€ λ‘œμ§μ„ κ°€μ§€κ³  μžˆλŠ” λΆ€λΆ„μœΌλ‘œ DB와 μ—°λ™ν•˜λŠ” λΆ€λΆ„이고  
        View λŠ” μ‚¬μš©μžμ—κ²Œ μ œκ³΅ν•˜λŠ” ν™”λ©΄μœΌλ‘œ UI(User Interface)에 ν•΄λ‹Ήν•˜λ©°,  
        Controller λŠ” View μ™€ Model μ‚¬μ΄μ—μ„œ νλ¦„을 μ œμ–΄ν•˜λŠ” κ°œλ…μ΄λ‹€.  

        JAP νŽ˜μ΄μ§€ MVC μ—μ„œ View μ— ν•΄λ‹Ήν•˜κ³ , λ°”λ‘œ μ΄ View λ₯Ό λͺ¨λ“ˆν™” ν•˜λŠ” κ²ƒμ΄ ν…œν”Œλ¦Ώ νŽ˜μ΄μ§€μ΄λ©°, μžλ°” λΉˆμ¦ˆλŠ” Model에 ν•΄λ‹Ήν•œλ‹€κ³  λ³Ό μˆ˜ μžˆλ‹€.  

    β—‹ <jsp:useBean>


        <jsp:useBean> μ•‘μ…˜ νƒœκ·ΈλŠ” μžλ°”객체λ₯Ό μƒμ„±ν•˜κ±°λ‚˜ κΈ°μ‘΄μ— λ§Œλ“€μ–΄μ Έ μžˆλŠ” κ°μ²΄λ₯Ό λ°˜ν™˜ν•œλ‹€.

        <jsp:useBean id="name" scope="page|request|sesseion|application" typeSpec />

        - id μ†μ„±

            κ°μ²΄ μΈμŠ€ν„΄μŠ€λ₯΄ μ‹λ³„ν•˜λŠ” μ΄λ¦„μœΌλ‘œ λŒ€μ†Œλ¬Έμžλ₯Ό μ—„κ²©ν•˜κ²Œ κ΅¬λΆ„ν•œλ‹€.
            ν•œ λ²ˆ μƒμ„±λœ Bean μ΄ μ†Œλ©Έν•  λ•Œ κΉŒμ§€λŠ” κ°™μ€ id λ₯Ό μ€‘λ³΅ν•΄μ„œ μ‚¬μš©ν•  μˆ˜ μ—†λ‹€.

        - scope μ†μ„±

        κ°μ²΄ μ°Έμ‘° λ²”μœ„λ‘œ κΈ°λ³Έκ°’(default)은 page μ΄λ‹€.

            ·page

            κ°μ²΄ μ°Έμ‘°λŠ” service() ν˜ΈμΆœμ΄ μ’…λ£Œλ  λ–„ μ†Œλ©Έ.

     

            ·request

            HttpsevletRequest κ°μ²΄κ°€ μ†Œλ©Έλ˜μ§€ μ•ŠλŠ” ν•œ μ‘΄μž¬ν•˜λ©°,μ»¨ν…Œμ΄λ„ˆμ— μ˜ν•΄ μƒμ„±λœ μ„œλΈ”릿은 HttpServletRequest μ˜ setAttribute() λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ κ°μ²΄λ₯Ό HttpServletRequest μ— λ°”인딩 μ‹œν‚¨λ‹€.

            ·sesstion

            κ°μ²΄λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­κ³Ό κ΅¬λ³„λ˜λ©°, session μ΄ μ‚΄μ•„μžˆλŠ” λ™μ•ˆμ— μ‘΄μž¬ν•˜λ©°, μ»¨ν…Œμ΄λ„ˆμ— μ˜ν•΄ μƒμ„±λœ μ„œλΈ”릿은 HttpSession μ˜ putBalue(String key,Object value)λ©”μ†Œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ κ°μ²΄λ₯Ό HttpSession μ— λ°”인딩 μ‹œν‚¨λ‹€.

            ·application

            κ°€μž₯ μˆ˜λͺ…(생λͺ…μ£ΌκΈ°)이 κΈΈλ‹€. SevletContext μ˜ setAttribute()λ₯Ό ν†΅ν•΄ κ°μ²΄λ₯Ό SevletContext μ— λ°”μΈλ”©μ‹œν‚¨λ‹€.

        - typeSpec μ†μ„±

            class="class_name" |
            class="class_name" type="type_name"|
            type="type_name" class="class_name" |
            beanName="bean_name" type="type_name" |
            tpe="type_name" beanName="bean_name" |
            type="type_name"

     

            · class

            μ™„μ „ν•œ ν˜•νƒœμ˜ ν΄λž˜μŠ€ μ΄λ¦„μœΌλ‘œ beanName μ΄ μ •μ˜λ˜μ–΄ μžˆμ§€ μ•Šμ€ μƒν™©μ΄λΌλ©΄ λ°˜λ“œμ‹œ μ •μ˜ν•΄μ•Ό ν•œλ‹€.

            · beanName

            java.beans.Beans ν΄λž˜μŠ€μ˜ instantiate() λ©”μ†Œλ“œμ— γ…μš©ν•  vean μ΄λ¦„μœΌλ‘œ type κ³Ό beanName μ„ μ§€μ •ν•œ κ²½μš°μ—λŠ” classλ₯Ό μƒλž΅ν•  μˆ˜ μž‡λ‹€.
            μ£Όλ‘œ class μΈμžλ₯Ό μ“°μ§€ μ•Šμ„ κ²½μš° μ‚¬μš©ν•œλ‹€. λ‚΄λΆ€μ μœΌλ‘œ μ»¨ν…Œμ΄λ„ˆλŠ” id μ™€ scope λ₯Ό μ΄γ…›γ…‡ν•΄μ„œ κ°μ²΄λ₯Ό μ°ΎλŠ”λ‹€.
            μ΄ κ³Όμ •μ—μ„œ λ§Œμ•½ μ°Ύμ§€ λͺ»ν•  κ²½μš° ν˜„μž¬ ν΄λž˜μŠ€ λ‘œλ”λ‘œ instantiate() λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜λŠ”λ°, μ΄λ•Œ bena μ˜ μ΄λ¦„을 μΈμžλ‘œ μ „λ‹¬ν•œλ‹€. μ΄ μΈμŠ€ν„΄μŠ€μ˜ μƒμ„±μ΄ μ‹€νŒ¨ν•˜κ²Œ λ˜λ©΄ μ˜ˆμ™Έκ°€ λ°œμƒν•œλ‹€.

            · type클래슀의 ν˜•(Type)을 μ§€μ •ν•˜λŠ”, μƒλž΅ κ°€λŠ₯ν•œ νŠΉμ„±μ΄λ‹€.

            κ°μ²΄κ°€ 이 νŠΉμ„±μœΌλ‘œ μ§€μ •λœ ν˜•(type)이 아닐 경우 ClassCastException μ˜ˆμ™Έκ°€ λ°œμƒν•˜κ²Œ λœλ‹€.

        <jsp:useBean id="name" scope="page" typeSpec>
    
            <jsp:setProperty name="bean_name" prop_expr />
    
        <%
    
            // μŠ€ν¬λ¦½λ¦Ώμ„ μ΄μš©ν•˜μ—¬ λ‹€λ₯Έ 속성 값을 ν˜ΈμΆœν•˜λŠ” κΈ°λŠ₯을 κ°€μ§„ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  수 μžˆλ‹€.
    
        %>
    
        </jsp:useBean>

     

    β—‹ <jsp:setProperty>

     

        <jsp:setProperty> μ•‘μ…˜ νƒœκ·ΈλŠ” μžλ°” λΉˆμ— 속성 값을 ν• λ‹Ήν•œλ‹€. name 속성에 기술된 이름에 ν•΄λ‹Ήν•˜λŠ” bean ν΄λž˜μŠ€λŠ” <jsp:Bean> μ•‘μ…˜ νƒœκ·Έλ₯Ό μ΄μš©ν•΄μ„œ 이 μ•‘μ…˜μ΄ λ‚˜νƒ€λ‚˜κΈ° 전에 미리 μ •μ˜λ˜μ–΄μ•Ό ν•œλ‹€.

        <jsp:setProperty name="bean_name" prop_expr />

        - name μ†μ„±

            <jsp:userBean> μ•‘μ…˜ νƒœκ·Έμ— μ˜ν•΄ μ •μ˜λœ bean μΈμŠ€ν„΄μŠ€ μ΄λ¦„
        

        - prop_expr

       property="*" |
            property="property_name" |
            property="property_name" param="parameter_name" |
            property="property_name" value="parameter_value" |

            · property

                κ°’을 μ„€μ •ν•˜κ³ μž ν•˜λŠ” bean μ†μ„œμ˜ μ΄λ¦„μœΌλ‘œ γ€Ž"*"γ€μœΌλ‘œ μ„€μ •ν•˜λ©΄ ServeletRequest μ•ˆμ— λͺ¨λ“  μΈμžλ“€ μ€‘ bean μ†μ„±κ³Ό λ°μ΄ν„°νƒ€μž…이 μΌμΉ˜ν•˜λŠ” κ²ƒμ„ μ°Ύμ•„μ„œ κ°κ°μ˜ μ†μ„±λ“€μ„ κ°κ°€μ˜ μΈμžλ“€μ˜ κ°’μœΌλ‘œ μ„€μ •ν•œλ‹€.
                κ°’이 γ€Ž""』인 κ²½μš° μ†μ„±μ€ λ³€ν•˜μ§€ μ•ŠλŠ”λ‹€.

            · param

                bean μ†μ„±μ— μ„€μ •ν•˜κ³ μž ν•˜λŠ” κ°’을 νŒŒλΌλ―Έν„°μ—μ„œ μ§€μ •ν•˜κ³ μž ν•  κ²½μš° μ‚¬μš©ν•œλ‹€.

            · value 

                bean μ†μ„±μ— μ„€μ •ν•  κ°’을 μ§€μ •ν•˜λ©° ν•˜λ‚˜μ˜ <jsp:setProperty> μ•‘μ…˜ νƒœκ·Έκ°€ param κ³Ό value λ₯Ό λ™μ‹œμ— κ°€μ§ˆ μˆ˜ μ—†λ‹€.

    β—‹ <jsp:getProperty>

        <jsp:getProperty> μ•‘μ…˜ νƒœκ·ΈλŠ” bean μ˜ μ†μ„±κ°’을 μ–»λŠ”λ° μ‚¬μš©ν•œλ‹€.

        bean의 μ†μ„±κ°’을 μ–»μ–΄ String μœΌλ‘œ λ³€ν™˜ν•œ λ‹€μŒ μΆœλ ₯ μŠ€νŠΈλ¦ΌμœΌλ‘œ λ³΄λ‚Έλ‹€.

        <jsp:getProperty name="name" property="property_name">

     

        - name μ†μ„±

            μ†μ„±μ„ μ–»κ³ μž ν•˜λŠ” bean의 μΈμŠ€ν„΄μŠ€ μ΄λ¦„

        - property μ†μ„±

            μ–»κ³ μž ν•˜λŠ” μ†μ„±μ˜ μ΄λ¦„


    F_WebApp16: JSP μ•‘μ…˜ νƒœκ·Έ μ‹€μŠ΅

    1,2,3 방법 λͺ¨λ‘ κ²°κ³ΌλŠ” 동일

    γ„΄/WebApp16/src/com/test

    γ„΄γ„΄Calc.java

    /* =======================
    	Calc.java
    ========================== */
    
    package com.test;
    
    public class Calc
    {
    	// μ£Όμš” 속성  ꡬ성
    	private int su1;		//-- ν”Όμ—°μ‚°μž1 (μ •μˆ˜ ν˜•νƒœ)
    	private String op;		//-- μ—°μ‚°μž (λ¬Έμžμ—΄ ν˜•νƒœ)
    	private int su2;		//-- ν”Όμ—°μ‚°μž2 (μ •μˆ˜ ν˜•νƒœ)
    	
    	// μƒμ„±μž μ •μ˜ ν•˜μ§€ μ•ŠμŒ(μ‚¬μš©μž μ •μ˜ μƒμ„±μž μ—†μŒ)
    	// -> default μƒμ„±μž μžλ™ μ‚½μž…
    	
    	// getter / setter ꡬ성
    	public int getSu1()
    	{
    		return su1;
    	}
    	public void setSu1(int su1)
    	{
    		this.su1 = su1;
    	}
    	public String getOp()
    	{
    		return op;
    	}
    	public void setOp(String op)
    	{
    		this.op = op;
    	}
    	public int getSu2()
    	{
    		return su2;
    	}
    	public void setSu2(int su2)
    	{
    		this.su2 = su2;
    	}
    	
    	// λ©”μ†Œλ“œ μΆ”κ°€
    	public String result()
    	{
    		String result = "";
    		
    		int s=0;
    		if(op != null)
    		{
    			if(op.equals("+"))
    				s = su1 + su2;
    			else if(op.equals("-"))
    				s = su1 - su2;
    			else if(op.equals("*"))
    				s = su1 * su2;
    			else if(op.equals("/"))
    				s = su1 / su2;
    			
    			result = String.format("%d %s %d = %d", su1, op, su2, s);
    		}
    		
    		return result;
    	}
    	
    }

    γ„΄/WebApp16/WebContent

    γ„΄γ„΄Calc.jsp_JSP μ•‘μ…˜ νƒœκ·Έ μ‹€μŠ΅

    <%@ page contentType="text/html; charset=UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Calc.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>JSP μ•‘μ…˜ νƒœκ·Έ μ‹€μŠ΅</h1>
    </div>
    
    <div class="layout">
    	<!-- 첫 번재 방법 -->
    	<!-- <form action="Calc_ok1.jsp" method="post" name="myForm"> -->
    	
    	<!-- 두 번재 방법 -->
    	<!-- <form action="Calc_ok2.jsp" method="post" name="myForm"> -->
    	
    	<!-- μ„Έ 번재 방법 -->
    	<form action="Calc_ok3.jsp" method="post" name="myForm">
    		<table class="table">
    			<tr>
    				<th>첫 번째 μ •μˆ˜</th>
    				<td><input type="text" name="su1" class="txt"></td>
    			</tr>
    			<tr>
    				<th>μ—°μ‚°μž</th>
    				<td>
    					<select name="op">
    						<option value="+">λ”ν•˜κΈ°</option>
    						<option value="-">λΉΌκΈ°</option>
    						<option value="*">κ³±ν•˜κΈ°</option>
    						<option value="/">λ‚˜λˆ„κΈ°</option>
    					</select>
    				</td>
    			</tr>
    			<tr>
    				<th>두 번째 μ •μˆ˜</th>
    				<td><input type="text" name="su2" class="txt"></td>
    			</tr>
    			<tr>
    				<td colspan="2">
    					<button type="submit" class="btn" style="width: 100%;"> = </button>
    				</td>
    			</tr>
    			
    		</table>
    	</form>
    </div>
    
    </body>
    </html>

    γ„΄γ„΄Calc_ok1.jsp_첫 λ²ˆμ§Έ λ°©λ²• μ²˜λ¦¬κ²°κ³Ό

    <%@page import="com.test.Calc"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
    	// 이전 νŽ˜μ΄μ§€(Calc.jsp)둜 λΆ€ν„° λ„˜μ–΄μ˜¨ 데이터 μˆ˜μ‹ 
    	// -> su1, su2, op
    	String strSu1 = request.getParameter("su1");
    	String strSu2 = request.getParameter("su2");
    	String op = request.getParameter("op");
    	
    	int su1, su2;
    	su1 = su2 = 0;
    	String str="";
    	
    	if(strSu1.equals("") || strSu2.equals("") || strSu1==null || strSu2==null)
    		response.sendRedirect("Calc.jsp");
    	else{
    		su1 = Integer.parseInt(strSu1);
    		su2 = Integer.parseInt(strSu2);
    		
    		// μžλ°”μ—μ„œ μš°λ¦¬κ°€ μ„€κ³„ν•œ 클래슀λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄... 객체생성
    		Calc ob = new Calc();
    		//-- 이클립슀 μžλ™μ™„μ„± κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ ꡬ문을 μž‘μ„±ν•  경우
    		//		γ€Ž@page import="com.test.Calc"』이 ꡬ문도 ν•¨κ»˜ μƒμ„±λ˜μ–΄ 처리됨.
    		//		ν˜Ήμ€ μžλ™μ™„μ„± κΈ°λŠ₯을 μ‚¬μš©ν•˜μ§€ μ•Šμ„ κ²½μš°λ„
    		//		γ€Ž@page import="com.test.Calc"』이와 같은 ꡬ문을 직접 μž‘μ„±ν•΄μ„œ
    		//		ν•΄λ‹Ή 클래슀λ₯Ό μ‚¬μš©ν•  수 μžˆλ„λ‘œ μ²˜λ¦¬ν•΄ μ£Όμ–΄μ•Ό 함.
    		//		λ˜λŠ”, 생성 ꡬ문에 직접 γ€Žcom.test.Calc ob=new com.test.Calc();』
    		//		와 같이 μž‘μ„±ν•˜λŠ” 거도 κ°€λŠ₯함.
    		
    		ob.setSu1(su1);
    		ob.setSu2(su2);
    		ob.setOp(op);
    		
    		str = ob.result();
    	}
    	
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Calc_ok1.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>
    </div>
    	
    <div class="layout">
    	<h2><%=str %></h2>
    </div>
    
    </body>
    </html>

    γ„΄γ„΄Calc_ok2.jsp_두 λ²ˆμ§Έ λ°©λ²• μ²˜λ¦¬κ²°κ³Ό

    <%@page import="com.test.Calc"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%/* 
    	// 이전 νŽ˜μ΄μ§€(Calc.jsp)둜 λΆ€ν„° λ„˜μ–΄μ˜¨ 데이터 μˆ˜μ‹ 
    	// -> su1, su2, op
    	String strSu1 = request.getParameter("su1");
    	String strSu2 = request.getParameter("su2");
    	String op = request.getParameter("op");
    	
    	int su1, su2;
    	su1 = su2 = 0;
    	String str="";
    	
    	if(strSu1.equals("") || strSu2.equals("") || strSu1==null || strSu2==null)
    		response.sendRedirect("Calc.jsp");
    	else{
    		su1 = Integer.parseInt(strSu1);
    		su2 = Integer.parseInt(strSu2);
    		
    		Calc ob = new Calc();
    		
    		ob.setSu1(su1);
    		ob.setSu2(su2);
    		ob.setOp(op);
    		
    		str = ob.result();
    	}
    	*/
    %>
    <%
    	/* String strSu1 = request.getParameter("su1");
    	int su1 = Integer.parseInt(strSu1); */
    %>
    
    <!-- Calc 클래슀의 객체λ₯Ό ν˜„μž¬ νŽ˜μ΄μ§€μ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ μ§€μ • -->
    <jsp:useBean id="ob" class="com.test.Calc"></jsp:useBean>
    <!-- 이 ꡬ문은 슀크립릿 μ˜μ—­μ—μ„œ
    	γ€Žcom.gets.Calc ob = new com.test.Cals();』
    	을 μž‘μ„±ν•˜μ—¬ import ꡬ문을 μžλ™μœΌλ‘œ μ²˜λ¦¬ν•œ 것과
    	λ§ˆμ°¬κ°€μ§€ 효과λ₯Ό μ μš©ν•˜κ²Œ λœλ‹€. -->
    	
    <!-- requset.getParameter() λ©”μ†Œλ“œλ₯Ό 톡해 λ„˜κ²¨λ°›μ€(전달받은) 데이터λ₯Ό 
    	γ€ŽCalc』 클래슀λ₯Ό 기반으둜 λ§Œλ“€μ–΄μ§„ γ€Žob』객체에 λ„˜κ²¨μ£ΌκΈ° μœ„ ν•œ 속성 μ§€μ • -->
    <%-- <jsp:setProperty property="su1" name="ob" value="<%=su1 %>"/> --%>
    <!-- 이 ꡬ문은 Calc_ok1.jsp 의 γ€Žob.setSu1(su1);』과 같은 ꡬ문 -->
    
    <!-- check~!!! -->
    <!-- β€» 속성 이름과 λ™μΌν•œ νŒŒλΌλ―Έν„°μΈ 경우
    	γ€ŽgetParameter()γ€λ©”μ†Œλ“œ 없이 λ°”λ‘œ 받을 수 μžˆλ‹€. -->
    	
    	
    <!-- ob.su1 = xxx; -->
    <jsp:setProperty property="su1" name="ob"/>
    <!-- β‘  request.getParameter() 처리 -> λ§€κ°œλ³€μˆ˜λ₯Ό μ „λ‹¬ν•˜κΈ° μœ„ν•œ 데이터 μˆ˜μ‹  처리 -->
    <!-- β‘‘ Integer.parseInt() 처리 	-> λ§€κ°œλ³€μˆ˜λ₯Ό μ „λ‹¬ν•˜κΈ° μœ„ν•œ ν˜• λ³€ν™˜ 처리 -->
    <!-- β‘’ ob.su1 						-> ob.setSu1() 호좜 처리 -->
    <!-- ==> μ΅œμ’…μ μœΌλ‘œ ob -> Calc 기반의 ob 객체의 su1 속성에
    		이전 νŽ˜μ΄μ§€λ‘œλΆ€ν„° λ„˜κ²Ήλ‹€μ€ 데이터λ₯Ό μ μ ˆν•œ λ°μ΄ν„°νƒ€μž…(ν˜•)으둜 전달 -->
    		
    <jsp:setProperty property="su2" name="ob"/>
    <jsp:setProperty property="op" name="ob"/>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Calc_ok2.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>
    </div>
    	
    <div class="layout">
    	<%-- <h2><%=str %></h2> --%>
    	<h2><%=ob.result() %></h2>
    </div>
    
    </body>
    </html>

    γ„΄γ„΄Calc_ok3.jsp_μ„Έ λ²ˆμ§Έ λ°©λ²• μ²˜λ¦¬κ²°κ³Ό

    <%@page import="com.test.Calc"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    
    <%-- 
    <jsp:useBean id="ob" class="com.test.Calc"></jsp:useBean>
    <jsp:setProperty property="su1" name="ob"/>	
    <jsp:setProperty property="su2" name="ob"/>
    <jsp:setProperty property="op" name="ob"/>
     --%>
    
    <jsp:useBean id="ob" class="com.test.Calc"></jsp:useBean>
    <jsp:setProperty property="*" name="ob"/>
    <!-- **β€»μ£Όμ˜! java의 λ³€μˆ˜λͺ…κ³Ό jsp의 name 속성값이 κ°™μ•„μ•Ό μ‚¬μš©κ°€λŠ₯** -->
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Calc_ok3.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>
    </div>
    	
    <div class="layout">
    	<%-- <h2><%=str %></h2> --%>
    	<h2><%=ob.result() %></h2>
    </div>
    
    </body>
    </html>

    F_WebApp17: κ°„λ‹¨ν•œ κΈ°λ³Έ λ°©λͺ…둝 μž‘μ„± μ‹€μŠ΅

     

    γ„΄/WebApp17/src/com/test

    γ„΄γ„΄GuestDTO.java

    /*
    	GuestDTO.java
    */
    package com.test;
    
    public class GuestDTO
    {
    	// μ£Όμš” 속성 ꡬ성
    	private String userName;		//-- κ²Œμ‹œλ¬Ό μž‘μ„±μž
    	private String subject;		//-- κ²Œμ‹œλ¬Ό 제λͺ©
    	private String content;		//-- κ²Œμ‹œλ¬Ό λ‚΄μš©
    	
    	//β€» μ—¬κΈ°μ—μ„œ μ‚¬μš©ν•˜λŠ” λ³€μˆ˜λͺ…(속성λͺ…)의 μ•ž λ‘κΈ€μžλŠ” μ†Œλ¬Έμžλ‘œ μž‘μ„±ν•  것 ~!!! check~!!!
    	//	numScore 	-> getNumscore()/ setNumScore()
    	//	nScore		-> getNScore()	/ setNScore()
    	//				-> getnScore()	/ setnScore()
    	//				-> getNScore()	/ setNscore()
    	//	와 같이 setter κ°€ 속성λͺ…을 λΆˆλŸ¬μ˜€λŠ” κ³Όμ •μ—μ„œ 인식이 μ–΄κΈ‹λ‚˜λŠ” κ²½μš°κ°€ λ°œμƒν•  수 있기 λ•Œλ¬Έ
    	
    	// β€» μ—¬κΈ°μ—μ„œ μ‚¬μš©ν•˜λŠ” λ³€μˆ˜λͺ…(속성λͺ…)은 HTML 의 form νƒœκ·Έμ—μ„œ name μ†μ„±μœΌλ‘œ μ§€μ •ν•˜μ—¬ μ‚¬μš©ν•  것.
    	// κ·Έλž˜μ•Ό 속성 데이터 μˆ˜μ‹  및 속성 맀핑을 μ•‘μ…˜ νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜μ—¬ μ²˜λ¦¬ν•΄ 쀄 수 있기 λ•Œλ¬Έ.
    	
    	public String getUserName()
    	{
    		return userName;
    	}
    	public void setUserName(String userName)
    	{
    		this.userName = userName;
    	}
    	public String getSubject()
    	{
    		return subject;
    	}
    	public void setSubject(String subject)
    	{
    		this.subject = subject;
    	}
    	public String getContent()
    	{
    		return content;
    	}
    	public void setContent(String content)
    	{
    		this.content = content;
    	}
    }

    γ„΄/WebApp17/WebContent

    γ„΄γ„΄Guest_ok.jsp_κ°„λ‹¨ν•œ κΈ°λ³Έ λ°©λͺ…둝 μž‘μ„± μ‹€μŠ΅

    <%@ page contentType="text/html; charset=UTF-8"%>
    
    <%
    	request.setCharacterEncoding("UTF-8");
    %>
    
    <jsp:useBean id="guest" class="com.test.GuestDTO" scope="page"></jsp:useBean>
    <jsp:setProperty property="*" name="guest"/>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Guest_ok.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>
    	<h2>μž‘μ„±λœ λ‚΄μš©</h2>
    	<!-- <h3>이름: 홍길동</h3>
    	<h3>제λͺ©: μ–΄μ©Œκ΅¬μ €μ©Œκ΅¬</h3>
    	<h3>λ‚΄μš©: 이러쿡 저렁쿡 κΆμ‹œλ  κΆμ‹œλ </h3> -->
    	
    	<h3>이름: <%=guest.getUserName() %></h3>
    	<h3>제λͺ©: <%=guest.getSubject() %></h3>
    	<h3>λ‚΄μš©: <%=guest.getContent().replaceAll("\n","<br>") %></h3>
    	
    </div>
    
    </body>
    </html>

    γ„΄γ„΄Guest.jsp_κ°„λ‹¨ν•œ κΈ°λ³Έ λ°©λͺ…둝 μž‘μ„± μ‹€μŠ΅

    <%@ page contentType="text/html; charset=UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Guest.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">
    
    <script type="text/javascript">
    
    function formSubmit()
    {
    	//alert("확인");
    	var uName = document.getElementById("userName");
    	var uTitle = document.getElementById("subject");
    	var uCon = document.getElementById("content");
    	
    	var f = document.myForm;
    	
    	if(uName.value == "" || uTitle.value == "" || uCon.value == "" ||uName.value == null || uTitle.value == null || uCon.value == null )
    	{
    		return;
    	}
    	
    	f.submit();
    }
    
    </script>
    
    <div>
    	<h1>κ°„λ‹¨ν•œ κΈ°λ³Έ λ°©λͺ…둝 μž‘μ„± μ‹€μŠ΅</h1>
    	<hr />
    </div>
    
    <div class="layout">
    	<form action="Guest_ok.jsp" method="post" name="myForm">
    		<table class="table">
    			<tr>
    				<th>이름</th>
    				<td><input type="text" class="txt" name="userName" id="userName"></td>
    			</tr>
    			<tr>
    				<th>제λͺ©</th>
    				<td><input type="text" class="txt" name="subject" id="subject"></td>
    			</tr>
    			<tr>
    				<th>λ‚΄μš©</th>
    				<td><textarea cols="30" rows="5" name="content" id="content"></textarea></td>
    			</tr>
    			<tr>
    				<td colspan="2">
    					<button type="button" class="btn" style="width: 100%;" onclick="formSubmit()">λ°©λͺ…둝 μž‘μ„±</button>
    				</td>
    			</tr>
    		</table>
    	</form>
    </div>
    
    </body>
    </html>

     

     

    F_WebApp18: 데이터 μž…λ ₯κ³Ό 등둝 μˆ˜μ‹ κ²°κ³Ό 확인

     

    γ„΄/WebApp18/src/com/test

    γ„΄γ„΄FriendDTO.java

    package com.test;
    
    public class FriendDTO
    {
    	// μ£Όμš” 속성 ꡬ성
    	private String name, gender;		//-- 이름, 성별
    	private int age;					//-- λ‚˜μ΄
    	//private String checkGruop;
    	private String[] checkGruop;		//-- μ΄μƒν˜•
    	//-- μ΄μƒν˜•μ€ μ—¬λŸ¬ 개의 데이터가 λ™μ‹œμ— μ „λ‹¬λ˜λ―€λ‘œ
    	//(즉, 닀쀑 선택이 κ°€λŠ₯ν•˜λ„λ‘ κ΅¬μ„±ν•˜μ˜€κΈ° λ•Œλ¬Έμ—)
    	//λ°°μ—΄λ‘œ μ²˜λ¦¬ν•  수 μžˆλ‹€.
    	
    	// getter / setter
    	public String getName()
    	{
    		return name;
    	}
    	public void setName(String name)
    	{
    		this.name = name;
    	}
    	public String getGender()
    	{
    		return gender;
    	}
    	public void setGender(String gender)
    	{
    		this.gender = gender;
    	}
    	public int getAge()
    	{
    		return age;
    	}
    	public void setAge(int age)
    	{
    		this.age = age;
    	}
    	public String[] getCheckGruop()
    	{
    		return checkGruop;
    	}
    	public void setCheckGruop(String[] checkGruop)
    	{
    		this.checkGruop = checkGruop;
    	}
    	
    	public String result()
    	{		
    		String result = "";
    		if(checkGruop != null)
    		{
    			for(String item: checkGruop)
    				result += "["+ item + "]";
    		}
    		
    		return result;
    	}
    	
    }

    γ„΄/WebApp18/WebContent

    γ„΄γ„΄Friend_ok.jsp_등둝 μˆ˜μ‹ κ²°κ³Ό ν™•인

    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    %>
    
    <jsp:useBean id="ob" class="com.test.FriendDTO" scope="page"></jsp:useBean>
    <jsp:setProperty property="*" name="ob"/>
    
    <!-- 반볡문 ν•„μš”(닀쀑 μ„ νƒμœΌλ‘œ λ„˜μ–΄μ˜¨ 결과값을 좜λ ₯ν•˜κΈ° μœ„ν•œ 처리) -->
    <%
    	String str = "";
    if(ob.getCheckGruop() != null)
    {
    	for(String temp: ob.getCheckGruop())
    	{
    		str += temp+"";
    	}
    }
    %>
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Friend_ok</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>
    
    <ul>
    	<li>이름: <%=ob.getName() %></li>
    	<li>λ‚˜μ΄: <%=ob.getAge() %></li>
    	<li>성별: <%=ob.getGender() %></li>
    	<li>μ΄μƒν˜•(방법1): <%=ob.result() %></li>
    	<li>μ΄μƒν˜•(방법2): <%
    		for (String s : ob.getCheckGruop())
    	    {%>
    	    <%=s %>
    	  <%} %>
    	</li>
    	<li>μ΄μƒν˜•(방법3): <%=str %></li>
    </ul>
    
    
    </body>
    </html>

    γ„΄γ„΄Friend.jsp_데이터 μž…λ ₯

    <%@ page contentType="text/html; charset=UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Friend.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">
    <script type="text/javascript">
    function sendIt()
    {
    	var f = document.myForm;
    	
    	if(!f.name.value)
    	{
    		alert("μ΄λ¦„μž…λ ₯")
    		f.name.focus();
    		return;
    	}
    	f.submit();
    }
    </script>
    
    <div>
    	<h1>데이터 μž…λ ₯</h1>
    	<hr />
    </div>
    
    <!-- com.test.FriendDTO -->
    <!-- Friend_ok.jsp -->
    
    <div class="layout">
    	<form action="Friend_ok.jsp" method="post" name="myForm">
    		<table class="table">
    			<tr>
    				<th>이름(*)</th>
    				<td><input type="text" class="txt" name="name"></td>
    			</tr>
    			<tr>
    				<th>λ‚˜μ΄</th>
    				<td><input type="text" class="txt" name="age"></td>
    			</tr>
    			<tr>
    				<th>성별</th>
    				<td>
    					<label><input type="radio" name="gender" value="λ‚¨μž">λ‚¨μž</label>
    					<label><input type="radio" name="gender" value="μ—¬μž" checked>μ—¬μž</label>
    				</td>
    			</tr>
    			<tr>
    				<th>μ΄μƒν˜•</th>
    				<td>
    					<label><input type="checkbox" name="checkGruop" value="μ›λΉˆ">μ›λΉˆ</label>
    					<label><input type="checkbox" name="checkGruop" value="천우희">천우희</label>
    					<label><input type="checkbox" name="checkGruop" value="μΉ΄λ¦¬λ‚˜">μΉ΄λ¦¬λ‚˜</label>
    					<label><input type="checkbox" name="checkGruop" value="μ •μš°μ„±">μ •μš°μ„±</label>
    					<label><input type="checkbox" name="checkGruop" value="μ΄λ™μš±">μ΄λ™μš±</label>
    					<label><input type="checkbox" name="checkGruop" value="ν•œμ†Œν¬">ν•œμ†Œν¬</label>
    					<label><input type="checkbox" name="checkGruop" value="정해인">정해인</label>
    					<label><input type="checkbox" name="checkGruop" value="μˆ˜μ§€">μˆ˜μ§€</label>
    				</td>
    			</tr>
    			<tr>
    				<td colspan="2"><button type="button" class="btn" style="width: 100%;" onclick="sendIt()">등둝</button></td>
    			</tr>
    		</table>
    	</form>
    </div>
    
    </body>
    </html>

     

    F_WebApp19: 상단메뉴, μ’ŒμΈ‘λ©”λ‰΄, 메인화면, ν•˜λ‹¨λ©”λ‰΄ λ ˆμ΄μ•„μ›ƒ

    γ„΄/WebApp19/WebContent

    γ„΄γ„΄Bottom.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <!-- <link rel="stylesheet" type="text/css" href="css/main.css"> -->
    <link rel="stylesheet" type="text/css" href="css/style.css">
    </head>
    <body>
    
    ν•˜λ‹¨ 메뉴<br>
    <a href="">μ‚¬μ΄νŠΈμ†Œκ°œ</a> |
    <a href="">μ΄μš©μ•½κ΄€</a> |
    <a href="">도움말</a> |
    <a href="">μ‚¬μ΄νŠΈλ§΅</a> |
    
    </body>
    </html>

    γ„΄γ„΄Left.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <!-- <link rel="stylesheet" type="text/css" href="css/main.css"> -->
    <link rel="stylesheet" type="text/css" href="css/style.css">
    </head>
    <body>
    
    쒌츑 메뉴 <br>
    
    <ul>
    	<li><a href="">κ²Œμ‹œνŒ</a></li>
    	<li><a href="">λ°©λͺ…둝</a></li>
    	<li><a href="">일정관리</a></li>
    </ul>
    
    </body>
    </html>

    γ„΄γ„΄Main.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Main.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">
    <!-- include μ•‘μ…˜νƒœκ·Έκ°€ μ˜ˆμ „λ§ŒνΌ μ€‘μš”λ„κ°€ λ†’μ§„ μ•Šλ‹€.(iframe μ‚¬μš©ν•¨) -->
    
    <div class="layout">
    	<table class="table" border="1" style="width: 400px;">
    		<tr>
    			<td colspan="2">
    				<!-- Top -->
    				<jsp:include page="Top.jsp"></jsp:include>
    			</td>
    		</tr>
    		<tr style="height: 300px;">
    			<td>
    				<!-- Left -->
    				<jsp:include page="Left.jsp"></jsp:include>
    			</td>
    			<td>Main(메인화면)</td>
    		</tr>
    		<tr>
    			<td colspan="2">
    				<!-- Bottom -->
    				<jsp:include page="Bottom.jsp"></jsp:include>
    			</td>
    		</tr>
    	</table>
    </div>
    
    </body>
    </html>

    γ„΄γ„΄Top.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <!-- <link rel="stylesheet" type="text/css" href="css/main.css"> -->
    <link rel="stylesheet" type="text/css" href="css/style.css">
    </head>
    <body>
    
    상단 메뉴<br>
    <a href="">둜그인</a> |
    <a href="">νšŒμ›κ°€μž…</a> |
    <a href="">정보확인</a> |
    
    </body>
    </html>