Создание HTML-ответа в Java-сервлете

Как создать ответ HTML в сервлете Java?

Ответ 1

Обычно вы отправляете запрос на JSP для отображения. JSP - это технология просмотра, которая предоставляет шаблон для написания простого ванильного HTML/CSS/JS внутри и обеспечивает возможность взаимодействия с базовым кодом Java/переменными с помощью taglib и EL. Вы можете контролировать поток страниц с помощью taglib, например JSTL. Вы можете установить любые данные в качестве атрибута в любой области запроса, сеанса или приложения и использовать EL (объекты ${}) в JSP для доступа/отображения их.

Пример Kickoff:

@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 это покажет

Message: Hello World

в браузере.

Это сохраняет код Java без помех HTML и значительно улучшает ремонтопригодность. Чтобы учиться и практиковать больше с сервлетами, перейдите по ссылкам ниже.

Также найдите вкладку "Частые" всех вопросов, помеченных [сервлетами], чтобы найти часто задаваемые вопросы.

Ответ 2

Вам нужно иметь метод 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