zoukankan      html  css  js  c++  java
  • javaweb学习 基础(一)servlet day09-day10

    day-day10(内容来自cxf老师和孤傲苍狼)

    当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,我们通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

    WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
      ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。
      由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

    day09

     

    day10

    day10-2

    获取客户端的IP地址、获取请求方式、获取User-Agent,得到客户端的信息(操作系统 浏览器)。

    String addr = request.getRemoteAddr();//获取客户端的IP地址

    String userAgent = request.getHeader("User-Agent");//获取名为User-Agent的请求头!

    /*
    * Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36
    */

    day10-3

    /*
    * 测试获取所有请求参数的名称
    */
    Enumeration names = request.getParameterNames();

    while(names.hasMoreElements()) {
    System.out.println(names.nextElement());
    }

    /*
    * 获取所有请求参数,封装到Map中
    */
    Map<String,String[]> map = request.getParameterMap();
    for(String name : map.keySet()) {
    String[] values = map.get(name);
    System.out.println(name + "=" + Arrays.toString(values));
    }

     

    转发,只能转发到当前web应用内的资源。 浏览器URL的地址栏不变。

    也可以直接用request进行转发:

    重定向,可以跳转到当前web应用,或其他web应用,甚至是外部域名网站。 不能共享request范围内的数据。浏览器URL的地址栏改变。

    sendRedirect()方法不能转发到“/WEB-INF/”路径下的jsp页面资源,而getRequestDispatcher().forword()可以重定向到“/WEB-INF/”路径下的jsp页面资源。

    对于不经常变化的数据,在servlet中可以为其设置合理的缓存时间值,以避免浏览器频繁向服务器发送请求,提升服务器的性能。例如:

  • 相关阅读:
    git
    centos7安装python3和ipython
    centos7 安装mysql5.7
    ceph-文件存储
    ceph-对象存储
    ceph-块存储客户端
    ceph-简介及安装(luminous)版
    centos7 kvm安装使用
    webpack多页面应用打包问题-新增页面打包JS影响旧有JS资源
    webpack4.0 babel配置遇到的问题
  • 原文地址:https://www.cnblogs.com/doyi111/p/10651459.html
Copyright © 2011-2022 走看看