Java Servlet(二):servlet配置及生命周期相关(jdk7+tomcat7+eclipse)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java Servlet(二):servlet配置及生命周期相关(jdk7+tomcat7+eclipse),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3843字,纯文字阅读大概需要6分钟。
内容图文
该篇文章记录了Servlet配置相关用法及Servlet在Servlet容器中生命周期方法。
- Tomcat是一个Servlet容器:
1、Servlet容器管理了Servlet的整个生命周期,并调用servlet的生命周期的方法。
2、Servlet容器不只是Servlet的生命周期,而且还是Jsp,Filter,Listener,Tag等生命周期管理容器。
- Servlet的注册与运行
1、Servlet程序必须通过Servlet容器来启动运行,并且存储目录有特殊要求,通常servlet编译好的.class文件要存储在<WEB应用程序目录>\WEB-INF\classes\目录中。
2、Servlet程序必须在WEB应用程序的web.xml文件中进行注册和映射其访问路径,才可以被Servlet引擎加载被外界访问。
3、一个<servlet>元素用户注册一个Servlet,它包含有两个主要的子元素:<servlet-name>和<servlet-class>,分别用户设置Servlet的注册名称和Servlet的完整类名。
4、一个<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:<servlet-name>和<url-pattern>,分别用户指定Servlet的注册名称和Servlet的对外访问路径。
- Servlet容器相应客户请求的过程:
1、servlet引擎检查是否已经装载被创建该servlet的实例对象。如果已经创建,则直接执行第4步;否则,执行第2步。
2、装载并创建该servlet的一个实例对象:调用该servlet的构造函数。
3、调用servlet实例对象的init方法。
4、创建一个用于封装请求的ServletRequest对象和一个代表相应消息的ServletResponse对象,然后调用Servlet的service方法并将请求和相应对象作为参数传递进去。
5、web应用程序被停止或者重启之前,servlet引擎将卸载servlet,并在卸载之前调用servlet的destory方法。
- Servlet生命周期的方法(以下方法都是有Servlet容器负责调用):
1、首先是创建实例时调用构造器:只被调用一次,只有第一次请求Servlet时,创建Servlet的实例,调用构造器。
2、init方法:只被调用一次,在创建好Servlet实例后立即调用init函数,用户初始化当前Servlet实例
3、service方法:被多次调用,每次请求都会被调用,用于相应请求。
4、destory方法:只被调用一次,在当前servlet所在的web应用被卸载前调用,用于释放servlet所占用的资源。
- Servlet配置需要注意事项:
servlet节点下的load-on-startup配置:
1、可以指定servlet被创建的时机;
2、默认该参数为负数,在加载web应用时,不加载servlet实例,而在第一次请求时被创建;
3、若为0或者正数,则在当前WEB应用被servlet加载时创建家实例,且值越小越早被创建。
配置示例:
1 <!-- 配置和映射 servlet --> 2 < servlet > 3 <!-- Servlet注册的名字 --> 4 < servlet-name >helloServlet</servlet-name> 5<!-- Servlet全类名 --> 6<servlet-class>com.dx.hello.HelloServlet</servlet-class> 7<load-on-startup>1</load-on-startup> 8</servlet> 9<servlet-mapping>10<!-- 对应servlet节点下的servlet-name的注册名字一致 -->11<servlet-name>helloServlet</servlet-name>12<!-- 映射具体的访问路径,其中/代表当前web的根目录 -->13<url-pattern>/hello</url-pattern>14</servlet-mapping>
- Servlet映射的细节:
1、同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。
比如:
1 <!-- 配置和映射 servlet --> 2 < servlet > 3 <!-- Servlet注册的名字 --> 4 < servlet-name >helloServlet</servlet-name> 5<!-- Servlet全类名 --> 6<servlet-class>com.dx.hello.HelloServlet</servlet-class> 7<load-on-startup>1</load-on-startup> 8</servlet> 9<servlet-mapping>10<!-- 对应servlet节点下的servlet-name的注册名字一致 -->11<servlet-name>helloServlet</servlet-name>12<!-- 映射具体的访问路径,其中/代表当前web的根目录 -->13<url-pattern>/hello</url-pattern>14</servlet-mapping>15<servlet-mapping>16<!-- 对应servlet节点下的servlet-name的注册名字一致 -->17<servlet-name>helloServlet</servlet-name>18<!-- 映射具体的访问路径,其中/代表当前web的根目录 -->19<url-pattern>/hello2</url-pattern>20</servlet-mapping>
这样子就可以通过http://localhost:8080/MyServlet001/hello和http://localhost:8080/MyServlet001/hello2访问同一个servlet。
2、在Servlet映射到URL中也可以使用*通配符,但是只能有两种固定的格式:一种是“*.扩展名”,另外一种是以正斜杠“/”开头并以“/”结尾。
比如:
1 < servlet-mapping > 2 <!-- 对应servlet节点下的servlet-name的注册名字一致 --> 3 < servlet-name >helloServlet2</servlet-name> 4<!-- 映射具体的访问路径,其中/代表当前web的根目录 --> 5<url-pattern>*.do</url-pattern> 6<!-- <url-pattern>*.html</url-pattern> --> 7</servlet-mapping> 8<servlet-mapping> 9<!-- 对应servlet节点下的servlet-name的注册名字一致 -->10<servlet-name>helloServlet1</servlet-name>11<!-- 映射具体的访问路径,其中/代表当前web的根目录 -->12<url-pattern>/hello2/*</url-pattern>13<!-- <url-pattern>/*</url-pattern> -->14</servlet-mapping>
但需要注意事项:
1、*.html这样写是没有问题的,如果配置为/*.html或者/*.action、/*.do等格式的,是错误的配置,加载时会跑出异常信息。
2、若果配置为*没有后缀名,则必须浅表带/,格式为:/*或者/a/*等等。
原文:http://www.cnblogs.com/yy3b2007com/p/5224362.html
内容总结
以上是互联网集市为您收集整理的Java Servlet(二):servlet配置及生命周期相关(jdk7+tomcat7+eclipse)全部内容,希望文章能够帮你解决Java Servlet(二):servlet配置及生命周期相关(jdk7+tomcat7+eclipse)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。