第3.41课 上课 Servlet的定义和配置, 什么是Servlet?, 如何…
3_41

Servlet的定义和配置
什么是Servlet?
1.动态网页技术:
--PHP:比较老,但是生命力依然顽强,他是纯粹的动态脚本语言
--ASP、ASP.NET:微软的动态网页技术
--CGI:古老的动态网页技术,一个请求对应一个进程
--RUBY:纯粹的脚本语言
--JSP:Java Server Page (Java服务器语言)
2.一句话,Servlet是运行在web服务器中的一个Java类。通常,Servlet用户接收和响应客户端的Http请求。
3.HTTP请求的流程:
请求 解析请求消息
浏览器 -------> 服务器 ---------------> 调用servlet
<-------- <---------------
返回消息 生成响应消息
如何写一个Servlet?
用浏览器访问Servlet
servlet-mapping
告诉Tomcat,哪个URL由对应的Servlet进行处理,根据Servlet简短的名字来进行关联。

修改web.xml
servlet
用来告诉tomcat哪个类是实现Servlet接口的类,并且起一个简短名字

servlet-mapping
告诉Tomcat,哪个URL由对应的Servlet进行处理,根据Servlet简短的名字来进行关联

Servlet调用过程
例如:在浏览器输入http://127.0.0.1:8080/ebuy/login后,首先,
1.Tomcat服务器接收到请求后,获取请求的URL,然后找到/ebuy对应WEB应用;
2.找WEB应用中web.xml,匹配servlet-mapping,看有没有能够匹配后面一段“/login”;
3.匹配到servlet-mapping以后,可以找到servlet-name,然后根据servlet-name找servlet-class;
4.找到servlet-class,初始化servlet实例;
5.调用servlet实例的service方法;
Servlet映射的规则
映射url-pattern规则
映射url-pattern规则:
1)开头必须是“/”或者是“*.”;
2)“*.<精确匹配部分>”表示URL以“.<精确匹配部分>”结尾。
例如,LoginServlet.do就配置成*.do;
3)“/*”表示匹配该WEB应用下所有的URL(缺省Servlet);
4)Servlet的URL进行匹配时,如果匹配到了一个符合的url-pattern,后续的url-pattern将不再进行匹配;
5)一个Servlet类可以有多个mapping;
6)映射的时候注意:servlet-name必须要和servlet元素里面的相等;

映射匹配的优先级
映射匹配的优先级:
1)“/”开头优先匹配,按精度优先的原则,找到第一个以后,不会匹配后面的;
2)“*.”开头的,总是在后面的匹配;
例如:
对于如下的一些映射关系:
Servlet1 映射到 /abc/*
Servlet2 映射到 /abc
Servlet3 映射到 *.do
URL匹配情况:
当请求URL为“/abc/a.html”,“/abc/*”匹配,Servlet引擎将调用Servlet1;
当请求URL为“/abc”时,“/abc”匹配,Servlet引擎将调用Servlet2;
当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”匹配,Servlet引擎将调用Servlet1。因为“/”优先匹配,所以Servlet3不会被调用;
当请求URL为“/a.do”时,“*.do”匹配,Servlet引擎将调用Servlet3;
浙公网安备 33010602011771号