servlet02 请求和响应的三大部分、servlet的原理

 

1 HTTP协议

  1.1 什么是http协议  

    超文本传输协议
    就是 W3C 指定的规范
    规定了浏览器和服务器怎么通信以及通信的数据格式

      

  1.2 怎么通信

    建立连接

    发送请求

    返回响应

    断开连接

2 请求数据和响应数据  的数据格式

3 开发者的工作

 1 package web;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 import java.text.SimpleDateFormat;
 6 import java.util.Date;
 7 import java.util.Enumeration;
 8 
 9 import javax.servlet.ServletException;
10 import javax.servlet.http.HttpServlet;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 
14 /**
15  * 请求数据和响应数据  的数据格式
16  *         1 请求数据
17  *             请求行 : 请求的基础信息
18  *             消息头 : 业务数据的描述
19  *            实体内容 : 具体的业务数据
20  *        2 相应数据
21  *            状态行 : 响应的基础信息
22  *            消息头 : 业务数据的描述
23  *            实体内容 : 具体的业务数据
24  *
25  * 对于开发者而言需要做些什么
26  *         1 不需要开发者做的
27  *             浏览器和服务器通信(即:建立连接和打包/发送数据)的过程已经由他们实现了
28  *            请求数据的请求行和消息头都由浏览器实现了
29  *            响应数据的状态行和大部分消息头都由服务器实现了
30  *        2 需要开发者做的
31  *            请求及响应的业务数据由开发者提供(其实对数据业务的逻辑处理对于一个开发者而言是最重要的)
32  *            使用 request 处理请求数据, 使用 response 处理响应数据
33  * @author Administrator
34  *
35  */
36 public class Work extends HttpServlet {
37 
38     protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
39 //        1 请求数据  -->> 通过 request 实例操作请求(request实例是服务器的通信组件根据需要自动创建的,传入的形参 req 就是一个request 的实例)
40 //            1.1 请求行  -->> 由浏览器的通信组件实现
41         System.out.println("请求方式:" + req.getMethod());
42         System.out.println("访问路径:" + req.getServletPath());
43         System.out.println("协议类型:" + req.getProtocol());
44 //            1.2 消息头  -->> 由浏览器的通信组件实现
45 //                > 消息头的内容是按照 key-value 的形式进行存储的
46 //                public Enumeration<String> getHeaderNames();
47 //                    该方法可以返回请求实例 request 的头部信息的名字,返回值是一个迭代器 (Enumeration是更加古老的迭代器)
48         Enumeration<String> e = req.getHeaderNames();
49         while(e.hasMoreElements()) { // 利用迭代器模式获取头部信息的 key 值 (JDBC中获取结果集时也是利用的迭代器模式)
50             String key = e.nextElement(); // 获取下一个 (开始时是在第一个前面)
51             String value = req.getHeader(key); // 获取到 key 值后再通过 request 的方法获取 value 值
52             System.out.println(key + " -->> " + value);  // 打印输出
53         }
54         
55 //            1.3 实体内容  -->> 由开发人员实现
56 //                本案例没有实体内容
57         
58 //        2 相应数据  -->> 通过 response 实例操作请求(response实例是服务器的通信组件根据需要自动创建的,传入的形参 res 就是一个response的实例)
59 //            2.1 状态行  -->> 由服务器的通信组件实现
60 //                服务器会自动填写
61 //            2.2 消息头  -->> 大部分有服务器实现,只有格式部分由开发人员实现
62         res.setContentType("text/html;charset=utf-8"); // 设置格式(只需要设置这一个,其它的是服务器自动填写的)
63 //            2.3 实体内容  -- 由开发人员实现
64         Date date = new Date();
65         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
66         String now = sdf.format(date);
67         
68         PrintWriter out = res.getWriter();
69         out.println("<p>三少你好,现在的日期是:"+now+"</P>");
70     }
71 }
2、3的笔记

4 注册案例

5 servlet原理

 

posted @ 2017-04-13 15:47  寻渝记  阅读(176)  评论(0)    收藏  举报