Я знаю, что Вы спрашивали о частном деструкторе. Вот то, как я использую защищенные. Идея - Вы, не хотят удалять основной класс через указатель на класс, который добавляет дополнительную функциональность к основному.
В примере ниже я не хочу, чтобы GuiWindow был удален через указатель HandlerHolder.
class Handler
{
public:
virtual void onClose() = 0;
protected:
virtual ~Handler();
};
class HandlerHolder
{
public:
void setHandler( Handler* );
Handler* getHandler() const;
protected:
~HandlerHolder(){}
private:
Handler* handler_;
};
class GuiWindow : public HandlerHolder
{
public:
void finish()
{
getHandler()->onClose();
}
virtual ~GuiWindow(){}
};
Использование java.net.URL
URL baseUrl = new URL("http://www.google.com/someFolder/");
URL url = new URL(baseUrl, "../test.html");
Как насчет:
String s = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/someImage.jpg";
Похоже, вы уже разобрались в самой сложной части, а именно, на каком хосте вы работаете. Остальное легко,
String url = host + request.getContextPath() + "/someImage.jpg";
Должно дать вам то, что вам нужно.