Java之Servlet详解

来源:互联网 发布:java多线程返回值 编辑:程序博客网 时间:2024/06/04 17:57

1,Servlet的继承关系

1.1)Servlet具有最基本的方法,所有的Servlet 都应该直接或间接的实现自这个接口;

1.2)GenericServlet类对Servlet接口的默认实现,是通用Servlet实现,init方法、destory方法进行了空实现,将service方法设计为抽象方法,供继承者实现;

1.3)HttpServlet,继承子GenericServlet,在GenericServlet实现的基础上,对HTTP协议进行了进一步的增强,实现了GenericServlet中未实现的Service方法,在此service方法中判断请求方式,根据请求方式对应调用对用的处理方法,在HttpServlet的子类中不要覆盖service方法,直接覆盖doGet或doPost方法,处理get/Post请求;

2,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("相对与类加载的目录的路径");此方法和上面的方法原理相同,唯一不同的是直接返回一个指向该资源的流。

 

3,web开发学习阶段的路径:


  此路径是给浏览器使用的还是给服务器使用的
   如果路径是给浏览器使用的,则路径是相对于当前虚拟主机,路径中要写上当前web应用的名称。
   如果路径是给服务器用的,则路径是相对于当前web应用,路径中不要写上当前web应用名称了。
 
 <a href="/Day03/servlet/Demo1">xxx</a>
 <form action="/Day03/serlvet/Demo1"></form>
 <img src="/Day03/1.jpg"/>


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

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

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

 

原创粉丝点击