在学习Servlet中,尝试访问Servlet程序是出现:
public class Test2 extends HttpServlet {
//@Override
//protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// System.out.println("get");
//}
//@Override
//protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// System.out.println("post");
//}
@Override
public void init(ServletConfig config) throws ServletException {
String url = config.getInitParameter("url");
String user = config.getInitParameter("user");
System.out.println("ServletConfig 被调用");
System.out.println("url = "+url);
System.out.println("user = "+user);
}
}
刚开始百度出来看到有人说是是因为在重写的doGet和doPost方法中调用了super.doGet和super.doPost,去掉就好了
但是,我经过测试,你不重写这两个方法也会出现同样的错误,而只需重写doGet即可成功访问Servlet程序
那么问题来了,为什么仅重写doGet方法就避免问题出现了呢
既然我们的Test2继承于HttpServlet,那么我们就从它入手
可以看出HttpServletl里面的doGet是抛出异常的,当我们没有重写时,默认调用父类的doGet于是就抛出了异常。
那么为什么不需要重写doPost方法嘞,我猜是因为我们没有指定页面请求方式,于是默认使用get请求。
到此,问题就成功解决啦