crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> IDEA+Apache+Tomcat JSP не работает сервлет
Toisen
  опции профиля:
сообщение 29.3.2013, 18:58
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 25.2.2013
Пользователь №: 3727

Спасибо сказали: 0 раз(а)




Репутация:   0  


В общем, совсем недавно пересел на эту замечательную IDE, но вопрос не в ней, а в том, где ошибка... Написал простой JSP-сервлет. Программа должна выдавать рекомендации пива по выбору типа из списка и нажатию на кнопку "submit", но выдача рекомендации после нажатия не происходит. Вот код проекта с его структурой:
untitled3
>web
>>index.jsp
<%-- Created by IntelliJ IDEA. --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title></title>
  </head>
  <body>
    <h1 align="center">Beer selection page</h1>
  <from method="POST"
        action="SelectBeer.do">Select beer characteristics<p>
        Color:
        <select name="color" size="1">
            <option value="light"> light </option>
            <option value="amber"> amber </option>
            <option value="brown"> brown </option>
            <option value="dark"> dark </option>
        </select>
        <br><br>
      <center>
        <input type="SUBMIT">
      </center>
  </from>
  </body>
</html>

>>WEB-INF
>>>web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
           version="2.5">

    <servlet>
        <servlet-name>Ch3 Beer</servlet-name>
        <servlet-class>com.example.web.BeerSelect</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Ch3 Beer</servlet-name>
        <url-pattern>/SelectBeer.do</url-pattern>
    </servlet-mapping>

</web-app>

>src
>>com.example
>>>model
>>>>BeerExpert.java
package com.example.model;
import java.util.*;

public class BeerExpert {
    public List getBrands (String color) {
        List brands = new ArrayList();
        if (color.equals("amber")) {
            brands.add("Jack Amber");
            brands.add("Red Moose");
        }
        else {
            brands.add("Jail Pale Ale");
            brands.add("Gout Stout");
        }
        return (brands);
    }
}

>>>web
>>>>BeerSelect.java
package com.example.web;

import com.example.model.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.String;
import java.util.Iterator;
import java.util.List;

public class BeerSelect extends HttpServlet {
    public void doPost(HttpServletRequest request,
                       HttpServletResponse response)
                       throws IOException, ServletException {

        String c = request.getParameter("color");
        BeerExpert be = new BeerExpert();
        List result = be.getBrands(c);

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("Beer Selection Advice<br>");

        Iterator it = result.iterator();
        while (it.hasNext()) {
            out.print("<br>try: " + it.next());
        }
        //String c = request.getParameter("color");
        //out.println("<br>Got beer color " + c);
    }
}


В результате выводится сама страничка с предложением выбора типа пива, но ничего не происходит после нажатия на кнопку Submit. Покорно прошу вашей помощи ^_^
P.S. я еще новичок в JavaEE, так что прошу подробнее
P.P.S. пример взят из книги Sierra K. Head First Servlets and JSP
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Toisen
  опции профиля:
сообщение 29.3.2013, 21:27
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 25.2.2013
Пользователь №: 3727

Спасибо сказали: 0 раз(а)




Репутация:   0  


Ошибка была банальнейшей: написал from вместо form... Правда теперь пошла следующая ругань:
Цитата
HTTP Status 500 - Error instantiating servlet class com.example.web.BeerSelect

type Exception report

message Error instantiating servlet class com.example.web.BeerSelect

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Error instantiating servlet class com.example.web.BeerSelect
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.jav
a:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor
.java:1004)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
java.lang.Thread.run(Thread.java:722)
root cause

java.lang.ClassNotFoundException: com.example.web.BeerSelect
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:17
13)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:15
58)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.jav
a:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor
.java:1004)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
java.lang.Thread.run(Thread.java:722)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 30.3.2013, 0:16
Сообщение #3


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


я не спец в жабе, но сервер не может найти твой класс. возможно, его нужно положить в папку, которая будет соответствовать странному имени com.example.web.BeerSelect. а уж как это реализуется под конкретной системой - это надо доки читать. что-нибудь типа WEB-INF/classes/com/example/web/BeerSelect и в этой папке должен лежать файл с классом.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Toisen
  опции профиля:
сообщение 30.3.2013, 7:32
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 6
Регистрация: 25.2.2013
Пользователь №: 3727

Спасибо сказали: 0 раз(а)




Репутация:   0  


Проблема решена ^_^
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 10:12