Servlet: server applet
* 概念:运行在服务器端的小程序
* Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则
* 将来我们定义个类,去实现Servlet接口,覆写方法
-
快速入门:
-
创建JavaEE项目
-
定义一个类,去实现Servlet接口
public class ServletDemo01 implements Servlet{} -
实现接口的方法
-
配置Servlet
在web.xml中配置 <!--配置servlrt--> <servlet> <servlet-name>demo1</servlet-name> <servlet-class>cn.study.web.servlet.ServletDemo01</servlet-class> </servlet> <servlet-mapping> <servlet-name>demo1</servlet-name> <url-pattern>/demo1</url-pattern> </servlet-mapping>
-
-
Servlet的执行原理
- 当服务器接收到客户端浏览的请求时,会解析请求的URL路径,获取访问Servlet的资源路径
- 查找web.xml文件,是否有对应的标签体内容
- 如果有,则再查找到对应的全类名
- tomcat会将字节码文件加载到内存,并创建其对象
- 调用其方法
-
Servlet中的生命周期方法
- 被创建:执行init方法,只执行一次
- Servlet什么时候被创建?
- 默认情况下,第一次被访问的时候,Servlet被创建
- 可以配置执行Servlet的时机
在web.xml中的标签中配置
标签体中设置为负数是第一次被访问创建
正整数则是服务器启动时创建
- Servlet的init方法,只执行一次,说明一个Servlet中在内存只存在一个对象,Servlet是单例的
- 多个用户同时访问时,可能存在线程安全问题
- 解决:尽量不要在Servle中定义成员变量,即使定义的成员变量,也不要赋值
- Servlet什么时候被创建?
- 提供服务:执行service方法,执行多次
*每次访问Servlet,service都会被调用一次 - 被销毁:执行destory方法,只执行一次
- Servlet被销毁时进行。服务器被关闭执行
- 只用服务器正常关闭时,才会执行destoty方法
- destroy方法在Servlet被销毁之前执行,一般用来释放资源
- 被创建:执行init方法,只执行一次
-
Servlet3.0:
支持注解配置,可以不需要web.xml配置文件
步骤:
1. 创建JavaEE项目,选择支持Servlet3.0的版本,选择不去创建web.xml
2. 定义一个类去实现Servlet接口
3. 覆写方法
4. 在类上使用@WebServlet注解进行配置
*@WebServlet(“资源路径”)源码: public @interface WebServlet { String name() default ""; String[] value() default {}; String[] urlPatterns() default {}; int loadOnStartup() default -1; WebInitParam[] initParams() default {}; boolean asyncSupported() default false; String smallIcon() default ""; String largeIcon() default ""; String description() default ""; String displayName() default ""; }
IDEA与tomcat的相关配置
- IDEA为每一个tomcat部署的项目单独建立一个配置文件
- 查看控制台的log:Using CATALINA_BASE: “C:\Users\wxt.IntelliJIdea2017.2\system\tomcat_javaweb_2”
- 工作空间项目 和 tomcat部署的web项目
- tomcat真正访问的时“tomcat部署的web项目”,“tomcat部署的web项目”对应这“工作空间项目”的web目录下的所有资源
- WEB-INF目录下的资源不能被浏览器直接访问
- 断点调试:使用“小虫子”启动 dubug 启动