java.lang.ClassCastException:无法转换为 javax.servlet.Servlet

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/42299997/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-03 06:31:32  来源:igfitidea点击:

java.lang.ClassCastException: cannot be cast to javax.servlet.Servlet

javaservlets

提问by Ng Sharma

I have try to run this program on Tomcat 7.0v server but getting a exception java.lang.ClassCastException: bean.Customer cannot be cast to javax.servlet.Servletthrow.

我尝试在 Tomcat 7.0v 服务器上运行这个程序,但得到一个异常java.lang.ClassCastException: bean.Customer cannot be cast to javax.servlet.Servletthrow。



Bean class

豆类

 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 Code

服务程序代码

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

<?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>      


Error

错误

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)

回答by Redlab

You are telling your web container that bean.Customer is a Servlet with the directive

你告诉你的 web 容器 bean.Customer 是一个带有指令的 Servlet

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

But this class does not implement javax.servlet.Servlet. You should configure the correct servlet class in your web.xml.

但是这个类没有实现 javax.servlet.Servlet。您应该在 web.xml 中配置正确的 servlet 类。

回答by Manish Patel

Make sure Your Customer class implements with HttpServlet for eg. public class Customer extends HttpServlet

确保您的 Customer 类使用 HttpServlet 实现,例如。 公共类 Customer 扩展了 HttpServlet