哈哈, 看看tomcat里面到底是啥玩意......
在好奇动力的支撑下, 继续学习第二章, 动态url servlet请求处理
2个程序
1. 第一个程序类列表
Request
Response
HttpServer1
Contants
ServletProcesser
StaticResourceProcesser
Request
方法和第一章相同parse() parseUri() 作用查看第一章
新增: 实现ServletRequest接口和其中的方法, 作用Request类代表一个request对象并被传递给servlet的service方法.
Response
新增: 实现ServletResponse接口和其中的方法, 作用同Request.
HttpServer1
新增: 通过获取uri判断请求的资源.
Contants
将获取资源路径的, static final 类型的资源提取放到公共类.
ServletProcesser
这个类处理动态servlet请求,
StaticResourceProcesser
process方法有2个参数, request,response从httpserver1 传参过来,直接调用response中的响应方法.
PrimitiveServlet
(第一个程序和第二程序公共测试servlet类)
这个就是sevlet测试类, 需要实现Servlet接口和其中的生命周期 init, destory, service方法
第二个程序类列表
Request
Response
Contants
HttpServer2
StaticSourceProceer
ServletProcesser
ResponseFacade
RequestFacade
Request
Response
Contants
HttpServer2
StaticSourceProceer
以上内容相同
ServletProcesser
RequestFacade
新增这个类是为安全考虑, 在Request类中的函数不被外部访问,通过实现ServletRequest接口和Request类实现相同的接口,用构造函数传参, 用成员变量的私有属性来达到在调用提供服务的servlet的service方法时安全向下转换.
ResponseFacade
同上
摘:
servlet的service方法从servlet容器中接收一个javax.servlet.ServletRequest实例和一个javax.servlet.ServletResponse实例。这就是说对于每一个HTTP请求,servlet容器必须构造一个ServletRequest对象和一个ServletResponse对象并把它们传递给正在服务的servlet的service方法