JavaサーブレットでHTML応答を生成するにはどうすればよいですか?
通常、表示のためにリクエストを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]タブ を参照して、よくある質問を見つけます。
次のような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サーブレットのリンクを見ることができます