一.Servlet
1.1.概述
sun提供的一种动态web资源开发技术。本质上就是一段java小程序,可以将servlet加入到servlet容器中运行。
*Servlet容器--能够运行Servlet的环境就叫做Servlet容器---tomcat是其中之一
*web容器--能够运行web应用的环境就叫做web容器(注意:Servlet容器是web容器的子集)
1.2.写一个类实现sun公司定义的servlet接口
1.2.1.类的实现
直接引用子类GenericServlet(这样就只需要实现public void service(ServletRequest req, ServletResponse res))
1.2.2.将写好的类配置到tomcat中web应用中
将编译好的class文件放到webapp的WEB-INF\class中,并且为其配置web.xml(WEB-INF的模板有例程,可以复制),如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<servlet>
<servlet-name>FIRST_SERVLET</servlet-name><!-- 这是servlet的名字-->
<servlet-class>com.mai.FirstServlet</servlet-class><!--class文件的路径-->
</servlet>
<servlet-mapping>
<servlet-name>FIRST_SERVLET</servlet-name><!--通过名字关联servlet-->
<url-pattern>/servlet/FirstServlet</url-pattern><!--网址上URL的访问路径-->
</servlet-mapping>
</web-app>
1.3.Servlet的调用过程/生命周期
1.4.Servlet的继承结构
1.4.1.Servlet接口---定义了Servlet应该具有的基本方法
--GenericServlet---通用基本servlet实现,对于不常用的方法在这个实现类中进行基本的实现,对于servlet设计为了抽象方法,需要子类实现
--HttpServlet---在通用servlet的基础上基于HTTP协议进行了进一步的强化,实现了GenericServlet的servlet方法,并且判断请求方式,依据请求方式,调用对应的doXXX();这样我们开发servlet的过程中,只需集成HTTPservlet,覆盖具体要处理的DOXXX(),就可以根据不同的请求方式进行不同的处理;一般不覆盖servlet(),只需覆盖doget()/dopost()就可以了。
1.5.Servlet的细节问题
1.5.1.一个<servlet>可以对应多个<servlet-mapping>,从而实现一个servlet可以有多个路径
1.5.2.url-partten中的路径可以使用*号匹配符进行配置,但是注意,只能是以/开头 /*结尾或*,后缀这里有两种方式;由于*的引入,有可能一个路径被多个urlpartten匹配,优先级如下:(1)哪个像找哪个;(2)*.后缀永远优先级最低.
1.5.3.<serlvet>可以配置<load-on-startup>可以用来指定启动顺序
1.5.4.缺省serlvet:
如果有一个servlet的url-partten被配置为一道"/",这个servlet就变成了默认servlet,其他servlet不处理的请求都由缺省servlet处理.其实对于静态资源的访问就是由缺省servlet来执行,设置404页面等提示也是由缺省servlet处理;通常我们不会自己去配置缺省servlet
1.5.5.线程安全问题
由于默认情况下servlet在内存中只有一个对象,当多个浏览器并发访问