在线浏览网页离不开服务器。用户发出请求,服务器做出响应,提供给用户需要的页面。响应的内容是根据每 个web请求来产生动态内容的,其内部即启动多个线程来产生不同内容。
web请求都是使用 Request 和Response 式的交流,这种请求响应式的交互都是基于HTTP协议。如图↓
下面还需要了解一下HTTP协议。HTTP协议有两种请求方式,即GET与POST。 HTTP协议的请求信息介绍 如图↓
那么接下来设计思路就变得十分清晰: 客户端(浏览器)与服务器建立网络连接(ServerSocket),客户端(浏览器)向服务器请求内容(包含在HTTP请求信息中),服务器读取客户端发来的请求信息动态产生内容(多线程)进行响应。
设计过程中有几个要点:1、合理拆分请求信息(String类的各种方法),获取请求方式,请求参数,请求内容等。2、创建一个分发器(Dispatcher),利用多线程同时处理多个请求。
具体设计步骤 :
一、1、创建ServerSocket 2、建立连接获取Socket 3、通过输入流获取请求协议(注意GET与POST方式的参数等不一致 )
二、1、准备内容 2、获取字节数的长度 3、拼接响应协议 注意: 空格与换行 4、使用输出流输出
三、创建响应类(Response) 1、动态添加内容print 2、累加字节数的长度 3、根据状态码拼接响应头协议 4、根据状态码统一推送出去 调用处: 动态调用print +传入状态码推送
四、创建请求类(Request )通过分解字符串获取method URL和请求参 数 (POST请求参数可能在 请求体中还存在) Request 通过Map封装请求参数(考虑一个参数多个值和中文等问题)
五、创建Sevlet 类,将业务代码解耦到对应的业务类中(具体的 Serlvet)
六、整合配置文件 根据配置文件动态的读取类名,再进行反 射获取具体的Servlet来处理业务(实现灵活的响应客户端各种请求内容,做到以不变应万变)
七、创建一个调用分发的类(Dispatcher) 加入了多线程,可以同时处理多个请求。
八、处理读取错误、设置首页内容即可
由于完整项目代码细节问题较多,容易乱,这里就不贴出来了。如果需要完整项目源码的可以添加企鹅q3492625357。