С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/33: Рейтинг темы: голосов - 33, средняя оценка - 4.82
avaj

Как обработать запрос из html в сервлете и вернуть ответ?

30.10.2008, 14:41. Показов 6680. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
при подключении к базе выдается куча результатов.
необходимо, чтобы информация выдавалась частями, т.е. делилась на несколько страниц, а в низу появлялись ссылки на следующие листы (сформулировал как смог).
Помогите плз, у меня уже мозги кипят.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.10.2008, 14:41
Ответы с готовыми решениями:

Как обработать событие 'Нажатие апплетовской кнопки' в сервлете ?
Пиплы подскажите не могу найти в доках. Как обработать событие 'Нажатие апплетовской кнопки' в сервлете ? Чтобы было больше понятно...

Json - как сформировать в сервлете и отправить на запрос аякса ?
Здравствуйте хочу сформировать json обьект в сервлете примерно такой : { "Вопрос 1": { "AContent": "Ответ...

Обработать SOAP запрос и вернуть ответ. В виде службы Windows
Здравствуйте. Передо мной возникла проблема - нужно написать службу Windows в которую с помощью SOAP-запроса будет передаваться 3 числа,...

39
0 / 0 / 0
Регистрация: 29.07.2008
Сообщений: 9
30.10.2008, 17:24
Попробуйте при формировании RecordSet использовать метод Limit :
select * from db limit x ,где х-кол-во записей. Или можна select * from db limit x,y , где х- с какой записи и y- сколько. Попробуйте, должно получиться.
0
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
30.10.2008, 19:15
пожалуй, можно попробовать так:

выбирай из базы все, что нужно за раз, чтобы не гонять коннекшны туда-сюда. ложи это все в JavaBean в сессию. а далее идешь сюда и читаешь примеры и доки:

http://jsptags.com/tags/navigation/pager/pager-taglib-1.1.html



ЗЫ: О горе вам, если вы еще не пользуетесь таглибами! (а если еще и скриптлеты, ну и слово, однако, используете в JSP, то не так что-то с вами). (шутка

Если кажется, что все это слишком сложно, то:

1. Переделать дизайн своего веб-приложения, потому что это - стандартный шаблон MVC архитектуры.
2. Если ничего подходящего в пунктах нет, то смотри пункт 1.

ЗЗЫ: конечно, если это махонький проектик для опробирования чего, то можно и проще все сделать, но коряво это будет и неуправляемо в дальнейшем.

ЗЗЫЫ: Просьба меня не ругать, у меня просто хорошее настроение, чего и всем вам желаю )
0
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
30.10.2008, 19:16
Блин, а почему на этом форуме очень часто ResultSet называют RecordSet'ом? ASP'ишники видать?
0
mishgun
31.10.2008, 04:38
Вот тебе работающий код. с java.sun.com скачай необходимые пакеты

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<%@ page import='java.sql.*' %>
<%@ page import='javax.sql.*' %>
<%@ page import='sun.jdbc.rowset.*' %>-скачать
<%@ page import='java.util.*;' %>-скачать
 
<jsp:useBean id='cachedRS' class='sun.jdbc.rowset.CachedRowSet' scope='session'>
 
    <% 
        Class.forName('sun.jdbc.odbc.JdbcOdbcDriver');
    %>
 
    <jsp:setProperty name='cachedRS' property='url' value='jdbc:odbc:Employee' />
    <jsp:setProperty name='cachedRS' property='username' value='' />
    <jsp:setProperty name='cachedRS' property='password' value='' />
    <jsp:setProperty name='cachedRS' property='command' value='SELECT * FROM EMPLOYEE' />
 
    <%  
        cachedRS.execute(); 
    %>
</jsp:useBean>
 
<%
int pageSize = 5;
int noRecords = cachedRS.size();
int noPages = noRecords/pageSize;
 
if ((noRecords%pageSize)!=0)
    noPages+=1;
 
int currPage=1;
Enumeration formElements = request.getParameterNames();
 
if (formElements.hasMoreElements())
{
    if (request.getParameter('page').length()!=0)
    currPage = Integer.parseInt(request.getParameter('page'));
}
        cachedRS.absolute((currPage*pageSize)-pageSize+1);
 
int firstRecordOnPage = cachedRS.getRow();
int lastRecordOnPage = cachedRS.getRow()+pageSize-1;
%>
 
<html>
<body>
<center>
<h2>Paged Search Results</h2>
 
 
Page <%=currPage %> of <%=noPages %>.
 
 
<%=firstRecordOnPage %> to <%=lastRecordOnPage %> of <%=noRecords%> records displayed.
 
 
<table border='2'>
<tr>
    <td>First Name</td>
    <td>Surname</td>
</tr>
<% 
     for (int i=0; (i < pageSize) && !cachedRS.isAfterLast(); i++) 
    {
%>
<tr>
    <td><%= cachedRS.getString('FirstName') %></td>
    <td><%= cachedRS.getString('Surname') %> </td>
</tr>
<% 
        cachedRS.next();
    } 
%>
</table>
</p>
 
<%
if (currPage!=1)
{
%>
    <a href='<%= HttpUtils.getRequestURL(request) %>?page=<%=currPage-1%>'><< Previous</a>
<%
}
for (int i=0;i<noPages;i++)
{
%>
    <a href='<%= HttpUtils.getRequestURL(request) %>?page=<%=i+1%>'><%=i+1%></a>
<%
}
%>
<%
if (currPage!=noPages)
{
%>
    <a href='<%= HttpUtils.getRequestURL(request) %>?page=<%=currPage+1%>'>Next >></a>
<%
}
%>
</center>
</body>
</html>
mishgun
31.10.2008, 04:52
от блин javax.sql надо скчать тебе а я блин как всегда нахаодясь в состоянии полного изюмления на писал java.util )))
Lanka
04.08.2009, 14:06
Mishgun, помоги плиз! Ты привел пример замечательного работающего кода. Но у меня один вопрос: в какое место этого кода надо вставить исключение catch для того случая, когда в SELECTе условие WHERE не выполнилось и Apache кидает ошибку sql.oracle.error.
Заранее благодарю.
mishgun
05.08.2009, 05:53
Это ты так гипотетицки спросила или у тебя такая ошибка выскакивает?
Вообще то если ты заметила то коннект к базе происходит в Бине который есть - sun.jdbc.rowset.CachedRowSet....
И скорей всего там try catch уже есть
попробуй тут
Java
1
2
3
4
5
6
<% 
try{
cachedRS.execute(); 
}
catch(Exception e){}    
%>
Вопрос - код работает или постоянно кидает этот exxception?
Lanka
06.08.2009, 10:03
mishgun,спасибо за код. Он действительно работает.Просто у меня на работе встала задача, чтобы очень большую таблицу разбить на страницы.На одной странице я ввожу параметры для запроса, а в другую подключаю этот код, где ловлю параметры и вставляю их в условие where в select. В том случае, когда данные найдены - всё работает отлично. Но ,когда по условиям запроса ничего не найдено, лезет томкатовская ошибка: что-то типа массив пустой, вектор не заполняется и т.д.Вот мне и надо ее перехватить, чтобы пользователю не лезла. Но я вроде уже придумала как это обойти: в условие if ((noRecords%pageSize)!=0) я напишу else (и отошлю на сообщение, что данных нет).
А тебе еще раз огромное спасибо, ты меня ОЧЕНЬ выручил!!!-)))
Lanka
09.08.2009, 16:12
...хотя, знаешь, рано я радовалась. Два дня бьюсь над следующей проблемой:
когда я пишу на этой же странице
XML
1
<jsp:setProperty name='cachedRS' property='command' value='SELECT * FROM EMPLOYEE WHERE FirstName='Петя'' />
всё работает просто великолепно!

