这个问题非常得刁钻啊,解决办法我很不理解,不知道IDEA为什么这么捉弄人。
首先这里出现问题有两个方面:
1.Tomcat问题:
配置Tomcat得时候非常不容易发现:这里得名字不一样,一个横杠,一个下划线得横杠
改成servlet-demo3,这里默认先改成servlet-demo3,为下面得操作准备。
这里要检查以下是不是和上面得一样。
2.静态资源(html)中表单的action属性的值
2.1第一种方法有一种更加方便的方法:在同一个项目中,action的值可以只写@WebServlet("/xxx")中的xxx即可。
2.2第二种方法,方便大家看:
action="http://localhost:8080/servlet-demo3/BookServlet"
总结就是:action = "http://localhost:8080" + tomcat应用程序上下文的路径 + @WebServlet("/xxx")中的引号内的值,如果是上面这种格式,确实如此。
解释以下为什么这样配置:
当我们的表单提交之后,这个请求会被tomcat解析,然后发给相应的servlet来进行逻辑性操作,那么问题来了,前端如何把请求发给tomcat呢,表单中的action就是解决问题的关键,action属性可以指定发给哪一个servlet,如何写这个值呢?首先是,你当前的服务器一定是你的电脑主机,所以前面的http://localhost:8080是必须有的,端口一定要配置(我就是端口没配置,一直报错),然后加上tomcat应用程序上下文的路径+@WebServlet("/xxx")中的引号内的值。
以上就完成了,然后可以重启tomcat即可完成,在必要的情况下可以清理一下浏览器的cookie,然后再重启。
都是IT小白,交流群不可少,相互学习,相互交流感悟,可能会给你一些启发。