关于form表单中action与Servlet

正文


今天在做老师布置的作业时,犯了一个我觉得很弱智,但是又很细节的错误。但是就是这一个小bug,让我抓狂了半个小时。。。
话不多说,上图~
在web.xml中存在这样的标签



1
<servlet>
为Servlet命名
1
<servlet-mapping>
为Servlet定制URL


在form表单中存在action这样一个参数

如图,在action中填写的值一定要是
1
<servlet-mapping>
标签下的
1
<url-pattern>
标签中的值

而不是
1
<servlet>
标签下的
1
<servlet-class>
标签中的值不然肯定会引发表单提交错误。

我在servlet获取web.xml中的值一直出错还以为是获取方式出错,一步步的调试才终于发现是题中错误
另外讲到获取web.xml中参数,有一点要记一下

ServletConfig对象与ServletContext区别

ServletContext对象:servlet容器在启动时会加载web应用,并为每个web应用创建唯一的servlet context对象,可以把ServletContext看成是一个Web应用的服务器端组件的共享内存,在ServletContext中可以存放共享数据。ServletContext对象是真正的一个全局对象,凡是web容器中的Servlet都可以访问。

servletConfig对象:用于封装servlet的配置信息。从一个servlet被实例化后,对任何客户端在任何时候访问有效,但仅对servlet自身有效,一个servlet的ServletConfig对象不能被另一个servlet访问。
所以可以通过如下方式来获取

1
2
String myUsername = this.getServletConfig().getInitParameter(
"myUsername");