• Java Web总结六ServletContext、Response、Request


    一、ServletContext对象

      1、在Web应用中,由服务器创建的唯一一个对象是ServletContext。

      2、ServletContext对象在每一个Servlet中取得都是相同的。

      3、ServletContext对象的存取方法:

        存ServletContext.setAttribute(String , Object):void

        取ServletContext.getAttribute(String):Object

      4、在Web应用中,可以取得Web应用的初始化参数。

      5、ServletContext对象可以实现转发功能,即307+location。转发代码如下:

        ServletContext context = this.getServletContext();

        //定位需要转发的路径

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

        //真正转向页面

        rd.forward(request,response);

      6、读取资源文件的三种方式:

        1)传统方式:

          File file = new File("src/cn/itcast/web/servlet/config.properties");

        2)ServletContext加载:

          InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/cn/itcast/web/servlet/config.properties");

        3)类路径加载:

          InputStream is = this.getClass().getClassLoader().getResourceAsStream("/cn/itcast/web/servlet/config.properties");

        4)三种方式的区别:

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

          (2)如果以ServletContext方式读取资源文件(txt/xml/properties),是相对于web服务器的当前web应用目录而言。此时/表示:当前web应用,即day06。

          (3)类加载器只能加载IDE工具下src目录下的资源文件,其它目录无法加载。此时/表示:/WEB-INF/classes/目录。

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

    二、关于路径的问题

      1、两种加载方式的区别:

        1)ServletContext方式:

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

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

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

        2)类加载器方式:

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

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

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

      2、有关路径中/的问题:

        1)物理硬盘路径使用[window系统]。

        2)网络路径使用/。

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

    三、缓存应用

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

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

    四、Response的应用

      1、web容器会传入与web容器相关的HttpServletRequest和HttpServletResponse对象的实现。

      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目录

    五、Response细节

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

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

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

    六、request应用

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

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

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

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

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

  • 相关阅读:
    Jquery同步载入数据
    fireEvent方法
    条件判断问题,不太清楚有什么区别!
    Request.QueryString,Request.Form与JavaScript中模态窗口传参
    SQL求百分比
    event.srcElement
    判断输入信息为数值类型
    SQL 表变量,临时表
    读写二进制文件
    串口通信
  • 原文地址:https://www.cnblogs.com/FlySheep/p/3624711.html
Copyright © 2020-2023  润新知