zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    vue自定义指令
    ZOJ Problem Set–2104 Let the Balloon Rise
    ZOJ Problem Set 3202 Secondprice Auction
    ZOJ Problem Set–1879 Jolly Jumpers
    ZOJ Problem Set–2405 Specialized FourDigit Numbers
    ZOJ Problem Set–1874 Primary Arithmetic
    ZOJ Problem Set–1970 All in All
    ZOJ Problem Set–1828 Fibonacci Numbers
    要怎么样调整状态呢
    ZOJ Problem Set–1951 Goldbach's Conjecture
  • 原文地址:https://www.cnblogs.com/FlySheep/p/3624711.html
Copyright © 2011-2022 走看看