我有一个名为HelloServlet的servlet ..
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet
{
public void doGet(ServletRequest request, ServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
pw.println("<html>");
pw.println("<head>");
pw.println("<title> Hello World </title>");
pw.println("</head>");
pw.println("<body>");
pw.println("<h1> Hello, World!</h1>");
pw.println("</body>");
pw.println("</html>");
pw.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doGet(request, response);
}
}
我将它编译成.class
文件,然后将它放在C:/tomcat/webapps/ALTest1/WEB-INF/classes/
下的tomcat目录中 - 我制作了servlet映射(我将url-pattern设置为/hi
)和servlet在C:/tomcat/webapps/ALTest1/WEB-INF/web.xml
一切正常但当我在http://localhost:8080/ALTest1/hi
访问我的浏览器访问它时,我收到一条错误消息:
HTTP STATUS 405 - HTTP METHOD GET is not supported by this URL
...这很奇怪,因为我的doPost
文件中有doGet
和HelloServlet.class
个方法。因此,即使不支持doGet
,我也有doPost方法来处理POST但它仍然无效。
答案 0 :(得分:8)
public void doGet(ServletRequest request, ServletResponse response)
那应该是HttpServletRequest和HttpServletResponse,就像在doPost中一样。
总是使用@Override,它会告诉你这个错误。
答案 1 :(得分:0)
似乎没有servlet java类的包。对于运行throw main methord的普通java程序,如果没有指定包,则java类在默认包中。但是,对于Web应用程序,您需要在web.xml中指定包名称。