Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Вызов из Jsp java-приложения


Автор: Grelloo 5.4.2006, 22:02
Очень простой вопрос: как из Jsp-страницы вызвать метод, который находиться
в main классе java-приложения.
В java-файл без main я знаю как попасть (на примере метода addzip файла
FormBean.java).
<jsp:useBean id="formHandler" class="foo.FormBean" scope="request">
<jsp:setProperty name="formHandler" property="*"/>
<%! String name; %>
<% name=formHandler.addzip(name, " hello"); %>
А вот как быть с main я не знаю

Автор: onsh76 5.4.2006, 23:57
Встречный вопрос: а для чего Вам это нужно?

Автор: Grelloo 6.4.2006, 01:57
В статьях
http://forum.vingrad.ru/index.php?showtopic=64473
http://forum.vingrad.ru/index.php?showtopic=42367
показано создавать и использовать веб-сервисы. Эти примеры у меня работают.
Мне в задании указано сделать веб-сервис с JSP-страницей для регистрации нового пользователя. Вот я и не могу понять как мне соединить JSP-страницу и веб-сервис.
Если можно, то укажите кусок кода (например для соединения jsp-страницы и веб-сервиса созданного по ссылке
http://forum.vingrad.ru/index.php?showtopic=42367)

Автор: FatherFrost 6.4.2006, 07:17
Насколько я понял, есть веб-сервис для регистрации нового пользователя. К нему необходимо написать JSP клиент... Тогда нет нелбходимости вызывать другую java-программу. Тебе нужно создать прокси сборку и подключить ее к твоему клиентскому веб-приложению. Далее создаешь одну jsp-страницу с формой для ввода нового юзера и сервлет, который в методе, к примеру, doPost() будет вызывать метод веб-службы для сохранения инфы о новом юзере в БД. Т.е. нет необходимости писать консолное приложение, обращающееся к БД. В место него д.б. сервлет...

Автор: onsh76 6.4.2006, 09:06
Grelloo,
Следуй совету FatherFrost, в jsp не надо создавать никакой бизнес логики: вынеси её в сервлет, либо в обозначенный класс-контроллер, если работаешь с веб фрэймворком (типа Struts, SpringMVC etc).

Автор: Grelloo 7.4.2006, 14:55
Ладно, как лучше перейти на сервлет, может с помощью forward?

Автор: FatherFrost 7.4.2006, 15:08
Grelloo, в web.xml расписываешь маппинг для сервлета, т.е. задаешь ему url, а в jsp или хтмл для формы ввода инфы о новом юзере свойство action="url_сервлета" метод для формы укажи POST и все будет ок.
Если не разберешься сам, то вечером кину пример для передачи инфы со страницы в сервлет. Если сложности с клиентом, то приведи код своей службы и клиентского приложения... Я тогда набросаю примерно сервлет и выложу сюда.

Автор: Grelloo 7.4.2006, 16:56
Было бы неплохо, спасибо за помощь

Автор: FatherFrost 8.4.2006, 10:00
Итак. Начинаем с добавления в web.xml настроек маппинга сервлета (привожу для Томката):
Код

.........
<servlet>
        <servlet-name>AddUser</servlet-name>
        <servlet-class>
            myPackage.AddNewUserServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AddUser</servlet-name>
        <url-pattern>/newUser</url-pattern>
    </servlet-mapping>
......


Таким образом, мы задали удобочитаемый url для нашего сервлета: http://your_host/your_web_app/newUser

Теперь пишем форму для заполнения:
Код

<FORM action='<%=response.encodeURL("newUser")%>' method="post">
<label>Логин:</label>
<input name="Login" class="input">
<label>Пароль:</label>
<input name="Password1" type="password" class="input">
<input name="Password2" type="password" class="input">
<input type="submit" name="commit" value="ОК" >
</form>


Таким образом у нас есть форма для заполнения инфы (логин и пароль). Все параметры передаются в сервлет методом ПОСТ.
Теперь в сервлете тебе нужно из запроса вытянуть эти параметры и работать с ними:

Код

.....
protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        
    String account = request.getParameter("Login");//логин
    String password1 = request.getParameter("Password1");//пароль
    String password2 = request.getParameter("Password2");//подтверждение пароля
    //Далее идет код обращения к твоему веб-сервису как и в обчном приложении
    


Если, что не поймешь спрашивай... В понедельник стучи в асю.

Автор: Grelloo 8.4.2006, 10:33
Классно, очень подробно. Теперь буду разбираться с Hibernate

Автор: FatherFrost 8.4.2006, 10:37
Рад, что смог помочь.

Автор: triclosan 26.9.2006, 22:22
у меня работает без добавления в web.xml настроек маппинга сервлета - просто пишу:

Код

<%@ page import = "MyPackage.MyClass"%>
<jsp:useBean id="user" class="MyPackage.MyClass" scope="session"/>


так корректно?

Автор: FatherFrost 28.9.2006, 06:08
triclosan, но здесь сервлета как такого у тебя нет. Ты просто пользуешься бином и все.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)