Jsp&Servelet学習記(1)
著者:Eve Cole
更新時間:2009-07-02 17:15:10
1.1 サーブレットプログラムを書く
1.2 Jspプログラムを書く
1.3 サーブレットプログラムをコンパイルする
1.4 サーブレットと Jsps プログラムのパッケージ化
1.5 デプロイメント記述子の構築
1.1 サーブレットプログラムを書く
問題 サーブレットを Web アプリケーションとして作成したい 解決策 javax.servlet.http.HttpServlet を継承する Java クラスを作成します。まず、クラス パッケージ servlet.jar を注入する必要があります。このサーブレット プログラムをコンパイルするには、内部のクラス ライブラリが必要です。
説明 サーブレット プログラムは、ネットワークを通じてクライアントによって要求された動的コンテンツに応答するために使用される Java クラスです。 (CGI) プログラムに精通している場合は、Java テクノロジ サーブレットで CGI プログラムを完全に置き換えることができます。ランタイム環境で実行されるサーブレット プログラムは、Web コンポーネントと呼ばれることが多く、Tomcat や Bea WebLogic などのサーブレット コンテナによって提供されます。
注: Web コンテナは次のことができます。
サーブレットは、Web アプリケーションの一部として Web コンテナにインストールされます。このアプリケーションには WEB リソースが含まれます。 HTML ページ、画像、マルチメディア クリップ、サーブレット、JSP、XML 構成ファイル、Java ランタイム クラス、クラス ライブラリと同様に、Web アプリケーションが Web コンテナにデプロイされると、コンテナは Java サーブレット クラスのインスタンスを生成して JVM にロードします。 . サーブレットのリクエストを処理します。
すべてのサーブレットは javax.servlet.Servlet インターフェースを継承します。 Web アプリケーションを開発するプログラマーは特別なサーブレットを作成します
javax.servlet.http.HttpServlet から継承された抽象クラスは、Servlet インターフェースを実装し、HTTP リクエストを処理するために特別に設計されています。
Web コンテナがサーブレット インスタンスを生成するときの基本的なシーケンスは次のとおりです。
1. サーブレット コンテナは最初にサーブレットの init() メソッドを呼び出します。これにより、サーブレットが使用するリソースが初期化されます。ロガーとしてリストされています。この init() メソッドは、サーブレットのライフサイクル全体で 1 回だけ呼び出されます。
2. init() メソッドは、java.servlet.ServletConfig インターフェースを継承するオブジェクトを初期化します。このオブジェクトにより、サーブレットはデプロイメント記述子で宣言されたパラメータを初期化できるようになります。また、ServletConfig は、サーブレットに javax.servlet.ServletContext オブジェクトへのアクセスを提供します。サーブレットはこれを使用して、情報をログに記録したり、他の Web コンポーネントにリクエストをディスパッチしたり、同じアプリケーション内の他の Web リソースを使用したりできます。
3. サーブレット コンテナは、このサーブレットの service() メソッドを呼び出して、サーブレットの一部のリクエストに応答します。 HttpServlet に基づいて、service() はサーブレットの doGet() メソッドまたは doPost() メソッドを呼び出すことによって、適切な HTTP メソッドを自動的に呼び出してリクエストを処理します。いくつかの例では、ユーザーが Post リクエストを送信し、サーブレットが doPost() メソッドを実行してリクエストに応答します。
4. 2 つのメイン HttpServlet の doPost() メソッドと doGet() メソッドを呼び出すと、サーブレット コンテナは javax..servlet.http.HttpServletRequest オブジェクトと HttpServletResponse オブジェクトを生成し、これらのオブジェクトをパラメータとしてこれらのリクエスト処理メソッドに渡します。
http://www.downcodes.com/
5. サーブレットのライフサイクルを管理するか、要求リクエストにおけるこのサーブレット インスタンスの処理時間と Java 仮想マシン上の存在時間を決定します。サーブレット コンテナがサーブレットの削除を開始すると、サーブレットの destroy() メソッドが呼び出され、データベース接続などのすべてのリソースを解放できます。
例 典型的な HttpServlet
パッケージcom.mydev;
インポート java.io.IOException; インポート java.io.PrintWriter;
インポート java.util.Enumeration; インポート javax.servlet.ServletException;
インポート javax.servlet.http.HttpServlet;
インポート javax.servlet.http.HttpServletRequest;
インポート javax.servlet.http.HttpServletResponse;
//HttpServlet インターフェースを継承する必要がある
public class FirstServlet extends HttpServlet ...{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException ...{
// 応答の MIME タイプ「text/html」を設定します
response.setContentType("テキスト/html");
//PrintWriter を使用して、テキスト データをリクエストしたクライアントに送信します。
//サーブレット
java.io.PrintWriter out = response.getWriter();
//HTML コンテンツの組み立てを開始 out.println("<html><head>");
out.println("<title>ヘルプ ページ</title></head><body>");
out.println("<h2>情報を送信してください</h2>");
//サーブレット サービス メソッドが機能するように、method="post" であることを確認してください。
// このフォームへの応答で doPost を呼び出します
out.println( "<form method="post" action ="" + request.getContextPath( ) + "/firstservlet" >");
out.println("<table border="0"><tr><td valign="top">");
out.println("あなたの名前: </td> <td valign="top">");
out.println("<input type="text" name="firstname" size="20">");
out.println("</td></tr><tr><td valign="top">");
out.println("あなたの姓: </td> <td valign="top">");
out.println("<input type="text" name="lastname" size="20">");
out.println("</td></tr><tr><td valign="top">");
out.println("あなたのメールアドレス: </td> <td valign="top">");
out.println("<input type="text" name="email" size="20">");
out.println("</td></tr><tr><td valign="top">");
out.println("<input type="submit" value="情報の送信"></td></tr>");
out.println("</table></form>"); out.println("</body></html>");
}
//doGet
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException ...{
//パラメータの名前と値を表示します
列挙体 paramNames = request.getParameterNames( );
文字列parName;
//これはパラメータの名前を保持します
ブール値の emptyEnum = false;
if (! paramNames.hasMoreElements( ))
空の列挙値 = true;
// 応答の MIME タイプ「text/html」を設定します
response.setContentType("テキスト/html");
//PrintWriterを使用してテキストデータをクライアントに送信します
java.io.PrintWriter out = response.getWriter();
// HTML コンテンツの組み立てを開始します
out.println("<html><head>");
out.println("<title>送信されたパラメータ</title></head><body>");
if (emptyEnum) ...{
out.println( "<h2>申し訳ありませんが、リクエストにはパラメータが含まれていません</h2>");
} それ以外 ...{
out.println( "<h2>送信されたパラメータ値は次のとおりです</h2>");
}
while(paramNames.hasMoreElements( )) ...{
parName = (文字列) paramNames.nextElement( );
out.println( "<strong>" + parName + "</strong> : " + request.getParameter(parName));
out.println("<br />");
}//その間
out.println("</body></html>");
}
//doPost
}
doGet() と doPost() がそれぞれ ServletException と IOException をスローすることがわかります。これは、response.getWriter() が IO 例外をスローするためです。
http://blog.csdn.net/bruceleey/archive/2007/02/07/1503843.aspx