一、Servlet简介

Servlet是sun公司提供的一门用于动态web资源的技术

sun公司在其API中提供了一个Servlet接口,用户若想开发一个动态web资源,需要完成两个步骤:

  1. 编写一个Java类,实现Servlet接口
  2. 把开发好的java类部署到web服务器中。

二、Servlet的运行过程

Servlet是由Web服务器调用,web服务器收到客户端的Servlet访问请求后:

  1. web服务器首先检查是否已经装载并创建了该Servlet的实例对象,如果是,则直接执行第4步,否则执行第2步
  2. 装载并创建Servlet的一个实例对象
  3. 调用Servlet实例对象的init()方法
  4. 创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表Http响应消息的HttpServletResponse对象,然后调用Servlet的service方法,并将请求和响应对象作为参数传进去。
  5. web应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destory方法

三、Servlet运行图

四、Eclipse开发创建Servlet

五、Servlet开发细节

  • Servlet访问URL映射设置

由于客户端是通过URL地址访问web服务器中的资源,所以Servlet若想被外界访问,必须把Serlvet程序映射到一个URL地址上,这个工作在web.xml文件中完成。

  <servlet>
   <!-- servlet-name是指servlet名字 -->
<servlet-name>ServletDemo1</servlet-name>
   <!-- servlet对应的类的完整类名 --> 
<servlet-class>com.atguigu.servlet.ServletDemo1</servlet-class>
</servlet>   <!-- 映射一个已经注册servlet的对外访问路径 -->
<servlet-mapping>
<servlet-name>ServletDemo1</servlet-name>
<url-pattern>/servletDemo1</url-pattern>
</servlet-mapping>
  • Servlet访问URL使用*通配符映射
  • Servlet与普通java类的区别

Servlet是一个供其他java程序调用的java类,它不能独立运行,它的运行完全是Servlet引擎来控制和调度。

针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其他请求服务,直至web容器退出,实例对象才销毁。

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

  • 缺省Servlet

如果某个Servlet的映射路径仅仅为一个 /  ,那么这个Servlet就成为当前web应用程序的缺省Servlet

  <servlet>
<servlet-name>ServletDemo2</servlet-name>
<servlet-class>com.atguigu.servlet.ServletDemo2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletDemo2</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

在tomcat的安装目录\conf\web.xml文件中,注册一个名称为org.apache.catalina.servlets.DefaultServlet的Servlet,这是一个缺省Servlet

    <servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

当访问tomcat中的某个静态HTML和图片时,实际上就是在访问这个缺省Servlet.

  • Servlet的线程安全问题

Servlet开发详解的更多相关文章

  1. Javaweb之 servlet 开发详解1

    1.1  Tip:Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个 ...

  2. EasyPR--开发详解(6)SVM开发详解

    在前面的几篇文章中,我们介绍了EasyPR中车牌定位模块的相关内容.本文开始分析车牌定位模块后续步骤的车牌判断模块.车牌判断模块是EasyPR中的基于机器学习模型的一个模块,这个模型就是作者前文中从机 ...

  3. 基于H5的微信支付开发详解

    这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现代码可 ...

  4. ****基于H5的微信支付开发详解[转]

    这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现代码可 ...

  5. 【转发】NPAPI开发详解,Windows版

    NPAPI开发详解,Windows版 9 jiaofeng601, +479 9人支持,来自Meteor.猪爪.hanyuxinting更多 .是非黑白 .Yuan Xulei.hyolin.Andy ...

  6. 热烈祝贺华清远见《ARM处理器开发详解》第2版正式出版

    2014年6月,由华清远见研发中心组织多名业 内顶尖讲师编写的<ARM处理器开发详解>一书正式出版.本书以S5PV210处理器为平台,详细介绍了嵌入式系统开发的各个主要环节,并注重实践,辅 ...

  7. 嵌入式Linux应用程序开发详解------(创建守护进程)

    嵌入式Linux应用程序开发详解 华清远见 本文只是阅读文摘. 创建一个守护进程的步骤: 1.创建一个子进程,然后退出父进程: 2.在子进程中使用创建新会话---setsid(): 3.改变当前工作目 ...

  8. iOS原生地图开发详解

    在上一篇博客中:http://my.oschina.net/u/2340880/blog/414760.对iOS中的定位服务进行了详细的介绍与参数说明,在开发中,地位服务往往与地图框架结合使用,这篇博 ...

  9. wpf 客户端【JDAgent桌面助手】开发详解(四) popup控件的win8.0的bug

    目录区域: 业余开发的wpf 客户端终于完工了..晒晒截图 wpf 客户端[JDAgent桌面助手]开发详解-开篇 wpf 客户端[JDAgent桌面助手]详解(一)主窗口 圆形菜单... wpf 客 ...

随机推荐

  1. CentOS6.6安装及配置vsftpd文件服务器

    1.安装vsftpd和db4-utils,后者用来生成密码库文件,命令如下: # yum install -y vsftpd db4* 2.修改SELINUX,命令如下: # vim /etc/sys ...

  2. update kernel 3.10-3.12

    安装包下载以及依赖包安装 1.到www.kernel.org下载3.12.48压缩包 2.tar xvf linux-3.12.48.tar.xz 3.sudo yum install ncurses ...

  3. python pymysql和orm

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 1. 安装 管理员打开cmd,切换到python的安装路径,进入到Scripts目录下(如:C:\Users\A ...

  4. robotium教材(一):robotium环境搭建

    博客Melon麦东=原创内容 目录: 1.基于无源码apk测试工程的搭建 2.基于有源码的测试工程搭建 3.遇到的问题(各种刨坑,各种尝试,网上水货回答真的太多,希望看见此文的同学你们是幸运的)   ...

  5. SSM——(二):easyUI的CRUD

    1.在WebContent下新建admin目录,添加index.html(用来显示user表的CRUD): 总结: 1.datagrid接收的必须是json数据: 2.使用分页插件会自动向后台传递St ...

  6. MySQL免安装的配置

    ①:下载并获取解压路径: ②:修改 my-default.ini: ③:管理员身份进入cmd,并cd到上面的路径(否则发生错误2,找不到文件): ④:忘记ROOT密码如何重置:

  7. web app响应式字体设置!rem之我见

    之前做沙漠教育的时候,直接以设计图为准,然后强暴式,缩放处理.简单.直接,粗暴!但是,开发快.……一劳永逸! 但那是,现在开发,作为业界良心:是不能那么做的!(那个是被逼的啊 首先看代码: @medi ...

  8. asp.net的mongodb实例

    mongodb为2.6版本, .net是4.0, c#接口时1.7. 运行环境为windows8 with visual studio2010 注意事项:在mongodb中使用地理位置存储信息且动用到 ...

  9. java图书管理的一个小模块(增删改查,不使用数据库)

    图书管理模块:某图书管需要对图书进行信息化管理,要求管理员能够进行新增图书,能按照书名进行模糊查看图书能进行价格统计 系统实现如下:1.新增2.查询3.统计价格 1请输入新书:图书号,书名,作者,价格 ...

  10. OA工作流规格--转

    工作流是整个OA系统的核心,也是BPM的核心,工作流到 底需要实现哪些功能,本文就此以用户的需求为蓝本进行阐述.工作流表面看起来是很简单的,无非是一个表单模板,一个流程定义,然后起草后根据设定的流程一 ...