@parkito

Как вывести содержимое объекта в JavaServlets?

Здравствуйте. Помогите, пожалуйста, решить проблему.
Есть сервлет
package controllers;

import manipulating.ClientDAO;
import manipulating.TariffDAO;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "tariff", urlPatterns = {"/tariff"})
public class tariff extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String userPath = request.getServletPath();
        System.out.println(userPath);
        PrintWriter out = response.getWriter();
        TariffDAO tariffDAO = new TariffDAO();
        out.write("<html>");
        out.write("<body>");
        out.write("Arr");
        tariffDAO.getTariffList(out);
        out.write("Arr");
        out.write("</body>");
        out.write("</html>");
//        request.getRequestDispatcher("/WEB-INF/views" + userPath + ".jsp").forward(request, response);

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Post");
    }
}


в нем должен выплниться метод
tariffDAO.getTariffList(out);

public void getTariffList(PrintWriter out) {
        System.out.println("here");
        String query = "SELECT * FROM Tariff";
        List tariffList = MainDAO.getEntitiesList(new Tariff(), query);
        Tariff tariff = new Tariff();
        for (Object object : tariffList) {
            tariff = (Tariff) object;
            out.write(tariff.toString());
        }
    }


Однако ничего не происходит. При дебаге видно, что после данного метода post заканчивается.
Вне сервлета код работает. В чем может быть проблема?
  • Вопрос задан
  • 335 просмотров
Решения вопроса 2
EugeneP2
@EugeneP2
Java Dev
вообщем, правильно делать вот так

и что тут вообще происходит? Вы все еще пишете на джаве 1.4?) И что за кошмарная реализация дао?

TariffDAO tariffDAO = new TariffDAO();

...............

 tariffDAO.getTariffList(out);

............

List tariffList = MainDAO.getEntitiesList(new Tariff(), query);
        Tariff tariff = new Tariff();
        for (Object object : tariffList) {
            tariff = (Tariff) object;
            out.write(tariff.toString());
        }


Должно выглядеть как-то так

TariffDAO tariffDAO = new TariffDAO();

List<Tariff> tariffList = tariffDAO.getTariffList();

for (Tariff t : tariffList) {
   out.write(t);
}


А еще лучше, передавать в качестве атрибута в реквест, как по ссылке выше, и уже в jsp выполнять отображение.

servlet

req.setAttribute("tariffList", tariffList);

JSP

<c:forEach items="${tariffList}" var="tariff"> 
    <p>${tariff.name}</p>
    <p>${tariff.value}</p>
    ...
</c:forEach>
Ответ написан
Комментировать
@parkito Автор вопроса
Проблему решил. Дело оказалось в том, что я использовал JPA 2.0. Эта версия несовместима с многими анатациями и т.п. JPA 2.1 все исправило.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы