Servlet简介以及通过配置⽂件和注解两种⽅式部署Servlet
Servlet简介
(1)Servlet技术简介
a.Servlet技术是Sun公司提供的⼀种实现动态⽹页的解决⽅案,它是基于Java编程语⾔的WEB服务器端编程技术。
b.Servlet技术也是JSP技术(另外⼀种动态⽹页开发技术)的基础。
c.⼀个Servlet程序就是⼀个实现了特殊接⼝的Java类,它由⽀持Servlet(具有Servlet引擎)的WEB服务器调⽤和启动运⾏。Web服务器可以把⼀个或⼀组URL地址的访问请求交给某个的Servlet程序去处理,Servlet可以接收到客户端的请求信息和产⽣响应内容。
d.Applet是⽤于浏览器端的Java⼩程序,Servlet是⽤于WEB服务器端的Java⼩程序。
e.Servlet程序可以完成普通Java程序所能完成的⼤多数任务:
(e-1)获取客户端通过HTML的FORM表单递交的数据和URL后⾯的参数信息
(e-2)创建对客户端的响应消息内容
(e-3)访问服务器端的⽂件系统
(e-4)连接数据库并开发基于数据库的应⽤
(e-5)调⽤其它的Java类
(2)Servlet API介绍
(3)编写Servlet程序
a.⼀个Servlet程序就是⼀个实现了javax.servlet.Servlet接⼝的Java类,Servlet接⼝定义了Servlet引擎与Servlet程序之间通信的协议约定。
b.javax.servlet.GenericServlet类实现了Servlet接⼝,它实现了Servlet程序的基本特征和功能。
servlet和tomcat的关系c.javax.servlet.http.HttpServlet类是GenericServlet的⼦类,它在GenericServlet类的基础上进⾏了⼀些针对HTTP特点的扩充。
客户端每次访问⼀个⽀持HTTP的Servlet程序时,Servlet引擎都将调⽤Servlet的service⽅法来进⾏处
理。service⽅法接受两个参数,⼀个是⽤于封装HTTP 请求消息的对象,其类型为HttpServletRequest,另⼀个是代表HTTP响应消息的对象,其类型为HttpServletResponse。
调⽤HttpServletResponse对象的getWriter⽅法可以获得⼀个⽂本输出流对象,向这个流对象中写⼊的数据将作为HTTP响应消息的实体内容部分发送给客户端。
(4)Servlet的注册与运⾏
a.Servlet程序必须通过Servlet引擎来启动运⾏,并且储存⽬录有特殊要求,通常需要存储在<WEB应⽤程序⽬录>\WEB-INF\classes\⽬录中。
b.Servlet程序必须在WEB应⽤程序的l⽂件中进⾏注册和映射其访问路径,才可以被Servlet引擎加载和被外界访问。
c.⼀个<servlet>元素⽤于注册⼀个Servlet,它包含有两个主要的⼦元素:<servlet-name>和<servlet-class>,分别⽤于设置Servlet的注册名称和Servlet的完整类名。
d.⼀个<servlet-mapping>元素⽤于映射⼀个已注册的Servlet的⼀个对外访问路径,它包含有两个⼦元素:<servlet-name>和<url-pattern>,分别⽤于指定Servlet的注册名称和Servlet的对外访问路径。
e.同⼀个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>⼦元素的设置值可以是同⼀个Servlet的注册名。
f.同⼀个Servlet类可以被注册多次,即创建出这个Servlet类的多个实例对象。
g.在Servlet映射到的URL中也可以使⽤*通配符,但是只能有两种固定的格式:⼀种格式是“*.扩展名”,另⼀种格式是以正斜杠(/)开头并以“/*”结尾。带扩展名的*前不能有“/”,即不能设置为“/action/*.xx”形式。
(5)Servlet映射的最具体匹配原则---servlet匹配最接近的
对于如下的⼀些映射关系:
/abc/*  映射到  Servlet1
/*      映射到  Servlet2
/abc    映射到  Servlet3
*.do    映射到  Servlet4
当请求URL为“/abc/a.html”,“/abc/*”和“/*”都可以匹配这个URL,
Servlet引擎将调⽤Servlet1。
当请求URL为“/abc”时,“/abc/*”和“/abc” 都可以匹配这个URL,
Servlet引擎将调⽤Servlet3。
当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都可以匹配这个URL,
Servlet引擎将调⽤Servlet1。
当请求URL为“/a.do”时,“/*”和“*.do”都可以匹配这个URL,
Servlet引擎将调⽤Servlet2。
当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都可以匹配这个URL,
Servlet引擎将调⽤Servlet2。
(6)缺省Servlet
如果某个Servlet的映射路径仅仅为⼀个正斜杠(/),那么这个Servlet就成为当前Web应⽤程序的缺省Servlet;
凡是在l⽂件中不到匹配的<servlet-mapping>元素的URL,它们的访问请求都将交给缺省Servlet处理,也就是说,缺省Servlet⽤于处理所有其他Servlet都不处理的访问请求;
在<tomcat的安装⽬录>\l⽂件中,注册了⼀个名称为org.apache.catalina.servlets.DefaultServlet的Servlet,并将这个Servlet设置为了缺省Servlet;
当访问Tomcat服务器中的某个静态HTML⽂件和图⽚时,实际上是在访问这个缺省Servlet。
(7)Servlet的特点
a.Servlet是⼀个供其他Java程序(Servlet引擎)调⽤的Java类,它不能独⽴运⾏,它的运⾏完全由Servlet引擎来控制和调度。
b.Servlet引擎是⼀种容器程序,它负责管理和维护所有Servlet对象的⽣命周期。Servlet的加载、执⾏流程、以及如何接收客户端发送的数据和如何将数据传输到客户端等具体的底层事务,都是由Servlet引擎来实现的。Servlet引擎负责将客户端的请求信息转交给Servlet和将Servlet⽣成的响应信息返回给客户端。
c.Servlet属于⼀种插件,它是⼀个提供了⼀些约定⽅法供容器去调⽤的类,它只负责在⾃⾝的⽅法中接受并处理容器传递进来的数据,以及⽣成并返回给容器去使⽤的数据和状态信息。
d.Servlet的最常见应⽤在于读取WEB浏览器传递给WEB服务器的参数和⽣成WEB服务器返回给WEB浏览器的动态⽹页⽂档内容;Serlvet也能获取WEB浏览器发送的HTTP请求消息中的各个请求头和请求⾏信息,以及⽣成⽤于WEB服务器发送的HTTP响应消息中的状态⾏和响应头信息;Serlvet还能获取WEB服务器和Servlet引擎⾃⾝的⼀些环境和状态信息。
e.Servlet程序的运⾏过程就是它与Servlet引擎的交互过程,Servlet程序只与Servlet引擎打交道,它并不与Web服务器和客户端进⾏任何直接的交互。  Servlet本⾝就是Java语⾔的⼀个应⽤,具有Java语⾔的所有优势,能完成普通Java程序所能完成的所有功能。
Web服务器上可以布置多个功能各不相同的Servlet,每个Servlet 都应宣称它可以处理何种样式的URL,当符合样式的URL请求到达时,Servlet引擎调⽤相应的Servlet进⾏处理。
(8)通过注解部署Servlet
@WebServlet(name="",urlPatterns={"/my"})-------通过WebServlet注解类型来声明⼀个Servlet。
name属性是可选的,如果有⼀般是⽤来提供Servlet类的名称,关键是urlPatters属性,也是可选的,
但是⼏乎都会⽤到它,通过/my调⽤这个Servlet。
如果同时使⽤注解和l部署Servlet时,注解会不起作⽤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。