おはようございます!!
記事の投稿が1日遅れですが、昨日やったことの投稿です!!
ちょっとバタバタしていて昨日は投稿する余裕がありませんでした、、
今回は「サーブレット」についてです!!
いつものように、菅原先生の動画を見て勉強です!!
【サーブレットとは】
★サーバ側で動くJavaプログラム
【サーブレットの手順】
①4つのパッケージをインポートする必要がある
import java.io.*;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
※僕はTomcat10なので、「jakarta」ですが、9以前のバージョンでは、「javax」になるようです。
②classを定義
classにサーブレットの機能を持たせるには、
HttpServletクラス
を継承する。
↓
webブラウザからのリクエストを受け取れる機能を持つ
★リクエストは、webブラウザのアドレスバーにアドレスが入力されて実行される
★どういうアドレスが打ち込まれたら実行するのか
→ アドレスと、動くサーブレットの対応付けを「アノテーション」で指定する
【アノテーション】
注釈(annotation)のこと。
@から始まる記述で、プログラムに補足情報を加えることができる。
【@WebServlet()】
サーブレットを呼び出すURLパス(マッピング名)を指定するアノテーション
③アノテーションでマッピング名を指定(マッピングとクラスをマッピングさせる)
④doGet() / doPost()をオーバーライド
定義したクラスに行わせたいことをメソッドとして記述する。
これまでのコマンドプロンプト上で動く、プログラムでは、メインメソッドという
名前だったが、サーブレットでは「HttpServlet」で用意されている
「doGet()」もしくは「doPost()」を使う
【doGet()とdoPost()の使い分け】
★doGet()
→ URL直打ち、リンクをクリックされた時、フォームタグでmethod特性に「method=”get”」を
指定された時
★doPost()
→ method=”post”を指定された時
【サーブレットでやること】
サーブレットでやることは大体決まっているとのこと
④-1 出力のコンテンツタイプを指定
res.setContentType(“text/html;charset=utf-8”);
→ テキスト方式 / HTML / 文字コードはutf-8 で出力
⇓
この記述はお決まりの記述とのことです。
⇓
出力の設定をしたら、出力するためのオブジェクトを取得する。
④-2 PrintWriterを取得する
★PrintWriter getWriter()
webブラウザに文字列データを送信するためのPrintWriterオブジェクトを取得する
④-3 PrintWriterで出力
【コード例】
import java.io.*;
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
@webServlet(“/first”)
public class FirstServlet extends HttpServlet{
public void doGet(HttpServletRequest,HttpServletResponse)throws~{
res.setContentType(“text/html:charset=utf-8”);
PrintWriter out = res.getWriter();
out.println(“<html>”);
・
・
・
out.println(“</html>”);
}
}
⇓
http://localhost:8080/javaweb/firstで実行
※javaweb = コンテキストルート名
※first = マッピング名

ここまでは順調だったのです、、、
しかし問題はここからです。。。(問題というより僕の混乱タイムです)
最終的には僕の考えすぎとか、勝手な思い込みで混乱していたのですが、
菅原先生のこの動画では、サーブレットの仕組みを理解しやすいように、サクラエディタでコーディングして、コンパイル、作ったファイルを手動で保存するという手法で実行されていたのですが、Eclipseでやろうとしていた僕はめちゃくちゃここで混乱しちゃいました、、、
(そもそもEclipseの機能や使い方も理解できていなかったです、、、)
そこからの迷走時間、、、
菅原先生の「Eclipseでアプリを実行する」という動画でEclipseでの実行方法が分かったものの、菅原先生が提供してくださった
HTML
Servlet
Bean
JSP
のサンプルコードの意味が分からず、パソコンとにらめっこ、、、
しかも、HTMLとJSPの中身がこんがらがって実行しても文字化けするわ、フォームに入力できないわで、、、
(菅原先生のコードをコピペする際に張り付ける場所を間違えていただけでした)
結局、僕が見た動画はあくまでも「Eclipseでの実行方法」であって、これらのコードについての説明は別の動画っぽいことが分かったので、一旦忘れることにしました。
でもでも、とりあえず、ちゃんとEclipseにて実行できたのでこれでよしとしましょう!!
この後、「サーブレットでフォームの入力データを使う方法」という動画で学ぶことによって、上記で混乱していた中の「サーブレット」のコードはめっちゃ理解できました!!
これも記事に書いていこうと思ったのですが、とりあえずノートの写メだけここに載せておきます。







引き続き楽しんでいこう!!!