Servlet进阶1

全局域对象ServletContext:代表了整个web应用
  功能:在域的范围内共享数据
  范围:目前测得只在一个工程内有影响
存储所有用户共享的数据
    * setAttribute():
    * getAttribute():
    * removeAttribute():
  JavaWeb中四大域对象:
    * ServletContext:全局域对象 ,代表整个web应用 ,随着服务器的关闭而消亡
    * HttpSession:会话域           多次
    * ServletRequest:请求域      一次
    * PageContext:页面域  
获取文件运行的真实路径:
   * 真实路径:指服务器路径
   * getRealPath():
     * 1.webRoot下:项目根目录下
     * 2.WEB-INF下: 项目根目录下/WEB-INF
     * 3.src下: 项目根目录下/WEB-INF/classes
    
     * *注意:如果getRealPath("/"),获取的路径是项目的根目录
 
String realPath = context.getRealPath("/");
System.out.println(realPath);
   输出是// D:\java班学习\20171015-XML和tomcat\20171015-XML和tomcat\tomcat服务器课件
  // \tomcat服务器软件\apache-tomcat-7.0.26\apache-tomcat-7.0.26\webapps\MyServletDemo1\
在服务器路径里的项目里。
String realPath1 = context.getRealPath("/success.jsp");//获取的是WebRoot下的文件
String realPath2 = context.getRealPath("/WEB-INF/web.xml");//获取的是WebRoot下的WEB-INF文件
String realPath3 = context
    .getRealPath("/WEB-INF/classes/org.west.demo.MyServletDemo4");//获取的的src下的文件


对Servlet的简化
我们不需要全部继承Servlet的抽象方法,可以自定义这个类来实现这个Servlet,然后写自己的类来继承这个自定义类;这就是适配器模式
 创建方式:
  1. 实现Servlet
  2. 继承GenericServlet
   1.适配器
   2.对ServletConfig进行优化。提升config对象的作用域
   3.实现了ServletConfig接口,简化对config对象的使用方式
  3. 继承HttpServlet:对http协议的封装
   * 重写doGet()和doPost()...方法      注意去掉super.doGet(); 和 super.doPost();

可以修改HttpServlet模板
 自动创建Servlet
  * 修改模板:
   1 D:\MyEclipse\Common\plugins
   2 搜索wizards
   3.找到.jar 修改templemnts/Servlet.java

注意:只要在web环境下采用ServletContext获取文件的真实路径,
如果是非web环境,则使用ClassLoader来获取真实路径
     比如我web项目里有一个普通的java工具类 我想获取文件的真实路径 那我就用不了 ServletContext
     //1.获取该类对应的类加载器对象
     ClassLoader loader = this.getClass().getClassLoader();
     //2.获取文件运行的真实路径
     URL url = loader.getResource("a.txt");
     String path = url.getPath();
     //注意类加载器来获取路径也有局限性 只能获取src目录下的文件




     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值