Commentsjavaを使って掲示板作成どうも。新人エンジニアのhondaです。servletを使って掲示板を作成する課題に取り組んだので投稿します。*以下の内容はサーバサイドjavaのプログラムがどう動いているかを、全体的な視点で見たものを記述しています。理解があやふやなところはできるだけ調べて書いていますが、間違っている記述もあるかもしれません。参考程度に読んでいただければ幸いです。間違いなど、よろしればご指摘ください。servletというjavaの機能を使ってwebアプリを作りました。javaのプログラムは1ヶ月ほど学んできましたが、webはいろいろと分からないことが多く苦労したのでその辺を書いていこうと思います。servletとはjavaでwebサービスを作るための、javaで書かれたプログラムで、webに必要なhttp通信等の機能を実装したクラス(?)の集合(パッケージ?)であると理解しています。普通のjavaのプログラムにimportして使います。インポートするべきservlet-apiはjdkには入って無いのでダウンロードする必要があります。tomcatというservletを動かすserverをインストールすればその中にservlet-api.jarというファイルがあるのでここにクラスパスを通します(環境変数の設定)。importしたjavaをコンパイルできます。使ってクライアントと情報のやり取りをすることができるようになります。こんな感じで、servletを使える環境をつくりました。tomcatのファイル配置その後、理解に苦しんだのがtomcatにファイルをどう配置すればいいのかという点です。調べまわった結果、以下のようにファイルを配置すればいいことが分かりました。tomcat内のwebapps下にプロジェクトのディレクトリを配置します。みたいな感じ)続いて、bulletinBoardの中にWEB-INFというディレクトリを作ります。(bulletinBoard/WEB-INF)そして、このWEB-INFの中にservletプログラムを配置します。最後に、WEB-INF下にweb.xmlというファイルを作ります。ここにはservletにアクセスするためのurl等が記録されています。基本的にはこの構成でサーブレットを動かします。servletを継承したjavaクラスファイルをWEB-INF下に置き、web.xmlに記述したurlでブラウザからアクセスします。いうURLとLoginServlet.javaというservletファイルの関連を記述しておけば、webからはlocalhost:8080/bulletinBoard/loginといったURLでservletファイルにアクセスできます。WEB-INF下のファイルにはブラウザからは直接アクセスできないので、web.xmlに記載のurlにアクセスしてもらって、そのURLとweb.xmlを元にサーバーはservletを探し出して、クライアントにサービスを提供します。モデル(コントローラーから指示を受けて情報を処理。(コントローラーから受け取った情報をhtmlとして表示)という役割分担でクラス設計をします。jspとはhtmlにjavaのコードを埋め込むようにして使えるようにしたプログラムのことです。htmlにjavaコードが入っているので、servletからもらったDBの情報などをjavaからテキストとして出力し、ブラウザはそのテキストを読み込みます。いうことなので、テキスト出力はHTMLの文法にのっとって書きます。(実際はjspもservletを継承したクラスで、servletがout.println()とかやってテキスト(HTML)を出力するのを、うまいこと書きやすいように変換してるプログラム?みたいです。いう感じになっているのだと思います。モデルとしてビジネスロジックを担当します(とwikipediaには書いてあります)。setterを持った普通のjavaクラスです。ビューに渡して表示をします。Beans自体は情報だけ保持して処理を持たないので、DB接続等の処理は普通のjavaクラスに持たせます。servletはクライアントからのリクエストを受け付けて、内容によって処理を分岐させてモデルに処理を指示して、処理した情報を受け取ります。その後、表示すべきjspを選択しクライアントに表示します。クライアントがjsp(HTMl)を参照して再びリクエストを送ってくるとサーブレットがこれに対応します。(というわけなので、基本的にjspファイル(ビュー)もサーブレット経由で表示するので、ブラウザから直接は見えないWEB-INF下に配置します。いちおうWEB-INF外に置いてブラウザから直接アクセスしてもらうこともできます。気をつける点として、WEB-INF下にCSSやJSファイルを置くと、ブラウザから参照できないのでフロントに反映されません。これは、jspファイルにアクセスするとjavaプログラムの出力としてHTMLが表示され、ブラウザはこれを読み込んだ後にHTMLに記載のlinkをたどってcss,JSを読みに行こうとするからです。servletの指示で読み込みに行っているわけではないので、WEB-INF下は参照できない、と理解しています。以上の感じでサーバサイドjavaを理解しつつ、掲示板を作成しました。15.1IDEはeclipseで作成しました。成果物は会員制の掲示板で以下の機能があります。画像のアップロードできる会員別に投稿情報を管理し、自分の投稿のみを削除できる大雑把にはこんな感じです。いちおうクラス図だけアップしておきます。掲示板作成後に知ったのですが、DB接続はそれぞれの処理(SELECT、UPDATE、INSERT、DELETEなど)ごとに分けるべきらしいです。各サーブレットごとにセッションクラス(?)を用意して、処理を記述する方法もあるらしいです。課題を終えてひとつのwebアプリケーションを作ってみることで、全体像が理解できて大変勉強になりました。webアプリひとつ作るだけで、HTML,CSS,Javascript,サーバサイド言語の4つのスキルを身につけなければならず、求められるものが多いなと感じました。webの技術はブラックボックスが多いなと感じました。httpリクエストを送るときにはどんなプログラムが動いているのかなどを考えなくても、getとpostで送信するんだと理解しておけばコードは書けます。その裏側まで理解した上でプログラムを作っていくことが重要だと思いました。それが本質を理解してコードを書くということだと思います。webの技術の奥の深さが分かった課題でした。