Servlet:
Java类必须符合一定的规范:
1.必须继承javax.servlet.http.HttpServlet
2.重写其中的doGet()或doPost()方法
doGet():接受并处理所有get提交方式的请求
doPost():接受并处理所有Post提交方式的请求
Servlet要想使用,必须配置
servlet2.5:web.xml:
项目的根目录:WebContent,src
<a href="welcomeservlet">所在的jsp是在WebContent目录中,因此发出的请求welcomeservlet,是去请求项目的根目录
servlet中servlet-name与servlet-mapping中servlet-name的名字要保持一致
Servlet流程:
请求-> <url-pattern> -> 根据<servlet-mapping>中的<servlet-name>去匹配<servlet>中的<servlet-name>,然后寻找到<servlet-class>,最终将请求交由该<servlet-class>执行。
servlet3.0:@WebServlet
不需要在web.xml中配置,但需要在Servlet类的定义处之上编写注解@WebServlet("url-pattern的值")
servlet流程:
请求地址与@WebServlet中的值进行匹配,如果匹配成功,则说明请求的就是该注解所对应的类
项目根目录:WebContent,src(所有的构建路径)
例如:WebContent中有一个文件index.jsp,src中有一个Servlet.java
如果:index.sp中请求<a href ="abc"">...</a>,则寻找范围:既会在src根目录中找,也会在WebContent根目录中找
如果是<a href ="a/abc"">...</a>,先在src,WebContent中找a,再在a目录中找abc
/:
在web.xml中:/在开头出现代表的是项目路径
在jsp中的:/在开头代表服务器根路径
servlet生命周期:5个阶段
加载
初始化:init(),servlet被加载并实例化以后 执行
服务:service() ->doGet doPost
销毁:destroy(),Serlet被系统回收时执行
卸载
加载与卸载是servlet容器自动处理
init()
1.第一次访问servlet时会被执行,并且只执行这一次
2.可以修改为tomcat启动时自动执行
a.Servlet2.5
在web.xml中写
<servlet>
.......
<load-on-startup>1</load-on-startup>
</servlet>
其中的“1”代表tomcat启动时的执行顺序,1,2,3...
b. Servlet3.0
在注解里面,写上
@WebContentServlet(Value="/文件名",loadOnStartup=1)
service() ->doGet doPost调用几次就执行几次
destroy() :关闭tomcat服务时,执行一次。