ś - Servlet ԟ ͅ

Craig Walker Thomas E. Davis ߜ
JavaWorld
ˉ ͌ :݇ͅ

͛ ԃ Servlet API ͂ ߅



鐋߅ ʼn ʼn ̓͂ ̓ ř͋ ˂ ނ
酋 ͕ Ś ڟ ߂ ͘ ޟ ߇ .˟ ˂ ˂
. 韍 ޟ ŋ ͂ ܛ ՜ ޟ ˌ
鐟) ˜˜ Ń ̓ Ŗ ř͋ API ߂
̓ ˜߅ (Cookie Օ ΂ ͟
.˜ ܉ Cookie Ś ̓ ܃
ŋ ߈͂ Craig Walker Thomas Davis 삋 ޟ
ř͋ ߅ߛ ͋ ޟ ͛ ڟ ˌ ͋
.˜ ͅ ԟ Ԃ ͅ



͂ ނߛ .ŋ ނ ߅ Ԃ ͕͟ ř͋
ݟ ͟ ݟ ԃ Ù .˜ߜ ͋ ͂
ނ˜ П͋ ނ˜ П͋ ƙ ̓ ː ٟ
Java2 Ś ΂ ݞ ъ ڟ .˜ ̓
Ђ 錂 Enterprise Edition (J2EE) ͂
̈́ ˕ ͘ .˜ ܟ Java Server Pages
͂ 酙͋ Є ˌ ԃ ̈́ ˟ ߂
ނ ޟ Java Servlet API ˜ ˂ ߞ ͋ .˟
雂 Request ڟ ˟ ˝ ܗ Ԝ .˝
雂 Ο Response ڟ ߛ ܂ ͋ ̓ Ŝ ˌ
Session . ߛ ܂ Ŝ ̓ ͋ ŋ
.˟ ͟ ߊ ŋ Κ ͂ ͛ ̓ ߇ߛ ł
.ŋ ԛ ř͋ ڟ ߛ ŋ Ο ޟ


ř͋ ڟ ł ͟ ܗ

ݞ ˌ ˂ ߕ ͂ ނ Java_Servlet_API
՜ ˜߄ Пߜ ̓ ڟ ͂ ͊
雂̓ ޟ ߇ .˜ ř͋ ߅ߛ ͂ ͂՜
雂̓ .˜ Յ ˜ Ο ̈́ Ō ߛ ˟
삋 ޟ ԃ ߛ ޟ .͟ ߅ߛ ͂ ߙ ˝ߊ Пߜ
߅ ř͋ ԟ ͅ ߉ ˜ ś ˜ .˜ Ń
霕ͅ ̓ ͞ ͅ ߉ ޟ . ݟߊ
şߖ Ã џΕ ̈́ ̓͂ ˟ "
. ݟߊ ނ

镂 ̓͂ ͎ ł ř͋ ߅ߛ ͆
̘͂ ˜΂ ̓ ͋ ˜ ˂ ߙ ͂ ޟ .˜
͋ ˟ ˜ ˟΂ ͝ ߈ .͟ ͅߟ ˜ Ë
݋ Ӊ .ŋ ҂ ˃
͕ ߍ ͋ ڟ ˜ ˟΂ ڟ ̘͂ ˂
ٙ ͋ ڟ Ԗ ˜ ˟΂ ޟ̓ ͋ ނ
̓ .͟ ͖ ˂ ř ˊ͈ ͋ ޟ ޟ ˜
韜 ͛ ͘ ř͋ ߅ߛ ˜͕ ڟ ˟ ܗ ޟ ܉
韂郜 ŋ ߙ ˟ ˟͊ ܗ ̓ ڟ
.˟ ͂

ۂ ߜ .ݟ ɟ߅ ߛ ޟ ͜ ř
Cookie 酌ߜ ڟ ͘ ˟ˌ ߛ Cookie
˂ Ԝ ˟ ͅ http://drum.rudiment.net
韂 ΂ ͜ ˟߅ http://www.drum.rudiment.net
霂 . ݂ Cookie
霗 ŋߊ Cookie ˟̓͘ http://drum.rudiment.net
ނ錜 ߅ߛ ŋ ނ ܂ ޟ ˌ ߜ
.ݟ ܉ Ś ͋ ޟ ݝ ܗ ޟ .˝

͋ ߅ߛ ޟ Ë ͛ ڟ ͖ Ђ ˅ ś
ߛ ߘ ޟ .͗ ݟߊ ͐ ř͋ ˗
˜ߝ ߖ ΂ ͂ ̓ ˜ ˂ ˂
łߎߛ ŋ ˟ˇ ނ ڟ ߂ ߇ .˟
̓ .˝ ނ ߊ ͂ ˜
雇 ˌ ߜ Ś ޟ ݟ ͂ ˗ ˟ ˟
.ˌ Ɖ ͟ API ˌ ŋ

JDK 1.1
JDBC 1.22
Servlet 2.1.1



˜ ь߄
鞅͋ ޟ ܍ .ˌ API ь߄ ř͋ ԟ ͅ
ނ ߟ ޟ ߈ .˟ ˂ ͛ ߟ ڟ ř͋ ߅ߛ ߊ
霝 ь߄ ޟ̓ (˜ ͇ ) ˝ ނ API
ŋ ޟ ޟ ˝ .ˌ ş ܃ ͟ ř͋
.ݟ ͂ (ř͋ ߅ ˖ ߈͂) RSEF ܆ ˜ ь߄
铙 Ε͜ ͂ ŋ Ŗ ޟ ނ ߜ ޟ ߞ
铙 ޟ .͟ ̓ ( ܍) rudiment
.韂 ߓ ߈͂ ͛ ͂ ͝ ̓ ˜ߝ ͟ ˂
̓ RSEF ߍ К .ŋ Ɏ ͖ RSEF Пߜ ̓ ˟
RSEF ߊ̓ ՜ .ŋ HttpServlet ˋ ˟ Пߜ
:˟ ߅ ٟ ޟ RSEF HttpServlet ˟

public class Myservlet extends net.rudiment.servlet.HttpServlet

net.rudiment.servlet HttpServlet 鐛 ř͋
RSEF . javax.servlet.http Ε ͜
郂 ˝ ߅ javax.servlet.http HttpServlet
͂ RSEF ޟ .˝ ͖ ř͋ ߅ߛ ޟ
.˟ ݞ ߙ ߍ API ˗ ˜


˝ ͖ ͋ ߅ߛ ޟ ߊ ߈͂ : ܗ


߄ ʼn
韙 .˝ ݂ ߊ ˂ ͂ ˂ ͂ ˜߅ RSEF ߜ
Ԝ .ˌ ř͋ ь߄ RSEF ͂ ޟͅݞ
RSEF ޟ̓ .˜ Session Response Request ܛ ˌ ͗
SessionWrapper ResponseWrapper Requestwrapper 韂
͂ ͘) John_Vlissides Ralph Richard Erich Gamma .ˌ
(˟삛 ͛ Resources ) Design Patterns ݂ ނ (͐
ނ͐ .˜ ؟͐ Decorator ߘ ڟ ߜ ܛ ޟ
. ԃ ڟ 싛 Ε :ŋ ޟ ߘ

͜ ̓ ڟ ԃ х˖ Decorator ߘ
Request ř͋ .˜ Ë ߄ ԃ ˍ
霝 ь߄ ˜ ͖̓ Ԃ Session Response
Ο ˜ ь߄ ߈ ߇ .˜ ߘ ߍ
.ŋ Ɏ ޟ Ԃ ̙ ˜ ߊ ܍ ԃ
.˟˜ ߊ ˗ ͟ ΂ RSEF Λ ߊ̓ ՜

酕 .˜ ܛ ̈́ ڟ ߜ ˜ ь߄ ߛ
͘ ͅ ˜߅ ̓ ̈́ ߘ ڟ ͕͂ ͘ ޟ
ޟ .˝ ͖ ޟΘ ڟ ̓ ͅ ʼn
陗 ޟ ܉ ߉ ̓ ̓ .˟ ˟ߊ ߛ ޟ ː
Java_World ͟ Adapter ߘ ڟ ˂
Use Microsoft`s Internet Information Server as a Java Servlet Engine
.(˟삛 ͛ Resources ś ) .˟ ͛


˜ߌ ˜΂ ˜ ь߄ ߘ - ܗ

͂ ΂ Session ь߄ ˟ ˝ ܗ Ԝ
.錂 Request ܍ Session ߈ . ͅ ś
ނ ՜ .ݟ߄ Request ˂ ݟ߅
.ŋ ڂԊ ݝ ˉ ߈ ˟ߊ



˗
ь߄ ͝ ͗ ݟߊ ߘ ː Ś Ο ˜ͅ ͇ ̓
RequestWrapper ͂ .韂 ߘ ߊ ˜ ь߄ ̓ ˟ ˜
.˟ SessionWrapper ߅ߛ Request ŋ ޟ Ԗ
.錂 ResponseWrapper 霏 ܂ ˟
. Ԃ RequestWrapper 韂 ResponseWrapper
RequestWrapper 韂 SessionWrapper
鏂 ݝ̓ ݝ ߅ ߅ ԃ ޟ .ˌ ResponseWrapper
SessionWrapper RequestWrapper .ߌ ͗ ՜ ܗ ˂
.ߌ ߛ SessionWrapper ܃ ˟ ޟ̓ ͟ ̓
Session ͖ ь߄ ʼn ş싛 RequestWrapper Ŗ
˜ ь߄ ؙ ϟ ˟ Ԉ ː .
˟ ۜ

Cookie ۂ RequestWrapper ݟߊ
韂 SessionWrapper ˟
郂 ł SessionWrapper ͕ ޟ .˟̓ ͂ ˟
˟ RequestWrapper ߂ ͂ ˟ ˌ ͇
˖ ͝ .Session ь߄ ܃ ߟ͂ ͝ ̓
ނ雝 ˃ џΕ SessionWrapper RequestWrapper
錂 cut_and_paste ߃ ڟ ޟ ͟ ߌ ډ Ο ̓
.ŋ ߖ

ߊ SessionWrapper RequestWrapper ͅ ˗ ˟˃ ͘
ßͅ ˜ ܆ ŋ ݝ ˟̓ ͂
hardcoded ߍ ̓ ˟߅ ˟ ܂ ߊ ˜ ͈ ͋͋
؂ ͎ ͟ ߛ ̓͂ .˟ ݂


˟̓ ͂ ˟ߊ ͅ ˟ ԛ ͘ ͂ ͘
̓ ˟ ˌ ˟ ߍ ̓ ̓ ޟ
flag Ԉ .˟ ͅ ͇ ނ ߊ
RequestWrapper ˂ ڟ ͟˂ :˟ ˂
.˜ ˜ ͇ ̓ ߍ SessionWrapper ڟ ˂
!錂 韂 ݝ ͅ . ݝ ŕ Ŗ . ŋ


ߜ ߘ .˜ ڛ ͂ ͕ ͂ ͘ ޟ
ނ Design_Patterns Ԝ .ˌ Factory_Method ݟ ΂
К ڟ ˂ ̓ ŋ ͅ Factory_Method .... " ˌ
"... . ٟߐ ͕ К ΂ ߛ ˝ ނ
˂ 雂 RequestWrapper ނ : ނ韃
韝 ڟ RequestWrapper SessionWrapper
˂ ނ SessionWrapper ߜ ͂ߊ


霜 ˟߅ Ԗ ł͂ .ˌ ͂ ڟ
Ԝ ŋ .˜ ߛ ԃ ߍ ߜ ڟ Ԗ ߛ
΂ Â ΂ Â 霂͂
˂ .韂 ˟߅ SessionWrapper Ο SessionWrapper_Factory
.錂 ܃ RequestWrapper ̓ ͂ ߉ SessionWrapper
SessionWrapper ͂ Ԗ RequestWrapper
.˜ ܛ ˞ ݝ ͂ ˟




˗
酞 ޟ̓ ŋ ͗ ǟ Ùԛ ˂ ܂
ނ ь߄ ˜΂ ͟ ˗ .ݟ̓ ˗ ͋ ݟ
Response ݂ ̓ ߜ ˜΂ RequestWrapper SOURCE :˝
΂ RequestWrapper ߅ߛ ˌ Request
SessionWrapper ޟ . ь߄ ʋ ݂ ŋߊ
SessionWrapper 鄋 . ݝߊ ɟ߅ ͍ ԃ ͂ ΂
Response Request 镂 ь߄ ̓ ߜ ΂
ޟ ͈ . ͂ Session ݂ ̓ ܆ ŋ
鐃 Ś ߋ ޟ ʋ ŋ ݝ ˟ ˖ ԃ
韂 џ˜ͅ ͇ ̓ ˜ ь߄ ͝ ˟˃ Ԗ ߜ .ŕ ݟߊ
݂ ͖ ˜ ь߄ ̓ ̓ ߜ
SessionWrapper ڟ ˗ ͈ ߜ .ˌ ɟ߅ ͂ ˌ ߊ
Factory_Method ߘ ˟ SessionWrapper ߈ ŋ ˜΂
SessionWrapper .˝ ˌ ɟ߅ ͂
韂 RequestWrapper SessionWrapper ߜ ˝ ނ RSEF
.˟ ޟ ˜ ˂





:ŋ ˌ ͗ SessionWrapper ԃ

΂ 싛 ˅ ˝ ނ ڈߗ ˅ ڟ ԃ ޟ
酛 ޟ ͇ ߉ ː .ˌ ߊ SessionWrapper
.̓ ˟ߊ RequestWrapper ܊ ͂



߈͂ ͂ߊ ˜

釅 ˟ ΃ ݟ߅ ߜ ˟ ߇
雂 ˝ ߅ ͜ ř͋ RSEF HttpServlet .ݟ ܟ
ς ˜ ь߄ ΂ ߛ RSEF .ˌ ΃ ͟ߍ
Ђ 降 Ԗ :˝ ݂ ͂ Service() ˅ .˜
閕 ͂ Service() ˅ .͇ ͋ ř͋ ߅ߛ ޟ
ߛ К ˜ ь߄ Є ŋ Response Request
:ŋ ޟ ˗ .˅͕

public ResponseWrapper( HttpServletRequest request, HttpServletResponse response )

public RequestWrapper( HttpServletRequest request, ResponseWrapper response, SessionWrapperFactory factory )

public SessionWrapper( RequestWrapper request, ResponseWrapper response, HttpSession session )


霈 ߈͂ ޟ ˜˗ ˜ ݂ ͂ ޟ ˅
韂閛 ȟ˜ ˟ ߋ ޟ ߇ ̓ .ŋ ͛ ݝ
Є ͘ ڟ ř͋ ˌ ނ ڟ ͐ ř͋ ߅ߛ ͘ .ݟ
韜 ͟ ڟ ͘ .͟ ͖ ނ ŋ ߘ RSEF
韜 ߌ ͅΛߊ ݐ ˌ ȟ˜ ޟ
.ŋ ˜ ߊ


˜ ߊ ř͋ : ܗ


ş ˖ RSEF HttpServlet ˌ ˅
霗 .˝ ͜ ˜ ͞ ߊ ř͋ ߅ߛ ͇ ߉
ˌ ͗ ߟ͂ ˟˂ ݟ͗ ܛ ͈ ڟ
ͅ Cookie ۂ request ˜ ь߄ :˟ ͇
К 霟 .˜ ͟ ł Session ˜ ь߄
:˟삛 ßͅ ͟ ˗ ˂ ߊ BootStrap

public class BootStrap extends net.rudiment.servlet.HttpServlet
{
    public net.rudiment.servlet.ResponseWrapper wrapResponse(
HttpServletRequest request, HttpServletResponse response )
    {
        return( new net.rudiment.servlet.cookie.ResponseWrapper( request,
response ) );
    }

    public net.rudiment.servlet.RequestWrapper wrapRequest(
HttpServletRequest request, net.rudiment.servlet.ResponseWrapper response
)
    {
        return(
            new net.rudiment.servlet.cookie.RequestWrapper(
                request,
                response,
                factory
            )
        );
    }

    private static final net.rudiment.servlet.SessionWrapperFactory
factory =
        new SessionWrapperFactory()
        {
            public net.rudiment.servlet.SessionWrapper wrapSession(
net.rudiment.servlet.RequestWrapper request,
net.rudiment.servlet.ResponseWrapper response, HttpSession session )
            {
                return(
                    new
net.rudiment.servlet.session.database.SessionWrapper( request, response,
session )
                );
            }
        };
}

酋 RequestWrapper ߛ WrapResponse() ˅
雜 .˝ ݂ ͂ ޟ Ο WrapResponse() ˅ .΂ Cookie
şߝ ˖ ڟ ߈ ŋ ݂ К ڟ SessionWrapperFactory
˂ ڟ ߌ ͇ ř͋ ͂ ͝ ŋ ΂
ڟ ߜ ޟ̓ .(ŏ Օ ˝ ) ˟
.ݟ͘ ՜ ڟ ߎ

.˟ߛ ˜͗ ނ˜ ߊ .ŋ ͅ ߈͂ ߜ
RSEF 銋 ˜ ߊ ř͋ ŋ ޟ ͛ ޟ͊

public class Myservlet extends BootStrap


!˟ ͌ ˂ ߜ

.˟ ˂ ۜ ̓ ̓






ː ͂ ݟ͗ ͐ ͜ ߈͂
ř͋ ʼn ߇ߛ ̈́ ̓ ˟ şߖ ş
队 Օ ͅ Session ş͟˛ ͂ ː ś .ŋ
. ͛ Cookie ߉ ۂ ߋ ś .͗ ݟߊ Ń
.˟ RSEF ˖ ˟߅




ނ˜ߜ ͐
ݞ ݂ ڟ ނ ˟ ߛ ߂ ނ˜ ߅ Thomas E. Davis
ͅ ԃ ߊ Ο şߛ ş ޟ ߙߜ
錂 ߂ ނ韛 ̓ ߚ Ђ߅ .ŋ ߃
釛 ΂ ߘ ߜ ̓ ߖ ނ ˕
霚閂 ˂ ˜΂ ˂ Ђ߅ .ˌ ќ͂ ޟ
.˜ ܂ х ͂

霛) ˌ ނ ˟ ߛ ߂ Пߜ ̓ ڟ Ο Craig Walker
Ε͜ ˜ ͊ ܂ ߇ (߅ ߃ ߛ ǟ
͂ ŗ͌ ޟ ك ߂ .ŋ
߂ API ͂ ͂ ˂ ͂ Craig ͗ ş ߂
͘ Ο ͝ ͌ ŗ͌ џ ˅ ߛ ،
.Ō ޟ




Resources

Books


՜
ޟ ߛ ߊ ՜
:˟ߘ Ùԛ

-
-
-

-
Ë -
ߗ -

-
ߙԛ -
ŋ ˜ -




:ڟͅ ŋ

: ŗ͌ ݂








Copyright 2001, JavaWorld/International Data Group Corp./PC WORLD Iran. All rights reserved.