我已尝试在Tomcat 7.0v服务器上运行此程序,但遇到异常 java.lang.ClassCastException:bean.Customer无法强制转换为javax.servlet.Servlet throw。
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)
答案 0 :(得分:1)
您告诉您的Web容器bean.Customer是一个带有指令
的Servlet<servlet>
<servlet-name>Customer</servlet-name>
<servlet-class>bean.Customer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
但是这个类没有实现javax.servlet.Servlet。您应该在web.xml中配置正确的servlet类。
答案 1 :(得分:0)
确保您的Customer类使用HttpServlet实现 例如 公共类客户扩展HttpServlet