Servlet 的调用过程、生命周期

来源:互联网 发布:中联医疗软件 编辑:程序博客网 时间:2024/04/29 01:10

Servlet接口  --- 定义了Servlet所应该具有的最基本的方法,所有的Servlet 都应该直接或间接的实现自这个接口
 |
 |---GenericServlet ,对Servlet接口的默认实现,是通用Servlet实现,init方法、destory方法进行了空实现,将service方法设计为抽象方法,供继承者实现
   |
   |---HttpServlet,继承子GenericServlet,在GenericServlet实现的基础上,对HTTP协议进行了进一步的增强,实现了GenericServlet中未实现的Service方法,在此service方法中判断请求方式,根据请求方式对应调用对用的处理方法,在HttpServlet的子类中不要覆盖service方法,直接覆盖doGet或doPost方法,处理get
   /Post请求


MyEclipse下开发web工程


web.xml中Servlet对外访问路劲的配置
(1)一个<Servlet>标签可以对应多个<servlet-mapping>,也就是说一个Servlet可以有多个对外访问路径
(2)可以使用*匹配符,但是使用*匹配符时只能是两种方式:以正斜杠开头,以正斜杠星结尾。*.后缀,哪个最像找哪个,同时*.后缀方式优先级最低。
(3)在<Servlet>标签中可以配置<load-on-startup>标签,其中的值必须是一个正整数,配置过该选项的servlet,将随着服务器的启动而创建。其中配置的数值用来指定servlet启动的顺序。
(4)缺省Servlet,一个Servlet 如果对外访问路径被配置为一个斜杠,则其他Servlet 都不处理的请求由缺省Servlet处理。在tomcat/conf/web.xml是爸爸web.xml其他web.xml都继承自此web.xml,这个web.xml中配有默认的缺省Servlet,当我们放问静态web资源时就是此缺省servlet做出的响应。浏览器对服务器的访问,无乱访问的是什么资源,最终都是一个Servlet做出的响应。


ServletContext对象,代表当前整个web应用
 (1)是一个域对象,是javaweb开发阶段的四大作用域之一。(最大的一个域)可以在整个web应用范围内共享数据
 生命周期:随着web应用加载而创建,随着服务器被关闭或者web应用被移除出容器,销毁。 
 作用范围:整个web应用
 
 (2)可以获取整个web应用的初始化信息
 
 
 (3)请求转发:访问一个web资源时,可以在服务器内部流转,使用另一个web资源进行输出
 
 (4)获取资源


获取资源:ServletContext.getRealPath("相对于当前web应用的路径"),则此方法在传入的路径之前拼接上当前web应用的真实硬盘路径,以此来获得资源的真实硬盘路径。
       ServletContext.getResourceAsStream("相对于当前web应用的路径"),此方法和上面的方法原理相同,唯一不同的是直接返回一个指向该资源的流。
        
       
        
    利用类加载器去加载资源:
      String path = ClassLoader.getResource("相对与类加载的目录的路径").getPath();
      ClassLoader.getResourceAsStream("相对与类加载的目录的路径");此方法和上面的方法原理相同,唯一不同的是直接返回一个指向该资源的流。
       
       
       
       
路径专题:

web开发学习阶段的路径:
  此路径是给浏览器使用的还是给服务器使用的
   如果路径是给浏览器使用的,则路径是相对于当前虚拟主机,路径中要写上当前web应用的名称。
   如果路径是给服务器用的,则路径是相对于当前web应用,路径中不要写上当前web应用名称了。
 
 


 servletCotnext.getRequestDispacher("/servlet/Demo1").forward();
 servletContext.getRealPath("/1.jpg");
 servletContext.getResourceAsStream("/1.jpg");

javase学习阶段的路径(根据具体情况具体分析):
 new File("");
 new FileInputStream(""); ---- 相对的是程序的启动目录

 ClassLoader.getResource();
 ClassLoader.getResourceAsStream();  ---- 相对于类加载器加载类的目录
 
 
 相对路径和绝对路径
 绝对路径:以/开头的路径叫做绝对路径,工作原理:将当前路径直接拼接到相对于的那个目录上
 相对路径:不以/开头的路径叫做相对路径,工作原理:相对于当前的路径,计算相对路径的真实路径。
 
 由于相对路径要根据当前路径随时进行计算,如果分析不好的话有可能会导致路径不正确,所以尽量使用绝对路径,只有当绝对路径没有办法使用时才使用相对路径。



0 0
原创粉丝点击