Но, когда в FirstName я пытаюсь всунуть переменную=request.GetParameter(и беру значение параметра с предыдущей страницы, переданный в форме методом Post), Apache вываливается на InternalServerError500 и я , вобщем-то догадываюсь почему:в сценарии уже идёт запрос к какой-то форме

Java
1
2
3
4
5
6
7
8
9
10
<% 
// ...
Enumeration formElements = request.getParameterNames();
if (formElements.hasMoreElements())
{
if (request.getParameter('page').length()!=0)   
 currPage = Integer.parseInt(request.getParameter('page'));
}    
// ...
%>
Сижу у разбитого корыта...может подскажешь что тут делать - не знаю с какой стороны подойти к этой проблеме.
Заранее спасибо.
mishgun
10.08.2009, 05:41
сначала давай проверим если ты получаешь чего нибудь из request.
отпринтуй это в html - out.println(request.getParameter(paramet ername);
второе
покажи как ты сетаешь проперти бина
если так то это не совсем верно
XML
1
<jsp:setProperty name='cachedRS' property='command' value='SELECT * FROM EMPLOYEE WHERE FirstName='request.getParameter(whatever)'/>
попробуй так
Java
1
2
String fname=request.getParameter(whatever);
<jsp:setProperty name='cachedRS' property='command' value='SELECT * FROM EMPLOYEE WHERE FirstName='<%=fname%>' />
Lanka
10.08.2009, 10:16
Mishgun, спасибо что ответил. Ситуация у меня такая :
я естесственно пишу
Java
1
2
3
String fname=request.getParameter('whatever');
out.printline('whatever'+whatever);
<jsp:setProperty name='cachedRS' property='command' value='SELECT * FROM EMPLOYEE WHERE FirstName='<%=fname%>' />
и, пока закомментированы строки в приведенном тобой коде

Java
1
2
3
4
5
<%--Enumeration formElements = request.getParameterNames();
if (formElements.hasMoreElements())
{
if (request.getParameter('page').length()!=0)   
currPage = Integer.parseInt(request.getParameter('page'));}    cachedRS.absolute((currPage*pageSize)-pageSize+1); --%>
получаемый параметр виден. Но, когда я снимаю комментарий, вылетает ошибка сервера, наверное ввиду того что как раз в этих строках идет обращение к форме, зашитой в самом бине. Получается , что на одной странице надо получить параметры из двух разных форм...опыта маловато, чтобы самой в этом разобраться.
0 / 0 / 0
Регистрация: 10.08.2009
Сообщений: 9
10.08.2009, 12:27
По теме
Может подскажите и мне? (Только начал разбираться)
Воспользовался примером и подставил свои параметры
СУБД Oracle.
XML
1
2
3
4
        <jsp:setProperty name='cachedRS' property='url' value='jdbc:odbc:DIMEX' />
    <jsp:setProperty name='cachedRS' property='username' value='NICK' />    
    <jsp:setProperty name='cachedRS' property='password' value='111' />
    <jsp:setProperty name='cachedRS' property='command' value='SELECT * FROM TEST' />
Нет выборки данных.
В чем моя ошибка?
0
mishgun
11.08.2009, 05:30
to Lanka
а ошибки никакие не принтуются?
или просто выпадаетдефолт еррор страница без указания ошибок?
Если нет то попробуй отследить в какой строчке ошибка
то есть после каждой напиши out.println('line1 ') out.println('line2 ') и тд. когда увидим где ошибка тогда будем думать чего нам с ней делать
и ещё попробуй проверить или мы получаем что нибудь отсюда
request.getParameterNames();
напиши else и отпринтуй туда чего нибудь....

to Nick2000

Почему ты используешь мост вместо оракловского драйвера?
И даже если используешь мост то твоя база должна быть зарегистрирована с odbc я так думаю что ты этого не сделали всё таки лучше использовать родной оракловский драйвер чем мост
XML
1
<jsp:setProperty name='cachedRS' property='url' value='jdbc:odbc:DIMEX' />
mishgun
11.08.2009, 07:52
Как пела одна грузинка(не помню имени)
Снегопад снегопад ...
если женщина проооосит)))
Lanka
лови код - работает - отвечаю)))
Пришлось переносить код в резину(так как JRun убил у себя на компе) сетать Classpath и прочее но чего не сделаешь для девушки....
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<jsp:useBean id='cachedRS' class='sun.jdbc.rowset.CachedRowSet' scope='session'>
 
    <% 
        Class.forName('sun.jdbc.odbc.JdbcOdbcDriver');
        String lname= request.getParameter('lname');
        out.println('LName is ' + lname);
        
    %>
 
