关于servlet中的web.xml以及获取URL响应头信息

web.xml的加载顺序是:

<context-param>-<listener>-<filter>-<servlet>

其中,如果web.xml中出现了相同的元素,则按照在配置文件中出现的先后顺序来加载

  1. 启动WEB项目的时候,容器首先会去它的配置文件web.xml读取两个节点: <listener></listener>和<context-param></context-param>
  2. 紧接着,容器创建一个ServletContext(application),这个WEB项目所有部分都将共享这个上下文
  3. 容器以<context-param></context-param>的name作为键,value作为值,将其转化为键值对,存入ServletContext
  4. 容器创建<listener></listener>中的类实例,根据配置的class类路径<listener-class>来创建监听,在监听中会有contextInitialized(ServletContextEvent args)初始化方法,启动Web应用时,系统调用Listener的该方法
  5. 举例:你可能想在项目启动之前就打开数据库,那么这里就可以在<context-param>中设置数据库的连接方式(驱动、url、user、password),在监听类中初始化数据库的连接。这个监听是自己写的一个类,除了初始化方法,它还有销毁方法
    Spring配置文件:
    配置Spring,必须需要<listener>,而<context-param>可有可无,如果在web.xml中不写<context-param>配置信息,默认的路径是/WEB-INF/applicationontext.xml,在WEB-INF目录下创建的xml文件的名称必须是applicationContext.xml。如果是要自定义文件名可以在web.xml里加入contextConfigLocation这个context参数:在<param-value> </param-value>里指定相应的xml文件名,如果有多个xml文件,可以写在一起并以“,”号分隔

<servlet>必须含有<servlet-name><servlet-class>,或者<servlet-name><jsp-file>。 描述如下:
1). <servlet-name>用来定义servlet的名称,该名称在整个应用中必须是惟一的。
2).<servlet-class>用来指定servlet的完全限定的名称。
3). <jsp-file>用来指定应用中JSP文件的完整路径。这个完整路径必须由/开始。

关于<servlet-mapping>
<servlet-mapping>含有<servlet-name><url-pattern>
1). <servlet-name>:Servlet的名字,唯一性和一致性,与<servlet>元素中声明的名字一致。
2). <url-pattern>:指定相对于Servlet的URL的路径。该路径相对于web应用程序上下文的根路径。<servlet-mapping>将URL模式映射到某个Servlet,即该Servlet处理的URL
加载Servlet的过程:
容器的Context对象对请求路径(URL)做出处理,去掉请求URL的上下文路径后,按路径映射规则和Servlet映射路径(<url- pattern>)做匹配,如果匹配成功,则调用这个Servlet处理请求

<servlet>
<servlet-name>first</servlet-name>
<servlet-class>com.Friest</servlet-class>//servlet类的全限名
</servlet>
<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/first</url-pattern>//URL路径
</servlet-mapping>

获取URL响应头信息:

public static void main(String[] args) throws IOException{
        URL url = new URL("http://www.runoob.com");
        URLConnection conn = url.openConnection();
        Map headers = conn.getHeaderFields();
        Set<String> keys = headers.keySet();
        for( String key : keys ){
            String val = conn.getHeaderField(key);
            System.out.println(key+"    "+val);
        }
        System.out.println( conn.getLastModified() );
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值