自己动手写Web容器之TomJetty(三) 掀起请求盖头来

前面我们对于实现TomJetty做了一些知识铺垫和复习,息知了HTTP请求的头部的组成元素。目前的TomJetty服务器已经能够成功启动,可是请求一旦过来却又看不懂^_^。所以本文就来解析HTTP请求头,剖析它的各部分。让TomJetty服务器能够明白它的意图。

一、HTTP请求头解析

1.编写一个RequestHeader类,用户封装请求头对象。

package cn.lynn.tomjetty;
import java.util.HashMap;
/**
* 封装请求头
* @author lynnli1229
*/
public class RequestHeader {
private String method;
private String url;
private String protocal;
private String accept;
private String accept_language;
private String user_agent;
private String accept_encoding;
private String ip;
private String port;
private String connection;
private String cookie;
// 存放请求头键值对
private HashMap<String, String> map;
// 存放请求头文本
private String txt;
// 省略getter()和setter()方法
@Override
public String toString() {
return "RequestHeader [" + "\n"
+ method + " " + url + " " + protocal + "\n"
+ "Accept: " + accept + "\n"
+ "Accept-Language: " + accept_language + "\n"
+ "User-Agent: " + user_agent + "\n"
+ "Accept-Encoding: " + accept_encoding + "\n"
+ "Host: " + ip + ":" + port + "\n"
+ "Connection: " + connection + "\n"
+ "Cookie: " + cookie + "\n"
+ "]";
}
}

2.设计一个IRequestHeaderParser接口,并声明parse()方法,用于解析请求头文本内容。

package cn.lynn.tomjetty;  

public interface IReqestHeaderParser {  

    public RequestHeader parse(String txt) throws Exception;  

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索string
, private
, 封装
, connection
, public
user_agent
掀起你的盖头来、新疆舞掀起你的盖头来、掀起你的盖头来纯音乐、掀起你的盖头来简谱、掀起你的盖头来 综艺,以便于您获取更多的相关知识。

时间: 2024-11-02 10:04:17

自己动手写Web容器之TomJetty(三) 掀起请求盖头来的相关文章

自己动手写Web容器之TomJetty(一) 服务内功经脉

Jetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境.Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布.开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接.Tomcat 是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选. Jetty和To

自己动手写Web容器之TomJetty(六) 动态页面引入

在上一节,我们已经完成了TomJetty服务器处理静态页面请求的功能.但是只能处理静态页面请求的服务器并不能满足我们的要求,所以本节我们将为TomJetty服务器完成动态页面请求的处理工作. 所谓动态页面请求,无非就是客户端发送一个请求的url地址或者将一些请求参数提交给某一个url地址,服务器端首先接收到这个url地址并检索其在服务端程序中对应的某个处理类(Servlet),然后在该处理类中执行业务逻辑后产生结果,最终转发给相应的页面在客户端浏览器中显示结果. 一.动态页面请求处理 对于Jav

自己动手写Web容器之TomJetty(五) 包装请求参数

前面我们实现了TomJetty响应无参请求静态页面的功能,但真实情况下,几乎所有请求都得携带参数.不能处理用户参数请求的Web服务器就好比温室里的花朵,始终上不了台面.所以本节我们将为TomJetty加入响应用户参数的功能.此外,前面我们使用的提交请求的方式都是GET方式,但在实际情况下,POST方式使用的更广泛,所以我们也将给TomJetty增加响应POST请求的能力. 一.扩展RequestHeader类 1.在RequestHeader类中新增parameter属性,用于标示请求头中客户请

自己动手写Web容器之TomJetty(四) 静态页面起步

上一节我们实现了将HTTP请求头的内容解析后打印到控制台上,让HTTP请求头的各个组成部分完全暴露在在我们面前.这个功能在IE浏览器的一款叫作HttpWatch的插件中有类似的体现,相信很多读者都用过它,利用HttpWatch查看网页请求和响应的日志信息功能来调试程序.前面讲到我们把HTTP请求头封装在RequestHeader类中,这个类有一个url属性,本节我们将利用它来定位服务器端的静态页面. 一.服务端静态页面 作为一个Web服务器,响应客户端发送的请求是首要任务,怎样设计它才能快速地响

自己动手写Web容器之TomJetty(二) 开启服务器

上一节我们对于实现TomJetty服务器做了一些与Web有关的知识铺垫和回顾.那么从本节正式开始实现TomJetty服务器的"山寨"之旅.要想实现一个服务器,第一步要把服务器建立起来,并且能够正常运行,才能等待来自客户端的请求.考虑到这一点,我们本节就来处理TomJetty服务器的创建和启动工作. 一.服务器建立 1.新建一个名为TomJetty的Java工程. 2.在工程根目录下新建一个tomjetty.config文件,用于提供服务器配置参数. tomjetty.port=9527

自己动手写ASP.NET ORM框架(三):关系映射配置—Table属性

在上一篇随笔中已经完成了ADO.NET操作数据库的封装,并已经支持多数据库,只需要在 配置文件中指定数据库类型即可,本节主要完成对象与数据库表的关系映射配置. 下面看表名的映射配置代码块1-1: [Table(Name="Student")] public class StudentEntity { //...........省略 } 在类上面用[Table(name = "Student")]属性来配置,表示该实体类StudentEntity与数 据库中的Stud

c# 写web服务器 需要监听本机所有ip80端口

问题描述 用c#写web服务端想监听本机所有的ip的80端口机器有100多个ip想监听所有ip的80端口需要怎么实现呢serverSocket.Bind(newIPEndPoint(ipAddress,port)); 这个是监听的语句请高手指点 解决方案 解决方案二:机器有100多个IP??没见过这种服务器解决方案三:rawsocket?解决方案四:引用1楼Z65443344的回复: 机器有100多个IP??没见过这种服务器 有的...是租用的别人的服务器...就是要监听多个ip有什么办法么解决

debug-eclipse用java写web项目,操作页面时怎么证明哪些代码,哪些方法被调用执行了

问题描述 eclipse用java写web项目,操作页面时怎么证明哪些代码,哪些方法被调用执行了 跑web项目,在页面进行操作,怎么查明这个操作调用了哪些类的哪些方法以及执行顺序,本人不怎么会调试,能具体点最好,感激不尽 解决方案 楼主可能没有工作吧,其实这个问题稍微有个人简单一说就会了,从浏览器要学会使用开发者模式,例如firefox的debug模式,这个可以查看页面操作 后发送了哪些请求,然后得到了什么响应,请求就可以知道你调用了哪个Action,从而知道调用后台哪些方法,后台如果用ecli

《自己动手写Docker》书摘之二: Linux Cgroups

Linux Cgroups介绍 上面是构建Linux容器的namespace技术,它帮进程隔离出自己单独的空间,但Docker又是怎么限制每个空间的大小,保证他们不会互相争抢呢?那么就要用到Linux的Cgroups技术. 概念 Linux Cgroups(Control Groups) 提供了对一组进程及将来的子进程的资源的限制,控制和统计的能力,这些资源包括CPU,内存,存储,网络等.通过Cgroups,可以方便的限制某个进程的资源占用,并且可以实时的监控进程的监控和统计信息.  Cgrou