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

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

30.10.2008, 14:41. Показов 6693. Ответов 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
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru