Servlet日記(1999/07/23)

本日の成果

 前回作成したBbsMsgには、内容をHTMLで出力するprintMsgメソッドを作っていましたが、考えてみればこれをtoStringメソッドにするとよいのでは?、と思って改造してみました。doGetメソッド内の、BbsMsgオブジェクトの内容を表示する処理で、明示的にtoStringメソッドを呼ばなくても、自動的にtoStringメソッドが呼ばれることが確認できました。

 今回の改造は、これだけ ^^;

class BbsMsg {
        (途中、省略)
        public String toString() {
                return
                    "<dl><dt>Name:<dd>" + getName()
                  + "<dt>Subject:<dd>" + getSubject()
                  + "<dt>Date:<dd>" + getDate()
                  + "<dt>Content:<dd><pre>" + getContent()
                  + "</pre></dl>";
        }
}

public class Bbs06 extends HttpServlet {
        (途中、省略)
        public void doGet(
                HttpServletRequest req,
                HttpServletResponse res
        ) throws ServletException, IOException {
        (途中、省略)
                url = req.getRequestURI();
                Enumeration e = mb.getAllMsgs();
                while (e.hasMoreElements()) {
                        msg = (BbsMsg)e.nextElement();
                        msgNo = mb.getMsgNo(msg);
                        out.println(
                            "No. " + msgNo
                          + " <a href=\"" + url + "?cmd=reply&msgno="  + msgNo + "\">reply</a>"
                          + " <a href=\"" + url + "?cmd=delete&msgno=" + msgNo + "\">delete</a><br>"
                          + msg
                          + "<hr>"
                        );
                }

本日の教訓

 toStringメソッドをオーバライドするには、publicを指定するのを忘れないこと。(忘れたら、コンパイラが教えてくれるから、いいんですが)

Servlet日記(1999/07/17) Servlet日記の目次 Servlet日記(1999/08/01)