web-dev-qa-db-ja.com

JavaサーブレットでHTML応答を生成する

JavaサーブレットでHTML応答を生成するにはどうすればよいですか?

48
ogechi nwogu

通常、表示のためにリクエストをJSPに転送します。 JSPは、プレーンなVanilla HTML/CSS/JSを記述するテンプレートを提供し、バックエンドJava taglibsおよびELの助けを借りてコード/変数と対話する機能を提供するビューテクノロジーです。 [〜#〜] jstl [〜#〜] のようなtaglibを使用したページフロー。リクエスト、セッション、またはアプリケーションスコープのいずれかでバックエンドデータを属性として設定し、EL(${}もの)をJSPでアクセス/表示します。

キックオフの例:

@WebServlet("/hello")
public class HelloWorldServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String message = "Hello World";
        request.setAttribute("message", message); // This will be available as ${message}
        request.getRequestDispatcher("/WEB-INF/hello.jsp").forward(request, response);
    }

}

そして/WEB-INF/hello.jsp のように見える:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>SO question 2370960</title>
    </head>
    <body>
         <p>Message: ${message}</p>
    </body>
</html>

http:// localhost:8080/contextpath/hello を開くと、これが表示されます

メッセージ:Hello World

ブラウザで。

これにより、JavaコードがHTMLの乱雑さから解放され、メンテナンス性が大幅に向上します。

[servlets]とタグ付けされたすべての質問の[Frequent]タブ を参照して、よくある質問を見つけます。

102
BalusC

次のようなdoGetメソッドが必要です。

public void doGet(HttpServletRequest request,
        HttpServletResponse response)
throws IOException, ServletException
{
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    out.println("<html>");
    out.println("<head>");
    out.println("<title>Hola</title>");
    out.println("</head>");
    out.println("<body bgcolor=\"white\">");
    out.println("</body>");
    out.println("</html>");
}

this シンプルなhello worldサーブレットのリンクを見ることができます

34
codaddict