Как отправить HttpServletResponse в PrintWriter, имеющий структуру HTML, в jsp - PullRequest
0 голосов
/ 05 апреля 2010

Я пытаюсь отправить таблицу в HTML-код в JSP используя

response.setContentType("text/html");  
PrintWriter out = response.getWriter();
out.println("<html>").....

затем с помощью response.sendRedirect (имя jsp) для отправки таблицы в jsp;

Но это никогда не работало со мной, и я сомневаюсь, что у издателя есть специфические манипуляции с сервлетом jsp.

Обновление : чтобы быть более понятным В одной JSP у меня есть различные параметры, которые я посылаю всем им в сервлет. Вот этот; сервлет строит таблицу со всеми теми параметрами, которые перехватываются с помощью request.getParameter. когда HTML-таблица строится с out.println так: response.setContentType ( "текст / html");
PrintWriter out = response.getWriter ();

out.println("<html>"); 
out.println("<head>"); 
out.println("<title>Imput OPC</title>");
out.println("</head>"); 
out.println("<body>"); 
    out.println("<table border=1>"); 
 .
     .
     .
out.println("</body>");
out.println("</html>");

поэтому я хотел бы отправить этот результат: HTML-таблицу для отображения в другой jsp

1 Ответ

1 голос
/ 06 апреля 2010

Так не работает. HTML-код должен быть внутри JSP, а не внутри сервлета. Повторяю: текст шаблона (HTML / CSS / JS) принадлежит JSP, а код Java принадлежит классам Java (для начала с сервлетом).

Все, что нужно сделать сервлету, - это выполнить бизнес-задачу и поместить интересующие данные в подходящую область (область запроса?) И, наконец, переслать запрос на страницу JSP, а затем использовать метки в JSP для управления потоком страниц. и использовать EL для доступа к внутренним данным.

например. следующее в doGet():

List<Person> persons = personDAO.list();
request.setAttribute("persons", persons); // This way it's accessible in JSP by ${persons}
request.getRequestDispatcher("/WEB-INF/persons.jsp").forward(request, response);

со следующим в persons.jsp:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

...

<table>
    <c:forEach items="${persons}" var="person">
        <tr>
            <td>${person.name}</td>
            <td>${person.email}</td>
            <td>${person.age}</td>
        </tr>
    </c:forEach>
</table>

c:forEach является частью JSTL . Если он недоступен в вашей среде, вы можете установить его, просто поместив jstl-1.2.jar в папку /WEB-INF/lib (при условии, что вы используете контейнер Servlet 2.5).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...