3G-肖阳

人在江湖,身不由己。。

Servlet基础(入门篇)

Servlet基础(入门篇)

Servlet简介:Servlet是sun公司提供的一门用于开发动态web资源的技术,sun公司在API中提供了一个Servlet接口,用户若想完成一个动态web资源,需要完成以下两个步骤:

----1、编写一个Java类,实现Servlet的接口

----2、把开发好的java类部署到web服务器中

Servlet在web应用中的位置如图所示:

Servlet接口实现类

------sun公司定义了两个默认实现类,GenericeServlet,HttpServlet

------HttpServlet指的是能够处理http请求的servlet,它在原有Servlet接口上添加了一些与http协议处理方法,它比Servlet接口的功能更强大,所以,开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口

------HttpServlet在实现Servlet接口时,覆盖了Service方法,该方法体内的代码会自动判断用户的请求方式,因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写Service方法,具体请阅读HttpServlet文档。

Servlet的一些细节

------1、由于客户端是通过URL地址访问web服务器资源的,所以servlet程序若想被外界访问,必须把Servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成

<servlet>元素用于注册Servlet,它包含两个重要的子元素,<servlet-name>和<servlet-class>,分别用于设置Servlet的注册名称和Servlet的完整类名。

一个<servlet-mapping>元素用于映射一个已经注册的Servlet的一个对外访问路径,它包含两个子元素<servlet-name>和<url-patterm>,分别用于指定Servlet的注册名称和对外访问路径

------2、同一个Servlet可以映射到多个URl上,即多个<servlet-mapping>元素中的<servlet-name>子元素的设置值可以是同一个Servlet注册名

-----3、Servlet是一个供其它Java程序调用的Java类,他不能独立运行,它的运行完全由Servlet引擎来调度和控制。针对客户端的多次Servlet请求,通常情况下服务器只会创建一个Servlet对象,Servlet实例对象一旦创建,他就会驻留在内存中,为后续的其它请求服务,直到web容器退出,Servlet对象才会被销毁

-------*在Servlet的整个生命周期中,Servlet的init方法只会被调用一次,而对一个Servlet的每次访问请求都导致Servlet引擎调动一次Servlet的Service方法,对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的Service()方法,Service方法在根据请求方式分别调用doxxx方法。

--------4、如果在<servlet>元素中配置了一个<load-on-startup>元素,那么web一个用在启动时,就会装载并创建Servlet的实例对象、以及调用Servlet实例对象的init(0方法。

----* 为web应用写一个InitServlet,这个Servlet配置为启动时装载,为整个web应用程序创建必要的数据库表和数据

-------5、如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前web应用程序的缺省Servlet。凡是在web.xml中找不到匹配的<servlet-mapping>元素的URL,它们的访问请求都将交给缺省Servlet处理

----*在tomcat的安装目录(\conf\web.xml)文件中注册了一个名为org.apache.catalina.servlets.DefaultServlet的Servlet,并将这个Servlet设置为缺省的Servlet

----*当访问TomCat服务器中的某个静态页面或图片时,实际上是访问这个缺省的Servlet

------6、线程安全:当多个客户端并发访问同一个Servlet时,web服务器会为每个客户端的访问请求创建一个线程,并在这个线程上调用Servlet的Service方法,因此Service方法内如果访问了同一个资源时,可能引发线程安全的问题

------*如果某个Servlet实现了SingleThreadModel接口,那么Servlet引擎将以单线程模式调用servi方法

-------*实现SingleThreadModel接口并不能真正解决线程安全问题,因为Servlet引擎会创建多个Servlet实例对象,而真正意义上解决多线程问题是指一个Servlet实例对象被多个线程同事调用的问题,在Servlet API 2.4中,已经将SingleThreadModel标记为Deprecated(过时的)。  

-------7、ServletConfig对象:在Servlet的配置文件中,可以使用一个或多个,<init-param>标签为Servlet配置一些初始化参数

-------*当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

--------8、ServletContext:WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。

--------*由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

--------9、ServletContext应用:多个Servlet通过ServletContext对象实现数据共享。

 

 

 

            

 

 

 

 


阅读更多
个人分类: jsp
想对作者说点什么? 我来说一句

PowerBuilder 9.0快速入门篇.rar

2011年10月18日 56.57MB 下载

asp基础入门篇,了解asp基础

2010年09月17日 1.14MB 下载

java入门 练习题题库

2010年06月10日 465KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