サーブレットの設定方法

(*-*)浩
リリース: 2019-05-16 17:03:02
オリジナル
9759 人が閲覧しました


Java サーブレットは、Java テクノロジに基づく Web コンポーネントです。サーバー側で実行され、サーブレット コンテナによって管理されます。動的コンテンツの生成に使用されます。 。サーブレットはプラットフォームに依存しない Java クラスであり、サーブレットを作成するということは、実際にはサーブレット仕様に従って Java クラスを作成することになります。

サーブレットの操作には実行環境、つまりサーブレット コンテナが必要ですが、ここでは Tomacat を使用します。 Tomcat は Web サーバーとして HTML ページを処理する機能を備えているほか、サーブレットや JSP コンテナーとしても機能します。

サーブレットの設定方法

#helloWord の例を実装します。

推奨コース: Java チュートリアル

方法 1: サーブレット インターフェイスを実装してサーブレット クラスを作成するには、インターフェイスで定義された 5 つのメソッドを実装する必要があります。コードは次のとおりです:

package day_052102;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/*
 这里通过实现Servlet接口来编写一个简单的Servlet
 */
public class ServletDemo implements Servlet
{
    public void init(ServletConfig config) throws ServletException
    {
    }
    public ServletConfig getServletConfig()
    {
        
        return null;
    }
    public String getServletInfo()
    {
        return null;
    }
    public void destroy()
    {
    }
    public void service(ServletRequest req, ServletResponse res)
            throws ServletException, IOException
    {
        PrintWriter out=res.getWriter();
        out.print("hello World!");
        out.close();
    }
}
ログイン後にコピー

その後、web.xml 設定に進みます。コードは次のとおりです。

<servlet>
     <servlet-name>ServletDemo</servlet-name>
     <servlet-class>day_052102.ServletDemo</servlet-class>
 </servlet>
 <servlet-mapping>
     <servlet-name>ServletDemo</servlet-name>
     <url-pattern>/ServletDemo</url-pattern>
 </servlet-mapping>
ログイン後にコピー

[実行] ボタンをクリックして tomacat サーバーを起動し、ブラウザに http://localhost:8080/day_052102/ServletDemo と入力します。ページ上に hello World を表示する例を実装します。結果は以下の通り。


方法 2: 一般的なサーブレットを定義する抽象クラス GenericServlet を継承します。

public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable
ログイン後にコピー

hellWord を実装するコード例は次のとおりです。

public class GenericServletDemo extends GenericServlet
{
    @Override
    public void service(ServletRequest req, ServletResponse res)
            throws ServletException, IOException
    {
        PrintWriter out=res.getWriter();
        out.println("hello World!");
        out.close();        
    }

}
ログイン後にコピー

方法 3: このクラスは、抽象 HttpServlet クラスを継承することにより、GenericServlet クラスを継承します。

PS: HttpServlet クラスには抽象メソッドはありません。このクラスはサービス メソッドをオーバーライドします。リクエストに応じて doGet または doGet メソッドを呼び出します。ソース コードの一部は次のとおりです:

protected void service(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException 
{
        String method = req.getMethod();
        if (method.equals(METHOD_GET))   //当请求方式为GET时,调用doGet方法
        {   
            long lastModified = getLastModified(req);
            if (lastModified == -1) 
            {
                // servlet doesn't support if-modified-since, no reason
                // to go through further expensive logic
                doGet(req, resp);
            } 
            else
            {
                long ifModifiedSince;
                try 
                {
                    ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE);
                } 
                catch (IllegalArgumentException iae)
                {
                    // Invalid date header - proceed as if none was set
                    ifModifiedSince = -1;
                }
                if (ifModifiedSince < (lastModified / 1000 * 1000))
                {
                    // If the servlet mod time is later, call doGet()
                    // Round down to the nearest second for a proper compare
                    // A ifModifiedSince of -1 will always be less
                    maybeSetLastModified(resp, lastModified);
                    doGet(req, resp);
                }
                else
                {
                    resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
                }
            }
        }
ログイン後にコピー

作成したクラスでサービス メソッドをオーバーライドすると、サーブレット コンテナは、オーバーライドしたサービス メソッドによってリクエストを処理します。

public class HttpServletDemo extends HttpServlet
{
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException
    {
        PrintWriter out=resp.getWriter();
        out.println("hello!");
        out.close();
    }
}
ログイン後にコピー


以上がサーブレットの設定方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート