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
java.lang.ClassCastException: cannot be cast to javax.servlet.Servlet
提问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