概述
今天继续学习Servlet,跟张老师学了Servlet的映射,还有注册和运行,Servlet激活器。 张老师讲的动手与实践,跟着做了一遍,巩固了servlet的注册和运行。
servlet映射的细节
同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。
在Servlet映射到的url中也可以使用*通配符,但是只能有两种固定的格式:一种格式是"*.扩展名",另一种格式是以正斜线"/"开头的并以"/*"结尾。
<servlet-mapping>
<servlet-name>AnyName</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AnyName</servlet-name>
<url-pattern>/action/*</url-pattern>
</servlet-mapping>
Servlet映射的匹配原则
当同一个Servlet被映射到多个URL上时, servlet引擎会调用最接近请求url的对外访问url所映射的servlet,*.do的优先级最低。
Servlet的注册和运行
Servlet程序必须通过Web服务器和Servlet引擎来启动运行。Servlet程序要存储在<Web应用程序目录>WEB-INFclasses目录中。Servlet程序必须在Web应用程序的web.xml文件中进行注册和映射其访问路径,才可以被Servlet引擎加载和被外界访问。对于编写web.xml文件,最好先参考已有的例子,进行模仿。可以参看Tomcat自带的examples应用程序中的web.xml文件的相应部分。最好是使用负责和粘贴的方式复制,然后对其进行适当的修改。
我们的访问url要与Servlet映射中设置的url大小写一致,否则,浏览器会显示找不到请求资源。
Tomcat5.0以上的版本,修改web.xml后,会自动加载,不用重启Tomcat。
Servlet映射中设置的对外访问Url,“*.扩展名”格式中的"*"前面不能有目录分隔符,否则是无效的映射路径。
<welcome-file-list>用于设置web应用程序的目录默认网页文档。这是因为目录默认网页文档是对各级目录都有效的,那么在<welcome-file>元素设置的默认网页文档就不能出现目录分隔符“/”。
Servlet激活器,学习它可能没有什么用,不过可以开阔知识视野,了解Servlet更多的应用。必须使用Tomcat4.x版本的Web服务器,Tomcat提供了一些servlet的例子程序,他们存储在<Web应用程序目录>webappsexamplesWEB-INFclasses目录中,但是打开examples这个Web应用程序的web.xml文件,在里面找不到例子Servlet的注册信息。这就很难理解这些例子Servlet的访问路径和servlet引擎对这些例子servlet的访问请求的处理。
我们可以查看到Tomcat提供的第一个标题为Hello World的例子程序的url如下:
http://localhost:8080/examples/servlet/HelloWorldExample,查看所有Servlet例子程序的访问路径,可以总结他们的访问路径格式如下:
http://localhost:8080/examples/servlet/(servlet名称)
在web.xml文件中可以找到下面的映射:
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
这说明会调用一个注册名称为invoker的Servlet。可是在web.xml文件中根本找不到这个Servlet的注册。还有一点要注意,一个web应用程序的部署描述除了包含在该应用程序内部的web.xml文件中,还包含<tomcat主目录>conf目录下的web.xml文件中的全局设置信息,在<tomcat主目录>confweb.xml文件中可以看到:
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
这样,如果有多个web应用程序要用到这个Servlet,我们不必在每个web应用程序中都单独注册这个servlet,而只需在web.xml文件中映射其访问路径即可。这个Servlet的作用就是激活和调用任何其他Servlet,被称为Servlet激活器。 <load-on-startup>2</load-on-startup>设置它随Tomcat的启动而加载。所以,在web应用程序中为Servlet激活器invoker映射的访问路径以"/*"结尾,即使某个Servlet程序没有在web.xml文件中注册,我们只需将Servlet激活器所映射的访问路径中的通配符(*)替换为这个Servlet的完整类名,就可以通过servlet激活器来调用这个Servlet程序。
最后
以上就是明亮麦片为你收集整理的Servlet学习,Servlet的映射,还有注册和运行,Servlet激活器的全部内容,希望文章能够帮你解决Servlet学习,Servlet的映射,还有注册和运行,Servlet激活器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复