#ifndef __DCL_HTTP_SERVLET_EX_H__ #define __DCL_HTTP_SERVLET_EX_H__ 20050530 #ifndef __DCL_BUFFER_STREAM_H__ #include <dcl/core/BufferStream.h> #endif #ifndef __DCL_HTTP_SERVLET_H__ #include <dcl/net/HttpServlet.h> #endif #ifndef __DCL_HTTP_COLLECTION_H__ #include <dcl/net/HttpCollection.h> #endif __DCL_BEGIN_NAMESPACE class HttpServletEx; class DCLNAPI HttpServletContextEx : public HttpServletContext { DECLARE_CLASSINFO(HttpServletContextEx) public: StringToStringMap m_mapCookie; StringToStringVectorMap m_mapQuery; StringToStringVectorMap m_mapForm; StoredHttpFormData m_mapFormFile; public: TextBufferOutputStream& createOutputStream( size_t nInitialSize = 4096, size_t nGrowSize = 4096 ); TextBufferOutputStream& getOutputStream(); protected: HttpServletContextEx( const DCL_HTTP_SERVER_API* pSAPI, const DCL_HTTP_SERVLET_CONTEXT* pContext, const String& strTempDir ); virtual ~HttpServletContextEx(); void initRequest(size_t nMaxContentLength) __DCL_THROWS1(FormDataException*); TextBufferOutputStream* m_pOutHtml; friend class HttpServletEx; }; class DCLNAPI HttpServletEx : public HttpServlet { DECLARE_CLASSINFO(HttpServlet) public: HttpServletEx(); protected: size_t m_nMaxContentLength; String m_strTempDir; #ifdef __DCL_DEBUG // Content-Type이 text/* 일 경우 __DCL_TRACE의 내용을 추가 bool m_bEnableDebugOut; #endif protected: virtual void onInitialize() __DCL_THROWS1(Exception*); virtual void onService( HttpServletContextEx& ctx ) = 0 __DCL_THROWS1(Exception*); private: virtual void onHttpService( const DCL_HTTP_SERVLET_CONTEXT* pContext ) __DCL_THROWS1(Exception*); }; __DCL_END_NAMESPACE #endif // __DCL_HTTP_SERVLET_EX_H__