Servlet开发简介

Servlet开发

Servlet简介

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

Sun公司在其API中提供了一个servlet接口2个步骤开发动态web资源:

1.编写一个java类,实现servlet接口

2.把开发好的java类部署到web服务器中
Servlet API
接口Interface Servlet
实现类Class GenericServlet Class HttpServlet

1.在tomcat新建一个web应用,在web应用中新建一个web-inf/classes目录
2.在classes目录中新建一个Servlet
3.set classpath-%classpath%;.....servlet.jar 编译Servlet
4.在web-inf目录中新建一个web.xml文件,配置servlet的对外访问路径
5.启动tomcat,访问

Servlet的运行过程

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

UML图描述调用过程

Servlet的生命周期

在Eclipse中开发Servlet

在eclipse中新建一个web project工程 eclipse会自动创建目录结构


web工程名example:工程部署时,在webapps目录下就会有一个example的web应用
src:Java程序的开发目录,该目录下编写的所有程序在部署时,会自动部署到example/web-inf/classes目录下
webroot:对应web应用的根目录,该目录下的所有子目录和子文件在部署时,会原封不动的发布到web应用目录下

Servlet两个默认实现类

GenericServlet HttpServlet


HttpServlet指能够处理HTTP请求的servlet,它在原有的Servlet接口上添加了一些与HTTP协议处理方法,通常继承这个类
HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式
GET请求--调用HTTPServlet的doGet方法
Post请求--调用doPost方法
因此开发人员只需要覆写doGet或doPost方法,而不用覆写service方法



Servlet开发的一些重要细节

重构 Refactor--Rename


1.客户端通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上

这通过web.xml文件中使用<servlet>和<servlet-mapping>元素完成

<servlet>用于注册Servlet 包含2个主要的子元素<servlet-name>注册名称<servlet-class>完整类名

<servlet-mapping>用于映射一个已注册的Servlet的一个对外访问路径 包含2个子元素 <servlet-name>注册名称<url-pattern>对外访问路径


2.同一个Servlet可以被映射到多个URL上 多个<servlet-mapping>的<servlet-name>设置值可以说同一个Servlet的注册名

Servlet映射到的URL也可以使用*通配符 两种固定格式 *.扩展名/*自动重新加载 context.xml里面配置监听web.xml资源


3.映射冲突问题 谁长得更像匹配到哪个Servlet*在前面优先级最低(*.扩展名优先级最低)


4.Servlet是一个供其他Java程序(Servlet引擎,web服务器)调用的Java类,不能独立运行, 完全由Servlet引擎来控制和调度

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

Servlet整个生命周期中init方法只被调用一次,每次访问都调用一次service方法,创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象

(request,response的生命周期很短 不是并发内存不会有压力)

然后作为参数传递给service()方法,service方法再根据请求方式分别调用doXXX方法


5.<servlet>中配置了一个<load-on-startup>元素,那么WEB应用程序启动时(不是访问时),就会装载并创建Servlet的实例对象,以及调用Servlet实例对象的init()方法

<load-on-startup>1(数字越小优先创建 >0的正整数)</load-on-startup>

应用在为web应用写一个InitServlet,配置为启动时装载,为整个web应用创建必要的数据库表和数据(提高访问速度)


6.映射路径为正斜杠(/),这个Servlet就成为当前Web应用程序的缺省Servlet

凡是找不到匹配的<servlet-mapping>都交给缺省Servlet处理

tomcat中注册了org.apache.catalina.serlets.DefaultServlet为缺省Servlet

当访问tomcat服务器中某个静态HTML文件和图片时,实际上是在访问这个缺省Servlet 

访问页面都是访问Servlet来访问页面 缺省Servlet先找静态资源,没有回送错误信息(404...)

在整个服务器配置文件web.xml中写的缺省Servlet 被所有web工程共享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值