Servlet日記(1999/03/14)

本日の成果

 文字エンコードの話は、結局どうするのか今ひとつよくわからないので、後回しにして他の部分を作ってみます。

 動作としては、前回と同じ入力フォームを表示し、さらにその下に、それまで入力したデータを表示します。フォームに入力すると、一番下に追加されます。

 このプログラムでは、入力したデータをメモリ上に持ち、ファイルに保存しません。Javaの入門書を片手に作ってみたところ、なんとか動いているようです。

import  java.io.*;
import  java.util.*;
import  java.text.*;
import  javax.servlet.*;
import  javax.servlet.http.*;

class bbsMsg {
    private static bbsMsg top = null;

    private bbsMsg next;
    private String msgName;
    private String msgSubject;
    private String msgContent;
    private Date msgDate;

    public bbsMsg() {
        if (top == null) {
            top = this;
        } else {
            bbsMsg btm;
            for (btm = top; btm.next != null; btm = btm.next)
                ;
            btm.next = this;
        }
        next = null;
        msgName = null;
        msgSubject = null;
        msgContent = null;
        msgDate = new Date();
    }

    public bbsMsg(String nam, String subj, String cont) {
        this();
        setName(nam);
        setSubject(subj);
        setContent(cont);
    }

    public static String printMsg() {
        String rtn = null;
        String s;

        for (bbsMsg msg = top; msg != null; msg = msg.next) {
            s = "<dl><dt>Name:<dd>" + msg.getName()
              + "<dt>Subject:<dd>" + msg.getSubject()
              + "<dt>Date:<dd>" + msg.getDate()
              + "<dt>Content:<dd><pre>" + msg.getContent() + "</pre></dl><hr>";
            if (rtn == null)
                rtn = s;
            else
                rtn = rtn + s;
        }
        return rtn;
    }

    public String getName() {
        return msgName;
    }
    public void setName(String nam) {
        msgName = nam;
    }
    public String getSubject() {
        return msgSubject;
    }
    public void setSubject(String subj) {
        msgSubject = subj;
    }
    public String getContent() {
        return msgContent;
    }
    public void setContent(String cont) {
        msgContent = cont;
    }
    public Date getDate() {
        return msgDate;
    }
}

public class Bbs01 extends HttpServlet {
    public void doGet(
        HttpServletRequest req,
        HttpServletResponse res
    ) throws ServletException, IOException
    {
        String msg;

        res.setContentType("text/html");
        PrintWriter out = res.getWriter();
        out.println("<html><head><title>BBS Servlet Ver.01</title></head>");
        out.println("<body><form method=post>");
        out.println("name:<input type=text name=\"uName\">");
        out.println("subject:<input type=text name=\"uSubject\"><br>");
        out.println("content:<textarea name=\"uContent\"rows=5 cols=40></textarea><br>");
        out.println("<input type=submit value=\"Post\"></form><hr>");
        msg = bbsMsg.printMsg();
        if (msg != null)
            out.println(msg);
        out.println("</body></html>");
        out.close();
    }

    public void doPost(
        HttpServletRequest req,
        HttpServletResponse res
    ) throws ServletException, IOException
    {
        new bbsMsg(
            req.getParameter("uName"),
            req.getParameter("uSubject"),
            req.getParameter("uContent")
        );

        doGet(req, res);
    }
}

本日の教訓

 入力したデータを保存するクラスを作ってみました。クラス変数が、なんとなく、分かったような。

Servlet日記(1999/03/07) Servlet日記の目次 Servlet日記(1999/03/21)