<jsp:setProperty name='cachedRS' property='url' value='jdbc:odbc:Employee' />
<jsp:setProperty name='cachedRS' property='username' value='' />
<jsp:setProperty name='cachedRS' property='password' value='' />
<jsp:setProperty name='cachedRS' property='command' value='SELECT * FROM EMPLOYEE WHERE Surname=><%lname%>'/>
 
    <%  
        cachedRS.execute(); 
    %>
</jsp:useBean>
 
<%
int pageSize = 5;
int noRecords = cachedRS.size();
int noPages = noRecords/pageSize;
 
if ((noRecords%pageSize)!=0)
    noPages+=1;
 
int currPage=0;
 
Enumeration formElements = request.getParameterNames();
 
 
if (formElements.hasMoreElements())
{
out.println('-----' );
 
    //if (request.getParameter('page').length()!=0)
    if (request.getParameter('page')!=null)
    currPage = Integer.parseInt(request.getParameter('page'));
    else{
    currPage=1;
    }
    
}
else{
out.println('no results');
}
0 / 0 / 0
Регистрация: 10.08.2009
Сообщений: 9
11.08.2009, 10:29
mishgun спасибо за подсказку, тогда возникает ошибка, что драйвер не найден.
Может подскажеж прямой линк, где его скачать?
0
0 / 0 / 0
Регистрация: 10.08.2009
Сообщений: 9
11.08.2009, 11:06
Извини, ступил, в Oracle и взял его...
0
Lanka
12.08.2009, 11:30
Mishgun, огромнейшее тебе СПАСИБО, я оценила твой труд, очень мило с твоей стороны-)))
Но....у меня есть маленькое НО: программа у меня работает одноразово, т.е. на одной странице я задаю параметр для поиска, на другой странице он успешно передается и прекрасно отрабатывается SELECT с учетом этого параметра , результат отлично разбивается на страницы , но когда я возвращаюсь на первую страницу и задаю другой параметр для поиска, то уже в этом случае SELECT не отрабатывается и параметр не принтуется (out.println('LName is ' + lname). Я себе немного представляю как работает бин:он себе задание получил, засунул все в сессию и отдыхает, ему нет никагого дела до моих дальнейших действий-чего бы я дальше не вводила он выводит предыдущий результат запроса. И я не знаю КАК ему сообщить, что сеанс закончился. Я пыталась поиграться со свойствами бина scope='session', я подставляла scope='page', scope='request', и в этом случае результат менялся в зависимости от запроса, но пойти на следующую страницу уже нельзя было, так как область видимости бина на этом заканчивалась и вылетала ошибка сервера, что массив пуст и т.д.
Че делать?
Mishgun, памаги еще раз, пожалуйста-)
Lanka
12.08.2009, 11:42
Nick2000, я тоже попыталась приконнектится при помощи моста ODBC, но после того как ничего не получилось, я решила коннектиться традиционным способом:

