2017-02-17 2 views
1

Я попытался запустить эту программу на сервере Tomcat 7.0v, но получаю исключение java.lang.ClassCastException: bean.Customer нельзя отнести к javax. servlet.Servlet бросок.java.lang.ClassCastException: нельзя передать в javax.servlet.Servlet


класс Bean

public class Customer { 

@Id 
private Integer id; 
@Column 
private String name; 
@Column 
private String address; 
@Column 
private String city; 
@Column 
private String postalcode; 
@Column 
private String country; 

public Customer() {} 

public Customer(Integer id, String name, String address, String city, String postalcode, String country) { 
    this.id = id; 
    this.name = name; 
    this.address = address; 
    this.city = city; 
    this.postalcode = postalcode; 
    this.country = country; 
} 

public Integer getId() { 
    return id; 
} 

public void setId(Integer id) { 
    this.id = id; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getAddress() { 
    return address; 
} 

public void setAddress(String address) { 
    this.address = address; 
} 

public String getCity() { 
    return city; 
} 

public void setCity(String city) { 
    this.city = city; 
} 

public String getPostalcode() { 
    return postalcode; 
} 

public void setPostalcode(String postalcode) { 
    this.postalcode = postalcode; 
} 

public String getCountry() { 
    return country; 
} 

public void setCountry(String country) { 
    this.country = country; 
} 

}

Servlet Код

public void init(ServletConfig config) throws ServletException { 
    factory = new Configuration().configure("resources/mysql.cfg.xml").buildSessionFactory();} 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    PrintWriter out = response.getWriter(); 

    int first = Integer.parseInt(request.getParameter("fr")); 
    int second = Integer.parseInt(request.getParameter("mr")); 

    Session session = factory.openSession(); 
    Criteria criteria = session.createCriteria(Customer.class); 
    List customers = criteria.list(); 
    Iterator it = customers.iterator(); 

    while (it.hasNext()) { 
     Customer customer = (Customer)it.next(); 
     out.println(customer.getId()); 
     out.println(customer.getName()); 
     out.println(customer.getAddress()); 
     out.println(customer.getCountry()); 
     out.println(customer.getPostalcode()); 
     out.println("==============================="); 
    } 

    session.close(); 

} 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 
    <servlet> 
<servlet-name>Customer</servlet-name> 
<servlet-class>bean.Customer</servlet-class> 
<load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
<servlet-name>Customer</servlet-name> 
<url-pattern>/data</url-pattern> 
</servlet-mapping> 
</web-app>  

Ошибка

java.lang.ClassCastException: bean.Customer cannot be cast to javax.servlet.Servlet 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1148) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5210) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5493) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3988) 
at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:425) 
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1345) 
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530) 
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540) 
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540) 
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519) 
at java.lang.Thread.run(Thread.java:745) 
+1

Пожалуйста, вставьте весь код сервлета, это, кажется, всего лишь часть – Redlab

+2

Позвольте мне догадаться, что вы добавили свой 'Заказчик' в качестве сервлета в ваш' web.xml' ... –

+0

Спасибо #M Deinum сэр, m добавление класса Servlet, но я имею в виду класс Customers. –

ответ

1

Вы сообщаете свой веб-контейнер, который bean.Customer является Servlet с директивой

<servlet> 
    <servlet-name>Customer</servlet-name> 
    <servlet-class>bean.Customer</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

Но этот класс не реализует ja vax.servlet.Servlet. Вы должны настроить правильный класс сервлета в своем web.xml.

+0

@ Благодарю вас, редиаб сэр .. –

Смежные вопросы