Servlet:html
一、概念:Servlet:server applet ,运行在服务器端的小程序。web
浏览器在访问服务器的动态资源时,访问的是具备逻辑性的Java代码(Java类),而这里的Java类依 赖于服务器才能运行(tomcat执行它),而这些Java类须要遵循一些规则,tomcat才能识别它并执行它,而这些规则就是Servlet。小程序
* Servlet就是一个接口,定义了Java类能被浏览器访问到(tomcat识别)的规则。浏览器
二、快速入门:tomcat
一、建立JavaEE项目。安全
二、定义一个类,实现Servlet接口。服务器
三、实现接口中的抽象方法。app
四、配置Servlet:url
<servlet> <servlet-name>demo1</servlet-name> <servlet-class>servlet.ServletDemo1</servlet-class> </servlet> <servlet-mapping> <servlet-name>demo1</servlet-name> <url-pattern>/demo1</url-pattern> </servlet-mapping>
三、Servlet执行原理。spa
一、http://localhost:8080/Tomcat/demo1 浏览器访问服务器,并试图获取资源。
二、查找web.xml,看<url-pattern>里有没有demo1
三、若是有,找到对应<servlet-class>全类名。
四、tomcat将该类的字节码文件加载进内存,并建立其对象。
五、调用该对象的方法。
四、Servlet中的生命周期。
一、被建立:执行 init 方法,只执行一次。
* Servlet何时被建立?
* 默认,第一次访问时,Servlet被建立。
* 能够配置Servlet的建立时机。
一、第一次被访问时建立:<load-on-startup>的值为负数。
二、服务器启动时建立:值为0或正数。
* Servlet的 init 方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的。因此在多个用户访问时,可能存在线程安全问题。
* 解决:尽可能不要在Servlet中定义成员变量。即便定义了,不要对其修改值。
二、提供服务:执行service 方法,执行屡次。
* 每次访问Servlet时,service方法被调用一次
三、被销毁:执行 destroy 方法,只执行一次。
* 服务器关闭时(正常关闭),在Servlet销毁以前被执行,通常用于释放资源。
四、Servlet3.0.
好处:支持注解配置。能够不用web.xml。
步骤:一、建立JavaEE项目,选Servlet3.0及以上版本,可不建立web.xml
二、定义类实现接口,重写方法。
三、类上使用@WebServlet 注解来配置:@WebServlet("资源路径")。
五、IDEA和tomcat的相关配置。
一、IDEA会为每一个tomcat部署的项目单独创建一份配置文件。
* 查看控制台的 Using CATALINA_BASE:
二、项目有两个地方存储:工做空间项目 和 tomcat部署的web项目。
* tomcat真正访问的是 “tomcat部署的web项目“ ,该项目对应着工做空间项目的web目录下的全部资源。
三、tomcat断点调试:点小虫子来启动debug。
六、Servlet体系结构。
Servlet接口 <---GenericServlet 抽象类 <-- HttpServlet 抽象类。
*GenericServlet:将Servlet接口的其余方法做了默认实现,只将service()方法做为抽象方法,因此之后定义Servlet类时,能够继承该抽象类,实现service()方法便可。
*HttpServlet :对http协议的一种封装,简化操做(判断请求类型) 经常使用
实现:一、定义类继承HttpServlet 二、复写doGet/doPost 方法。
七、Servlet相关配置。
一、urlPartten:Servlet访问路径。
* 一个Servlet能够定义多个访问路径。
* 路径定义规则:一、/XXX 二、/xxx/xxx 三、*.do
八、HTTP。
一、概念:Hyper Text Transfer Protocol 超文本传输协议。
传输协议:定义了客户端和服务器通讯时,发送数据的格式。
* 特色:一、基于TCP/IP的高级协议。
二、默认端口号:80
三、基于请求/响应模型的: 一次请求对应一次响应。
四、无状态的 :每次请求之间相互独立,不能交互数据。
二、请求消息数据格式。
一、请求行:请求方式 请求url 请求协议/版本 : GET /login.html HTTP/1.1
二、请求头:浏览器告诉服务器一些信息。 请求名称:请求值
常见的请求头:一、User-Agent:告诉服务器浏览器的版本信息。
二、Referer:告诉服务器,当前请求从哪里来。做用:防盗链、统计。
三、请求空行:空行,用来分隔。
四、请求体(正文):封装POST请求消息的请求参数的。