XML
1
2
3
4
5
6
7
8
9
10
<jsp:useBean id='cachedRS' class='sun.jdbc.rowset.CachedRowSet' scope='session'>    
<%Class.forName ('oracle.jdbc.driver.OracleDriver');
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());%>
 
<jsp:setProperty name='cachedRS' property='url' value='jdbc:oracle:thin:@myhost(т.е. хост твоей базы):1521:тут имя базы' />
<jsp:setProperty name='cachedRS' property='username' value='тут пишешь свой username' />   
<jsp:setProperty name='cachedRS' property='password' value='тут пароль' /> 
<jsp:setProperty name='cachedRS' property='command' value='SELECT * FROM EMPLOYEE' />   
<% cachedRS.execute();%>
</jsp:useBean>
и полный коннект!-)
0 / 0 / 0
Регистрация: 10.08.2009
Сообщений: 9
12.08.2009, 14:15
Спасибо Lanka.
Только вот и весь коннект
SQLException caught: ?????????? ?????/??????: The Network Adapter could not establish the connection
Пишу или хост, или IP его - итог тотже.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.08.2009, 14:15
Помогаю со студенческими работами здесь

Обработать JS запрос и дать ответ
Доброго дня! Есть такой вот код function check() { var login = document.getElementById(&quot;username_id&quot;).value; var password =...

Выполнить GET запрос, получить xml ответ, обработать его
Начал делать сайт, на wordpress. Столкнулся с моментом. Нужно с другого сайта получать информацию(изменяющуюся). У них там, такая...

Выполнить GET запрос, получить xml ответ, обработать его
Начал делать сайт, на wp. Столкнулся с моментом. Нужно с другого сайта получать информацию(изменяющуюся). У них там, такая возможность...

Как обработать ответ от веб-сервиса.
SOAP веб-сервис написан на PHP с помощью библиотеки NuSOAP. Его назначение - связать SL и MySQL. Берёт таблицу и отправляет ввиде массива...

Ответ сервера вернуть, как результат функции
Всем привет. Не могу найти пример кода, на jQuery, который бы использовал $.ajax(), в теле функции, которая возвращала бы результатом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru