ServletContext对象以及类加载和servletcontext加载资源

*1 ServletContext对象

  1)web应用中,由服务器创建的唯一的一个对象是ServletContext

  2)ServletContext对象在每一个Servlet中取得都是相同到

  3)ServletContext对象在存取方法:

ServletContext.setAttribute(String,Object):void

ServletContext.getAttribute(String):Object

  4)web应用中,可以取得web应用的初始化参数

  5)ServletContxt对象能够实现转发功能,即307+location      

ServletContext context = this.getServletContext();

//定位需要转发的路径

RequestDispatcher rd = context.getRequestDispatcher("/success.html");

//真正转向页面

rd.forward(request,response);

  6)如果以传统方式读取资源文件(txt/xml/properties),是相对于web服务器的bin/目录而言

 *7)如果以ServletContext方式读取资源文件(txt/xml/properties),是相对于web服务器的当前web应用目录而言

    此时/表示:当前web应用,即day06

 *8)类加载器只能加载IDE工具下src目录下的资源文件,其它目录无法加载

    此时/表示:/WEB-INF/classes/目录

 10)其实浏览器访问的静态资源,本质上是由一个缺省的Servlet来帮你处理的  

 

  

2 关于路径的问题

  1)二种加载方式的区别?

    服务端

    ServletContext方式:

1)资源的文件的位置任意

        2)加载文件时,只会以流的方式读取,不会一次性加载全部

        3)/表示当前web应用,即day06

 

    类加载器方式:

1)资源文件的位置只能放置类路径下,即IDE工具的src目录下

        2)加载文件时,会一次性加载全部文件

        3)/表示当前/WEB-INF/classes/

    

   2)有关/的问题?

     物理硬盘路径使用\[window系统]

     网络路径使用/

     如果/表示客户端路径的话,表示tomcat/webapps/目录

 

     

*3 缓存应用

  1)对于浏览器的刷新而言,当浏览器缓存中有资源,也会找服务端要资源,只有在回车访问情况下,才找缓存

  2)可以通过重写getLastModified()方法来阻止每次刷新都访问服务端,以减轻服务端的压力

 

*4 response的应用

  1)web容器会传入与web容器相关的HttpServletRequestHttpServletResponse对象的实现

  2)每次浏览器请求,web容器会创建新的请求和响应对象,这二个对象的生命周期仅限于web容器内

  3)对于字节方式来说,输出数字,respnse会编查ISO8859-1编码表,将码表的中的数字对应的字符取出来显示,即遇数字转字符

  4)如果要输出数字,提前将数字转化成字符串

  5)对于字符方式来说,可以直接输出数字

  6)将中文转成字节数组时,查UTF-8码表,如果不写的话,默认查ISO8859-1码表  

  7)以字符方式输出中文,提前设置编码方式;以字节方式输出中文,提前设置转化编码方式

字符:

response.getOutputStream().write("中国".getBytes("UTF-8"));

字节:

response.setContentType("text/html;charset=UTF-8");

response.getWriter().write("美国");

   8)HTML中的所有<meta/>标签,类似于response.setHeader(),目的是通知浏览器以特定的方式显示页面的信息

   9)重定向是客户端和服务端的共同行为,

     response.sendRedirect("/day06/message.html")其中/表示webapps目录

 

 

5 response细节

  1)以字符或字节方式输出内容的话,只能使用其中一种

  2)响应头会以叠加的方式设置,在相同的情况下,后者起决定作用

  3)在没有关闭流的情况下,web容器帮你自动关闭所有从response中取得IO

 

 

6 request应用

  1)表示web浏览器向web服务端的请求

  2)url表示访问web应用的完整路径:http://localhost:8080/day06/Demo1

    uri表示访问web应用的资源路径:/day06/Demo1

    queryString表示?开头的参数;name=jack

    pathInfo:路径之外的信息,如果没有,返回null

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值