1.页面提交请求到servlet
2.容器创建请求和响应对象
3.容器根据URL查找具体的servlet
4.容器加载并实例化servlet
5.执行servlet的初始化方法(init())
6.容器创建一个新的线程处理该请求容器调用servlet的service方法(同时将请求和响应对象作为参数)
7.servlet调用模型的业务逻辑进行处理
8.servlet将处理结果保存到指定对象中(request、session、application)
9.servlet将请求转发给相应的jsp(处理完成后,会调用destory()方法)
10.jsp动态生成响应(使用响应对象向流写入HTML或其他内容)
容器将响应(通过WEB服务器)返回给客户端
11.浏览器解析并渲染返回的html文件
- JSP工作原理
一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个
servletJSP引擎使用javac把转换成的servlet的源文件编译成相应的class
文件对每一个请求,JSP引擎创建一个新的线程来处理请求
- 九大内置对象
1.requset:对象代表的是来自客户端的请求,通过getParameter,getParameterNames,getParameterValues调用这几个方法来获取请求对象中包含的参数的值,
2.response:对象代表的是对客户端的响应,也就是说可以通过response对象来组织发送到客户端的数据。但是由于组织方式比较底层,所以不建议使用,需要向客户端发送文字时直接使用out对象即可
3.out:对象代表了向客户端发送数据的对象,与 response对象不同,通过out对象发送的内容是浏览器需要显示的内容,是文本一级的,可以通过out对象直接向客户端写一个由程序动态生成HTML文件。常用的方法除了print和println之外,还包clear,clearBuffer,flushgetBufferSize和getRemaining,这是因为out 对象内部还包含了一个缓冲区所以需要一些缓冲区进行操作的方法。
4.session:对象代表服务器与客户端所建立的会话,当需要在不同的 jsp页面中保留客户信息的情况下使用,比如在线购物,客户轨迹跟踪等
5.application:对象负责提供应用程序在服务器中运行的一些全局信息,常用的方法有getMimeType和getRealPath等
6.pageContext:封装了当前jsp页面的运行信息,它提供了返回jsp页面的其他隐式对象的方法,通过它可以调用其他内置对象信息
7.config:对象提供一些配置信息,常用的方法有getlnitParameter和 getlnitParameterNames以获得Servlet初始化时的 参数
8.page:对象代表正在运行的由jsp文件产生的类对象,一般不建议使用
9.exeception:对象则代表了jsp文件运行时所产生的例外对象,此对象不能直接使用。 而只能在使用了<%@ page isErrorPage="true" %>的jsp文件中使用.
- Tomcat 运行原理
1.用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得。
2.Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。
3.Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。
4.Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理)。
5.path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。
6.构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost().执行业务逻辑、数据存储等程序。
7.Context把执行完之后的HttpServletResponse对象返回给Host。
8.Host把HttpServletResponse对象返回给Engine。
9.Engine把HttpServletResponse对象返回Connector。
10.Connector把HttpServletResponse对象返回给客户Browser。