http://blog.csdn.net/jiuqiyuliang/article/details/36424981
Servlet是Sun公司提供的一门用于开发动态web网页的技术。Sun公司在API中提供了一个servlet接口,我们如果想使用java程序开发一个动态的web网页,只需要实现servelet接口,并把类部署到web服务器上就可以运行了。
通俗一点,只要是实现了servlet接口的java程序,均称Servlet。Servlet是由sun公司命名的,Servlet = Server + Applet(Applet表示小应用程序),Servlet是在服务器端运行的小程序。
1、我们先写一个简单的HTML,可以在WebRoot新建,也可以复制一个写好的HTML,我们用post提交方式,当然也可以用get提交,大家可以自己尝试一下。
3、在WebRoot下的WEB-INF的web.xml,部署我们的Servlet,启动服务器。
实例的demo:http://download.csdn.net/detail/jiuqiyuliang/7593641
==============================================================================================================================
如果不知道怎么配置java Web项目,可以移驾到我的上篇博客(一步步教你使用MyEclipse搭建java Web项目开发环境(一)),下面我们详细介绍Servlet的基础知识。
==============================================================================================================================
解读API对于拒绝学习API的程序员们是一种煎熬,但它却是我们学习和进步的最好工具,且学且珍惜。
大家可以在点进去看一看,从上图,可以看出Servlet接口定义三个实现类,分别是FacesServlet, GenericServlet, HttpServlet。下面我们简单的介绍一下。
(1)FacesServlet是一个用于管理利用JSF(JavaServer Faces)构建用户界面的web应用程序请求处理生命周期的Servlet。(FacesServletis a servlet that manages the request processing lifecycle for web applications that are utilizing JavaServer Faces to construct the user interface.),大家如果想深入的学习,可以点这里。
(2)GenericServlet是HttpServlet的父类,包含了servlet的常用方法。GenericServlet使得程序员写servlets更加简单,它提供了初始化和销毁生命周期的方法,以及实现了写日志文件的方法。
(3)HttpServlet指能够处理HTTP请求的servlet。这是开发人员在编写Servlet时,通常应继承这个类即可。
对于这三个实现类,只为大家做一个简单的介绍,如果想深入的研究,直接看API就好。
客户端通过URL地址访问web服务器中的资源,所以若想访问Servlet必须要把servlet程序映射到一个URL地址上,在web.xml文件中使用
*
*
在servlet映射到URL有两种格式:
1.“*.扩展名”
2.以正斜杠(/)开头并以“/*”结尾。
servlet对url的匹配规则以及路径问题,大家可以上网查,有很多相关的资料,例如:http://blog.csdn.net/xh16319/article/details/8014107
servlet程序是由web服务器调用,web服务器实现了对servlet生命周期的管理。servlet的生命周期分为四步:
1)实例化以及加载servlet,new的过程。
2)初始化init(ServletConfig)。
3)处理请求,调用servlet的service,doget,dopost方法将Request和Response,作为参数传递。
4)退出服务,调用destory方法释放资源。
注意:
1、servlet只实例化一次。感觉有点单例模式的意思,大家可以研究一下Tomcat的实现原理。
2、init方法也只执行一次。servlet实例只创建一次,所以init初始化只调用一次。
当多个客户端并发访问同一个Servlet时,web服务器会为每一个客户端的访问请求创建一个线程,并在这个线程上调用service方法,因此,service方法内如果访问了同一个资源的话,就有可能引发线程安全问题。大家重点理解下面两句即可:
(1) Servlet是单实例多线程的,如果存在可以修改的成员变量将会出现线程安全问题。
(2) 使用Servlet最好保证Servlet是无状态的,也就是没有可以修改的成员变量。
这篇博文只是介绍了Servlet基础知识,大家还有什么疑问可以给我留言,我会及时给大家解决。
=============================================================================================================================
下篇博文,我们做一个JDBC连接Oracle数据库的实例,欲知后事如何,请看下回分晓!
=============================================================================================================================