Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вызвать сервлет из JSP с использованием <FORM> 
:(
    Опции темы
freshAngel
  Дата 23.11.2010, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Привет.
Есть JSP(index.jsp):
Код

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
      <form action="MyServlet" method="POST">
      <input type="text" size=50>
      <input type="submit" value="Вызвать сервлет!">
      </form>
    </body>
</html>


Есть сервлет (MyServlet.java):

Код

package ru.test;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {

 protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
           
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet NewServlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("Сервлет вызван!");
            out.println("</body>");
            out.println("</html>");
           
        } finally {
            out.close();
        }
    }

  @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
        
    }

}


Есть web.xml:
Код

  <?xml version="1.0" encoding="UTF-8" ?> 
- <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <session-config>
  <session-timeout>30</session-timeout> 
  </session-config>
- <welcome-file-list>
  <welcome-file>index.jsp</welcome-file> 
  </welcome-file-list>
  </web-app>


Вопрос!
Как заставить вызываться сервлет из JSP страницы с использованием тега <FORM>.
Хочу передать в сервлет параметры методом POST.

Контейнер сервлетов: Tomcat 7.0
Когда нажимаю кнопку вызвать сервлет пишет что:
Код

HTTP Status 404 - /WebApplication/build/web/MyServlet
type Status report
message /WebApplication/build/web/MyServlet
description The requested resource (/WebApplication/build/web/MyServlet) is not available.


Структура папок -> user posted image
PM MAIL   Вверх
Kircul
Дата 24.11.2010, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 20.2.2007

Репутация: 1
Всего: 7



Вам необходимо добавить маппинг для сервлета в web.xml, как-то так:
Код

<servlet>
   <servlet-name>MyServlet</servlet-name>
   <servlet-class>ru.test.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/MyServlet</url-pattern>
</servlet-mapping>

И, возможно, надо исправить html так (но я не уверен):
Код

<form action="/MyServlet" method="POST">
      <input type="text" size=50>
      <input type="submit" value="Вызвать сервлет!">
</form>

PM   Вверх
freshAngel
  Дата 24.11.2010, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Цитата(Kircul @ 24.11.2010,  11:20)
Вам необходимо добавить маппинг для сервлета в web.xml, как-то так:
Код

<servlet>
   <servlet-name>MyServlet</servlet-name>
   <servlet-class>ru.test.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/MyServlet</url-pattern>
</servlet-mapping>

И, возможно, надо исправить html так (но я не уверен):
Код

<form action="/MyServlet" method="POST">
      <input type="text" size=50>
      <input type="submit" value="Вызвать сервлет!">
</form>

Выдает такую ошибку:
Код

HTTP Status 404 - /MyServlet

type Status report

message /MyServlet

description The requested resource (/MyServlet) is not available.
Apache Tomcat/7.0.4

PM MAIL   Вверх
freshAngel
  Дата 24.11.2010, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Переместил проект в папку webapps томката.
Стало так: webapps->myproject, без лишних подпапок.
Теперь когда вызываешь: http://localhost/myproject/MyServlet - все работает!
Получается все свои проекты необходимо складывать в папку webapps и вложенность папок не должна быть больше одной?
Я имею в виду, что нельзя вызывать так: http://localhost/myproject/subfolder1/subfolder2/MyServlet
PM MAIL   Вверх
garbuz
Дата 24.11.2010, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: 8
Всего: 11



После localhost обычно идет контекст приложения - папка с приложением, лежащая в webapps. Далее вложенность никак не влияет на что замаплен сервлет, на то и будет отзываться.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0675 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.