Servlet请求流程
Tomcat服务器是一个jsp/Servlet 容器,Servlet有一套API,Tomcat是根据这套api写出来的。
客户端发送一个请求,到达服务器后,被servlet容器拦截,对请求做出处理,将请求中的参数以及一些请求信息封装到HttpRequest对象中,然后调用对应的Servlet实例,在实例中调用service层等对数据库进行查询,返回数据结果到servlet实例中,然后分两种情况:
1,请求转发到一个jsp页面
将参数保存到httprequest 对象中,然后去请求一个jsp页面,jsp文件调用httprequest对象中的数据,生成响应的jsp文件,jsp文件经过jsp容器转化为servlet类文件,此类文件经过jvm编译为class文件,然后jvm执行此class文件,返回字符流。
2,直接跳转到一个jsp页面
将参数保存到url中,返回给客户端,然后客户端去请求这个带参数的url,jsp文件根据url中的参数生成响应的jsp文件,然后经过jsp容器转换为servlet类,编译为class文件,执行此class文件。
总结:我们以前不用jsp文件的时候,要生成一个页面,总是调用out.print() 方法向输出流中写入数据,其实所有的响应都是执行某个class类文件,向输出流中写入数据,以前的servlet是,换成jsp也是,
这些class类文件生成后,会保存到系统中,当同样的请求到来时,直接执行已经生成的class类文件,不用再对请求的Servlet进行编译了,当然如果Servlet类文件发生了修改,那么就有检测机制检测到,就会对Servlet类文件进行编译。