2017-9-11 - A - webServer

Posted 清及

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017-9-11 - A - webServer相关的知识,希望对你有一定的参考价值。

1
* /index.html
* /reg?username=fancq&password=123456&nickname=
* 在GET请求中,URI可能会有上面两种情况。
* HTTP协议中规定,GET请求中的URI可以传递参数,而规则时请求的资源后面以
* “?”分割,之后则为所有要传递的参数,每个参数由:
* name=value的格式保存,每个参数之间使用“&”分割。
* 这里的处理要求:
* 将“?”之前的内容保存到属性uri上。
* 之后的每个参数都存入属性parameters中
* 其中key为参数名,value为参数的值。
* 1:实例化HashMap用于初始化属性parameters

2 学习项目的脉络把握才是关键,对项目整体的把握,实际上方法的创建只是其次,学到老师对项目的整体把控才是最有价值的。
为什么此处直接定义即可,后续不需要考虑不同情况的处理吗,
老师测试方法的思路,new一个类,传入参数,调用方法。
post情况下,如果加上传参产生的变化不需要考虑吗?如果是,老师是怎样设计函数达到了这样的效果。
结合面向对象思想理解程序流程,整个流程实际上就是初始化各类对象,最后返回目标对象的过程。

技巧①,顺之前的处理思路而下,看哪里涉及到了需要做改变
如在file.exists那里的判断现在就要加上一个如果全等于reg的判断。

3 服务器整体业务流程是什么?
新建一个服务器获取请求,读取处理请求,返回请求资源
将后两个流程中包入ClietnHandler(新建类),一旦有新的请求便创建新的线程,由于线程较多,因此需要用线程池管理。
ClientHandler中的主要流程又是run方法,run方法(便是包含获取,读取,处理请求)的流程为,
run方法中便包含了——
①读取请求,将请求项转化为对象,方便后续检索确定返回的数据。
对象包括请求头及消息头查找表,将处理该对象的方法也写入——直接传入输入流,直接将请求转换为请求对象——大大缩减代码量
消息头
①消息头中的请求方式有两种,需分开处理
②消息头查找表在使用前必须实例化,不然用不了
跳出循环的判断条件是 返回字符串长度为0 而不是全等于null或""。(StringBuilder内部默认维护一个空字符串)
②返回请求,将响应的属性实例化成一个对象。
请求对象包含:
状态行,响应头(header),响应正文(网页资源)
将对应属性以原生数据类型传入对象,然后直接在内部转换成输出流
可直接用out输出,但更建议加载在缓冲流上输出,大大加快速度

4 使用"/reg".equals(uri)还是uri.equals("/reg")?
"/reg".equals(uri),uri.equals("/reg")

6 如何理解webServer项目中的面向对象编程思想?应如何利用OOP思想编程?
对象与对象通过方法对接,而方法又包在对象内。
原本是传递属性进方法改为传递带有属性的对象,大大减少了代码量(当需要多个属性,且属性皆同属于一个对象)
以面向对象思想理解webServer项目流程:
生活中也是一个对象一个对象处理,在使用对象时可能会调用它的属性和方法。
一个大的对象是服务器,服务器这个对象,可以接收处理请求这个对象,返回一个响应对象。
面向流程编程,过程中出现的变量判定是否属于某个对象,如果是就封装起来。
利用面向对象,也大大的理清了编程中的思路,一个对象处理一个对象,对象和对象之间的关系清晰明了。

7 所以将处理注册功能单独用一个类处理,传入的是请求与响应。

8 用户提交信息不可直接获取,也不可直接返回查找表(就可以直接remove,add操作)所以需如何处理?
定义获取参数的函数,而不是直接返回对象的方法
public String getParameter(String name){
return parameters.get(name);
}

9 注册的原理是什么?
捕捉关键词reg,调用模块,
服务器相应的原理——捕捉关键词,返回指定地址。

10 复盘早上所学

11 如何将页面响应回给客户端?
//响应成功页面给客户端
File file = new File("webapp" + File.separator + "reg_ok.html");
response.setStatus(HttpContext.STATUS_CODE_OK);
response.setContentType("text/html");
response.setContentLength((int)file.length());
response.setEntity(file);
response.flush();

12 需掌握的有哪些?
重构时,什么东西可以放在配置文件中。
再敲一遍Web服务器。

13 数据库的优点是什么?
安全且持久化保存大量数据。






























































以上是关于2017-9-11 - A - webServer的主要内容,如果未能解决你的问题,请参考以下文章

2017/9/11——何某某更博,花时间整理了所有的Python内置方法的用法,便于日后复习

Java 2017.9.11 杨浩宁作业

2017.9.11(识别用户名)

使用NanoHttpd实现简易WebServer

2017 9 11 noip模拟赛T2

2017.9.11 星期一 学习总结