2013-06-26 2 views
0

У меня есть страница JSP, как это:Как предотвратить повторение по тем же атрибуты на JSP-странице

<?xml version="1.0" encoding="UTF-8" ?> 
<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 

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

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

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Page for find kids</title> 

</head> 

<body> 

<a href="#" id="shlink"><h3 align="center">Parameters of search</h3></a> 

<form:form action="result" method="get" modelAttribute="fbosAttribute" > 

<table id="searchForm" align="center"> 

<tr id="dateId"> 
<th>Date:</th> 
<td><form:select path="particularDate"> 
<form:option value=""> -Выберите дату-</form:option> 
<form:options items="${listOfDates}"></form:options> 
</form:select> <td><font color="#FF0000"><b><form:errors path="particularDate"/></b>  </font></td> 
</td>  
</tr> 

<tr id="nameId"> 
<th>Name:</th> 
<td><form:select path="nameOfInstitution"> 
<form:option value=""> -Выберите учреждение-</form:option> 
<form:options items="${listOfInstitutionsNames}"></form:options> 
</form:select></td> <td><font color="#FF0000"><b><form:errors path="nameOfInstitution"/></b></font></td> 
</tr> 

<tr id="typeId"> 
<th>Type:</th> 
<td> 
<form:select path="typeOfInstitution"> 
<form:option value=""> -Выберите тип-</form:option> 
<form:options items="${listOfInstitutionsTypes}"></form:options> 
</form:select> </td> <td><font color="#FF0000"><b><form:errors path="typeOfInstitution"/></b></font></td> 
</tr> 

<tr> 
<td> 
<input type="submit" value="Find" id="searchBtn" /> 
</td> 
</tr> 

</table> 

</form:form> 

<c:choose> 


<c:when test="${empty dateAttribute}"> 

<h1 align="center">Insert parameterst for search</h1> 

</c:when> 

<c:otherwise> 

<table align="center" border="1" id="resultTable"> 

<thead> 
<tr> 
<th>Name of school</th> 
<th>Type</th> 
<th>Particular date</th> 
<th>Day Scheduale</th> 
<th>Work Scheduale</th> 
<th>Rotation</th> 
<th>Number of kids</th> 
<th>Kids upper 3 years old</th> 
<th>Kids under 3 years old</th> 
<th>Kids go to school date </th> 
<th>Kids admitted date</th> 
</tr> 
</thead>  

<c:forEach items="${institutionAttribute}" var="institutionVar"> 
    <c:forEach items="${dateAttribute}" var="creationDateVar"> 
     <c:forEach items="${srcAttribute}" var="schRotChildVar">  


<tr> 
<td align="center">${institutionVar.nameOfInstitution}</td> 
<td align="center">${institutionVar.typeName}</td> 
<td align="center">${creationDateVar.particularDate} </td> 
<td align="center">${schRotChildVar.dayScheduale}</td> 
<td align="center">${schRotChildVar.workScheduale}</td> 
<td align="center">${schRotChildVar.rotation}</td> 
<td align="center">${schRotChildVar.numberOfChild}</td> 
<td align="center">${schRotChildVar.childUnder3YearsOld}</td> 
<td align="center">${schRotChildVar.childUpper3YearsOld}</td> 
<td align="center"><fmt:formatDate value="${creationDateVar.childGoSchoolDate}" pattern="dd-MM-yyyy" /> </td> 
<td align="center"><fmt:formatDate value="${creationDateVar.childAdmissionDate}" pattern="dd-MM-yyyy" /></td> 
</tr> 


</c:forEach> 
    </c:forEach> 
     </c:forEach> 


</table> 

</c:otherwise> 

</c:choose> 

</body> 

</html> 

Так что, когда я извлечения данных не из этого JSP, но из моего основного метода() она отлично работает. Что означает, что моя реализация - класс dao работает стабильно. Но когда я использую этот jsp, он извлекает подобные данные более чем в 10 раз. Я думаю об этом теге <c:forEach>, здесь должна быть проблема. Пожалуйста, помогите мне решить эту проблему. Что вы предлагаете, может быть, мне не нужен тег <c:forEach>, возможно, что-то другое.

ответ

0

Если вы пишете слишком много контента, используя c: forEach, это потребует времени. Из вашего примера я нашел сложность n куб. В основном на стороне сервера создается html, и он отображается на стороне клиента после отправки сервера. Например, если вы пишете 1000 строк на странице, тогда в буфере создается огромная страница html. Если размер буфера большой, требуется время для его очистки.

Наиболее важным моментом является то, что зависит от времени отклика на сколько данных вы пишете

Таким образом, для повышения производительности вы можете сделать следующее

  • Try, чтобы избежать ˝n˝ куб ​​ сложности. Сделайте что-нибудь в DAO, чтобы на странице jsp вы могли написать на заказ n сложность.
  • Не обрабатывайте данные за один раз. Вместо этого сделайте частичные данные и используйте разбиение на страницы, чтобы получить больше.
+0

Благодарим вас за ответ. Ваш ответ, без сомнения, действительно профессионален, и его трудно даже понять. Что такое «n куб»? Мой dao работает нормально, он возвращает все, что мне нужно, чтобы я мог вернуться в консоль, но теперь мне нужно поместить все эти данные в свою таблицу, чтобы они выглядели как таблица, более точная для пользователя. Мне нужно перебирать их, если У меня есть более одного объекта для возврата в качестве атрибута модели из dao. Одно решение, которое я нашел, перебирает их в jsp, но вот проблема, из-за которой я даже не могу правильно перебрать атрибут из dao. В любом случае, спасибо. –

+0

Вы используете 3 вложенных цикла. Для краткости я предполагаю, что каждый цикл работает с n элементами. Тогда будет происходить n * n * n. Это сложность времени вызова n cube. Сколько данных вы получаете DAO? Если jsp должен отображать много данных, тогда лучше использовать разбиение на страницы. Вот простой пример разбивки на страницы с помощью jsp: http://theopentutorials.com/examples/java-ee/jsp/pagination-in-servlet-and-jsp/ –

+0

MAK Ripon благодарит вас за ваш ответ. Мой максимум dao получит 40 строк, и каждая строка имеет 9 столбцов. Это максимум. Я посмотрю в этом примере pegination, это выглядит как способ решения проблемы. –