Недавно я начал внедрять Java на свой сайт, но я читал, что метод:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<html>");
//code
out.println("</html>");
out.close();
}
Является устаревшим и редко используется из-за jsp. Каковы преимущества одного и другого?
Преимущество использования JSP поверх чистых сервлетов заключается в том, что удобнее писать (и изменять) обычный HTML, чем иметь много out.println
которые генерируют HTML. С JSP вы можете свободно смешать Java-код с вашим HTML-кодом (используя теги JSP, такие как <%= %>
). Ваша страница JSP в конечном счете компилируется в сервлет, сервлет запускается, и ответ отправляется обратно в браузер.
Чистый сервлет:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>")
out.println("<p>The date is: " + (new Java.util.date()).toLocaleString() +"</p>");
out.println("</body>")
out.println("</html>");
out.close();
}
JSP:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
....
<body>
<p>The date is: <%= (new Java.util.date()).toLocaleString() %></p> //mixing HTML and Java
</body>
</html>
Сервлет предназначен для управления и бизнес-логики. JSP предназначен для представления логики.
Технически вы можете написать презентацию и бизнес-логику как в jsp, так и в сервлетах. Широко распространено мнение о том, чтобы реализовать шаблон MVC в вашем webapp, поэтому вы хотите реализовать представление в JSP, использовать сервлеты в качестве контроллера и EJB для модели. Генерация html с вашим сервлетом нарушает это разделение, поэтому его обычно избегают.
Я не знаю никакой выгоды от генерации html в сервлете.