Servlet开发中的一些细节
来源:互联网 发布:java定时任务管理模块 编辑:程序博客网 时间:2024/05/16 15:57
一、web.xml配置文件细节
1.1 由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成。
eg:
<web-app>
<servlet>
<servlet-name>AnyName</servlet-name>
<servlet-class>com.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AnyName</servlet-name>
<url-pattern>/demo/hello.html</url-pattern>
</servlet-mapping>
</web-app>
- <servlet>元素:用于注册Servlet。包含两个主要的子元素,
- <servlet-name>元素:用于设置Servlet的注册名称;
- <servlet-class>元素:用于设置Servlet的完整限定名。
- <servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径。它包含有两个子元素,
- <servlet-name>元素:用于指定Servlet的注册名称;
- <url-pattern>元素:用于指定Servlet的对外访问路径。
1.2 同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。
eg:
<servlet-mapping>
<servlet-name>Servlet2</servlet-name>
<url-pattern>/Servlet2.htm</url-pattern>
<url-pattern>/Servlet2.html</url-pattern>
<url-pattern>/Servlet2.jsp</url-pattern>
</servlet-mapping>
1.3 在Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:
一种格式是“*.扩展名”,另一种格式是以正斜杠(/)开头并以“/*”结尾。
eg:
<servlet-mapping>
<servlet-name>AnyName</servlet-name>
<url-pattern>*.do</url-pattern>
<url-pattern>/action/*</url-pattern>
</servlet-mapping>
1.4如果在<servlet>元素中配置了一个<load-on-startup>元素,那么WEB应用程序在启动时,就会装载并创建Servlet的实例对象、以及调用Servlet实例对象的init()方法。
eg:
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
- 用途:为web应用写一个InitServlet,这个servlet配置为启动时装载,为整个web应用创建必要的数据库表和数据。
缺省Servlet
- 如果某个Servlet的映射路径仅仅为一个正斜杠“/”,那么这个Servlet就成为当前Web应用程序的缺省Servlet。
- 凡是在web.xml文件中找不到匹配的<servlet-mapping>元素的URL,它们的访问请求都将交给缺省Servlet处理,也就是说,缺省Servlet用于处理所有其他Servlet都不处理的访问请求。
- 在<tomcat的安装目录>\conf\web.xml文件中,注册了一个名称为org.apache.catalina.servlets.DefaultServlet的Servlet,并将这个Servlet设置为了缺省Servlet。
- 当访问Tomcat服务器中的某个静态HTML文件和图片时,实际上是在访问这个缺省Servlet。
二、Servlet知识点细节
2.1 Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。
2.2 针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁,即servlet对象是单例的。可以参考这篇文章《对javaservlet单例模式的理解》。
2.3 在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doGet/doPost方法。
- Servlet开发中的一些细节
- servlet中的一些小细节
- 【JSP开发】Servlet的一些细节
- Servlet开发的一些细节问题
- 嵌入式开发中的一些细节
- 开发中的一些小细节
- Servlet学习笔记---开发中的小细节
- Servlet的一些细节
- Servlet的一些细节
- Servlet的一些细节
- Servlet的一些细节
- Servlet的一些细节
- Servlet的一些细节
- Servlet的一些细节
- servlet的一些细节
- Servlet的一些细节
- Servlet的一些细节
- [Servlet]Servlet的一些细节
- jstat命令用法
- 常用的DOS命令
- 2015.3.28数组作数据成员3.4.5
- Ubuntu下SSH设置
- Android尺寸dp,px,pt,sp
- Servlet开发中的一些细节
- 第一章第七题
- 俞洪敏东南大学演讲
- 现货白银投资的六个技巧
- HDU 3560--Graph’s Cycle Component【并查集(判环)】
- mysql中中文存入为乱码问题
- httpd-2.2.29 + php-5.2.17 启动失败
- 从中兴财报看全球+布局
- 使用window.navigator.userAgent属性判断浏览器类型及版本