【发布时间】:2016-03-17 14:32:26
【问题描述】:
我想实现一个 servlet 并在 WebApp 中调用它。
我经常从 Apache Tomcat 服务器获得java.lang.ClassCastException: Servlet.Telnet cannot be cast to javax.servlet.Servlet。我确保我的课程扩展 HttpServlet 这是我的代码:
package Servlet;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.net.telnet.TelnetClient;
public class Servlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
TelnetClient telnet = new TelnetClient();
telnet.connect(request.getParameter("router"), 23);
PrintStream output = new PrintStream(telnet.getOutputStream());
output.println(request.getParameter("login"));
output.flush();
output.println(request.getParameter("password"));
output.flush();
out.printf("SUCCESS");
telnet.disconnect();
} catch (Exception e) {
e.printStackTrace();
out.printf("ERROR");
}
}
【问题讨论】:
-
为什么你的 servlet 是一个内部类
-
作为必然结果,请尝试正确格式化您的问题。至少以大写字母开头,作为对那些试图帮助你的人的最低限度的尊重。
-
Servlet.Telnet不能转换为javax.servlet.Servlet。这意味着Servlet包中的Telnet类在某处被使用。但是我们在您的代码中看不到它。还提供来自异常的更多信息 - 它发生在哪一行以及代码中这一行的位置 -
名称选择不当。 Servlet 是 javax.servlet 包中的一个接口。你应该重命名你的包和类。