1

私は一連のコード例を通じてサーブレット3.0を学習していますが、多くのメソッドの目的は私には意味がありません。サービス方法を除く。

出力は「HellofromMyServlet」です。しかし、他のすべての方法とは何ですか?

@WebServlet(name = "MyServlet", urlPatterns = { "/my" })
public class MyServlet implements Servlet {

    What is the line below trying to do? 
private transient ServletConfig servletConfig;

@Override
public void init(ServletConfig servletConfig) throws ServletException {
    this.servletConfig = servletConfig;
}

@Override
public ServletConfig getServletConfig() {
    return servletConfig;
}

@Override
public String getServletInfo() {
    return "My Servlet";
}


     //This is the only method that makes sense to me. All the others, I have no 
        idea why they are in here.
@Override
public void service(ServletRequest request, ServletResponse response)
        throws ServletException, IOException {
    String servletName = servletConfig.getServletName();
    response.setContentType("text/html");
    PrintWriter writer = response.getWriter();
    writer.print("<html><head></head>" + "<body>Hello from " + servletName
            + "</body></html>");
}

@Override
public void destroy() {
}

}

4

1 に答える 1

3

読んだチュートリアル/例はわかりませんが、インターフェイスを実装するのではなく、HttpServlet抽象クラスを拡張する必要があります。あなたは確かにそれらのどれも直接必要としません。は、必要なすべての定型文をすでに実装しています。ServletHttpServlet

結局のところ、これはあなたが最低限必要とするものです:

@WebServlet("/my")
public class MyServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String servletName = getServletConfig().getServletName();
        response.setContentType("text/html");
        response.getWriter().print("<html><head></head>" 
            + "<body>Hello from " + servletName + "</body></html>");
    }

}

(これは単なる学習演習であることを理解していますが、この方法でサーブレットでHTMLを発行することはお勧めできません。そのため、JSPを使用する必要があります)

それらすべてが何をしたかについては、init()サーブレットの構築中にサーブレット構成に基づいて初期化を実行する可能性があります。はdestroy()、サーブレットの破棄中にクリーンアップを実行する可能性を提供します。プロパティとそれらのgetterメソッドは、Servletインターフェースのコントラクトを満たすために必要です。これらはいずれもサーブレット3.0に明示的に固有のものではないことに注意してください。それらはすでに古いバージョンに存在していました。

参照:

于 2012-09-21T01:57:23.373 に答える