学习一下Servlet和Http协议

198 阅读3分钟

Servlet

概念

Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。

步骤

1、编写一个servlet:

① a.继承HttpServlt
  b.重写doGet或doPost方法
② a.编写配置文件(WEB-INF/WEB.xml)
  servlet-name:给Servlet起一个名字,全局唯一
  servlet-class:保存Servlet的全限定名,复制即可
  b.绑定路径
  servlet-name:使用上面起的名字即可
  url-pattern:访问路径,以 "/"开头,唯一
③ 访问
  HTTP://主机:端口号/项目号/路径

2、接受参数: key=value

String value = request.getParameter(key);
如:http://localhost/hello?username=tom
request.getParameter(username);  获取成功

3、向浏览器回写内容

resp.setContentType("text/html;charset=utf-8");
resp.getWrite().print("数据"+value);

执行原理

分为三个阶段:初始化、运行、销毁

初始化阶段

1、Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。

2、Servlet容器创建一个ServletConfig对象。ServletConfig对象包含了Servlet初始化配置信息。

3、Servlet容器创建一个servlet对象

4、Servlet容器调用servlet对象的init方法进行初始化

运行阶段

当servlet容器接收到一个请求时,servlet容器会针对这个请求创建servletRequest、servletResponse对象。 然后调用service方法。并把这两个参数传递给service方法。

Service方法通过servletRequest对象获得请求的信息。并处理该请求。再通过servletResponse对象生成这个请求的响应结果。

然后销毁servletRequest和servletResponse对象。我们不管这个请求是post提交的还是get提交的,最终这个请求都会由service方法来处理。

销毁阶段

当Web应用被终止时,servlet容器会先调用servlet对象的destrory方法,然后再销毁servlet对象,同时也会销毁与servlet对象相关联的servletConfig对象。我们可以在destroy方法的实现中,释放servlet所占用的资源,如关闭数据库连接,关闭文件输入输出流等。

生命周期

servlet生命周期方法

void init(ServletConfig config):初始化当前Servlet
void service(ServletRequest req,ServletResponse res):服务方法
void destroy():销毁方法

生命周期方法的执行顺序

执行构造器创建对象->执行init方法执行初始化操作->执行service方法->执行destroy进行资源销毁

注意:1、Servlet必须保留一个公共的无参构造,Servlet在应用中最多一个对象。
      2、初始化方法在第一次请求的时候执行
      3、service方法每次访问都会执行
      4、destroy方法在正常关闭服务器的时候执行

Servelet的体系结构

Servelet-接口

GenericServlet-抽象类

HttpServlet-抽象类

*GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法做为抽象

*将来定义Servlet时,可以继承GenericServlet,实现service()方法即可

*HttpServlet:对HTTP协议的一种封装,简化操作

1、定义类继承HttpServlet
2、重写doGet/doPost方法

Servelet相关配置

1、urlpattern:Servlet访问路径
   一个servlet可以定义多个访问路径:@Web({"/d4","/dd4","/ddd4"})
2、路径定义规则
   ①/xxx:路径匹配
   ②/xxx/xxx:多层路径,目录结构
   ③*.do:扩展名匹配

Http

概念

Hyper Txet Transfer Protocol 超文本传输协议

传输协议:定义了,客户端和服务端通信时,发送数据的格式

特点:①基于TCP\IP的高级协议 ②默认端号:80 ③基于请求/响应模型:一次请求对应一次响应 ④无状态的:每次请求之间相互独立,不能交互数据

请求信息和响应信息包括

请求:请求行、请求头、空行、消息体

响应:状态行、响应头、空行、消息体