定义:server applet 运行在服务器的小程序
servlet就是一个接口,定义了java类被浏览器访问到(tomcat)识别的规则;实现servlet接口复写其中的方法就称这个类为一个servlet。
步骤:
1.创建javaEE项目
2.定义一个类实现servlet接口
3.实现接口中的抽象方法
4.配置servlet
在web.xml中配置:
<servlet>
<servlet-name>demo01</servlet-name>
<servlet-class>com.fengqi.web.servlet.ServletDemo01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo01</servlet-name>
<url-pattern>/demo01</url-pattern>
</servlet-mapping>
执行原理
1.当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
2.查找web.xml文件是否有对应的标签体内容
3.如果找到则再找到对应全类名
4.tomcat会将全类名对应的字节码文件加载进内存并且创建其对象
5.调用其方法
Servlet的生命周期(servlet中的方法)
1.创建:被创建时会执行init()方法并且只执行一次
默认情况下第一次被访问时servlet被创建
可以指定(配置)servlet的创建时机,在web.xml的servlet标签中添加值,当值为负数时第一次被访问时servlet被创建(默认为负值),当值为0或整数时服务器被启动时servlet被创建
注意:Servlet的init方法只执行一次,说明一个Servlet在n内存中只存在一个对象(Servlet是单例的);多个用户同时访问可能存在线程安全问题
解决:尽量不要在Servlet中定义成员变量,即使定义了也不要对其修改
2.提供服务:执行service()方法,可以执行多次
每次访问Servlets时service()方法都会被调用一次
3.销毁:执行destroy方法()也只执行一次
Servlet被销毁之前执行destroy,服务器被关闭时Servlet被销毁,只有服务器正常关闭时才会执行destroy()方法
Servlet3.0
支持注解配置,可以不需要web.xml了
步骤:
1.创建javaEE项目,选择Servlet版本3.0以上,可以不创建web.xml
2.定义一个类实现Servlet接口
3.复写方法
4.在类上使用@webServlet注解进行配置,如:@WebServlet("/demo01"),/demo01是资源路径
IDEA与tomcat的相关配置
-
IDEA会为每一个tomcat部署的项目单独建立一份配置文件
查看控制台的log:Using CATALINA_BASE: “C:\Users\niefengqi.IntelliJIdea2018.2\system\tomcat_basic-code” -
工作空间项目和tomcat部署的web项目
tomcat真正访问的是“tomcat部署的web项目”,“tomcat部署的web项目"对应着"工作空间项目” 的web目录下的所有资源
WEB-INF目录下的资源不能被浏览器直接访问。
Servlet的体系结构
Servlet(接口)<-GenericServlet(抽象类)<-HttpServlet(抽象类)
GenericServlet:将Servlet接口中的其他方法作了默认空实现,只将service方法作为抽象
HttpServlet:对Http协议的一种封装,简化使用(推荐使用)
使用步骤:
1.定义类继承HttpServlet
2.复写doGet(),doPost()方法
Servlet注解配置
1.WebServlet注解的属性urlPatterns的值是一个数组,所以Servlet的访问路径可以有多个
2.访问路径的定义规则:
①/xxx(推荐使用)
②/xxx/xx:多层路径目录结构
③*.do(do为自定义,可以用其他代替do,星号前面不能加反斜杠)