LoginSignup
0
0

サーブレットとJSPの違い

Posted at

サーブレットとは

サーブレットとは、Javaの処理をHTMLで出力できるものです。(厳密な理解ではない)
ブラウザ側からサーバにリクエストをすると、サーバでサーブレットクラスを実行し、その出力であるHTMLをレスポンスとしてブラウザに返します。

サーブレットクラスは、以下のように記述します。

test.java
package servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		int n = 100;
		
		//HTMLを出力
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		out.println("<!DOGTYPE html>");
		out.println("<html>");
		out.println("<meta charset=\"UTF-8\"/>");
		out.println("<title>おためし</title>");
		out.println("</head>");
		out.println("<body>");
		out.println("<p>" + "nは「"+n+"」です</p>");
		out.println("</body>");
		out.println("</html>");
	}
}

ご覧の通り、out.println()を山ほど書かなくてはなりません。面倒ですね。ただ、書き込むファイルはJavaファイルなので書き方に慣れているのは利点ですね。

JSPとは

JSPとは、サーブレットと同じくJavaの処理をHTMLで出力できるものです。(厳密な理解ではない)

JSPは以下のように記述します。

test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>  

<%
int n = 100;
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>おためし</title>
</head>
<body>
<% int n = 100; %>
<p>nは「<%= n %>」です</p>
</body>
</html>

Javaファイルのような書き方をするサーブレットと違って、JSPではHTMLの書き方がベースになっていますね。とはいえ、こちらでも<% %>で囲った中にはいつものJavaファイルの記述を書き込んでいるので、そこまで特別な書き方が求められれうわけではないのがいいです。また、サーブレットでは一行一行out.println()しなければならなかったところが、JSPではそのままで問題なくなっています。Java部分の記述に関しても<% %>で囲うだけなので、全行にout.println()を書くのに比べると大した手間ではありませんね。

サーブレットとJSPの違い

では、書き方以外でサーブレットとJSPでは何が違うのでしょうか。
それは、サーバでの動き方が一番の違いでしょう。

サーブレット

サーブレットでは、ブラウザ側からサーバにリクエストをすると、サーバでサーブレットをコンパイルし、生成されたサーブレットクラスを実行し、その出力であるHTMLをレスポンスとしてブラウザに返します。つまり、サーバには、そのままコンパイルして実行できる形でサーブレットが置かれてあります。Javaのような記述がされているのはそういうことでしょう。

JSP

JSPでは、ブラウザ側からサーバにリクエストをすると、サーバでJSPを変換し、サーブレットクラスのソースファイルを生成します。その後、サーブレットをコンパイルして生成したサーブレットクラスを実行し、その出力であるHTMLをレスポンスとしてブラウザに返します。つまり、サーバで一度JSP→サーブレット変換を挟む以外は同じ動きをしています。

まとめ

・サーブレットもJSPもJavaの処理をHTMLで出力することができる

・サーブレットはJavaの文法をベースに記述する。
・HTML部分の記述がかなり面倒
・サーバでの動きはシンプル

・JSPはHTMLの文法をベースに記述する
・Java部分の記述も簡単にできる
・サーバで一度JSP→サーブレット変換が行われる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0