Request和Response原理
先看代码
@WebServlet("/demo")
public class ServletDemo implements Servlet{
@Override
public void service(ServletRequest request,ServletResponse response){
System.out.println("Servlet 3.0...问世");
}
}
这是一段简单的Servlet的代码,
当通过浏览器访问的时候,会在控制台打印service方法中的这句话 http://localhost:8080/demo
执行原理
- tomcat服务器会根据请求中的url的资源路径,创建对应的ServletDemo 对象
- tomcat服务器,会创建request和response对象,request对象中封装请求消息数据
- tomcat将request和response两个对象传递给service方法,并且调用service方法
- 在方法内部可以通过request对象获取请求消息数据,response对象设置响应消息数据
- 服务器再给浏览器做出响应之前,会从response对象中拿程序员设置的响应消息数据
注意
- request和response对象均由服务器创建的,我们是来使用的
- request对象是来获取请求消息,response对象是来设置响应消息
上图就是浏览器发送给服务器的一些参数和属性…
Request和Response的继承体系结构
- 当我们打印request对象时,出现的是org.apache.catalina.RequestFacade@74cb396c
@WebServlet("/demo")
public class ServletDemo implements Servlet{
@Override
public void service(ServletRequest request,ServletResponse response){
System.out.println(request);
}
}
- tomcat实现了apache提供的RequestFacade的这个类,并创建其对象(这是Tomcat源码包)
- ServletRequest是一个接口,它被HttpServletRequest接口继承,而我们的核心类RequestFacade又实现了HttpServletRequest