Java Web工程中的web.xml配置文件

Java Web工程中的web.xml配置文件

前言

1. xml文件

xml文件:Extentsible Markup Language即可扩展标记语言,是用来定义其它语言的一种元语言,其前身是SGML(标准通用标记语言)。xml文件是互联网数据传输的重要工具,因为不受编程语言和操作系统的限制,所以可以跨越互联网的任何平台,非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。我们都知道xml文件的一些规则:

  • xml声明一般是xml文档的第一行:

  • xml必须有且只有一个根节点,对大小写敏感,标签成对出现,标签不嵌套,但内部元素需要正确嵌套;

  • 属性值用双引号包裹;一个元素可以有多个属性,它的基本格式为:<元素名 属性名=“属性值” 属性名=“属性值”>;

  • 有效的(valid)xml文档:首先xml文档是个格式正规的xml文档,然后又需要满足DTD的要求,这样的xml文档称为有效的xml文档。

2. web应用的组成部分

web.xml
web应用的配置文件
classes
.Class文件/.xml/.properties配置文件
WEB-IN
lib
Web应用目录,eclipse-WebContent,idea-webapp
HTML/JSP/CSS/JS

3. web.xml文件的作用

web.xml文件是整个web应用中最重要的配置文件,它必须放在WEB-INF目录中。在web应用开发中,涉及到web资源的配置都是在web.xml中进行的。例如:

  • 将某个web资源设置为网站首页;
  • 将servlet程序映射到某个url地址上;
  • 为web应用配置监听器;
  • 为web应用配置过滤器;
  • 配置web应用上下文参数、配置Session的参数;
  • 配置spring、springMVC等框架。

一. web.xml标签详解

1. xml文档有效检查


<web-app id="WebApp_ID" version="3.0"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
         http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

这是一般在写XML时所做的声明,定义了XML的版本,编码格式,还有重要的指明schema的来源,为http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd;schema是由Sum Microsystems公司(已被Oracle收购)定制的,Schema文件定义了web.xml所对应的xml中有多少种标签元素。

2. 指定欢迎页面或网站首页

<welcome-file-list>
    <welcome-file>index.jspwelcome-file>
    <welcome-file>index1.jspwelcome-file>
welcome-file-list>

上述例子指定两个欢迎页,从上到下的优先级顺序;若没有上述配置将默认找index.html作为欢迎页;若所有页面都不存在,将会提示The requested resource (/XXX) is not available。

3. 指定错误处理页面

  • 通过错误码指定错误处理页面

    <error-page>
        <error-code>404error-code>
        <location>/error404.jsplocation>
    error-page>
    
  • 通过异常类型指定错误处理页面

    <error-page>
        <exception-type>java.lang.Exception<exception-type>
        <location>/exception.jsp<location>
    error-page>
    <error-page>  
          <exception-type>java.lang.NullExceptionexception-type>  
          <location>/error.jsplocation>  
    error-page> 
    

4.

设定上下文初始化参数:

<context-param>
<param-name>param_nameparam-name>
<param-value>param_valueparam-value>
context-param>

此所设定的参数,在JSP网页中可以使用下列方法来取得:${initParam.param_name};若在Servlet可以使用下列方法来获得:String param_name=getServletContext().getInitParamter(“param_name”)。

5.

  
<session-config>   
   <session-timeout>120session-timeout>   
session-config>

用于设置容器的session参数,比如: 用于指定http session的失效时间。默认时间设置在/conf/web.xml (30 minutes)。用来指定默认的会话超时时间间隔,以分钟为单位。该元素值必须为整数。如果 session-timeout元素的值为零或负数,则表示会话将永远不会超时。

6. 设置过滤器

如下述设置一个编码过滤器,过滤所有资源:

   <filter>
        <description>char encoding filterdescription>
        <filter-name>encodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>UTF-8param-value>
        init-param>
    filter>
    <filter-mapping>
        <filter-name>encodingFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>

Filter可认为是Servlet的“增强版”,主要用于对用户请求request进行预处理,也可以对Response进行后处理,是个典型的处理链;因此Filter配置与Servlet的配置非常相似,需要配置两部分:配置Filter名称和Filter拦截器URL模式。区别在于Servlet通常只配置一个URL,而Filter可以同时配置多个请求的URL。

Filter的常用应用场合有:编码器Filter、认证Filter、图片转换Filter、数据压缩Filter、密码Filter、日志和审核Filter等。Filter必须实现javax.servlet.Filter接口,在该接口中定义了三个方法:void init(FilterConfig config)、void destroy()、void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)。

7. 设置监听器

配置Listener只要向Web应用注册Listener实现类即可,无需配置参数之类的东西,因为Listener获取的是Web应用ServletContext(application)的配置参数。为Web应用配置Listener的两种方式:1.使用@WebListener修饰Listener实现类即可,2. 在web.xml文档中使用进行配置:

<listener> 
     <listener-class>监听器类的完整路径listener-class> 
listener> 

8. Servlet命名与定制URL

Servlet是个特殊的java类,继承于HttpServlet。客户端通常只有GET和POST两种请求方式,Servlet为了响应则两种请求,必须重写doGet()和doPost()方法。大部分时候,Servlet对于所有的请求响应都是完全一样的,此时只需要重写service()方法即可响应客户端的所有请求。

如下述Spring DispatcherServlet在web.xml中的配置:

  
<servlet>  
    <servlet-name>businessservlet-name>  
    <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>  
    <init-param>  
      <param-name>publishContextparam-name>  
      <param-value>falseparam-value>  
    init-param>  
    <load-on-startup>1load-on-startup>  
servlet>

标签存在如下元素标签:

  • :为Servlet指定一个文本描述。

  • :为Servlet提供一个简短的名字被某些工具显示。

  • :为Servlet指定一个图标,在图形管理工具中表示该Servlet。

  • 用来定义servlet的名称,该名称在整个应用中必须是惟一的。

  • 用来指定servlet的完全限定的名称。

  • 用来指定应用中JSP文件的完整路径。这个完整路径必须由/开始。

  • :如果load-on-startup元素存在,而且也指定了jsp-file元素,则JSP文件会被重新编译成Servlet,同时产生的Servlet也被载入内存。的内容可以为空,或者是一个整数。这个值表示由Web容器载入内存的顺序。

    • :Servlet的名字,唯一性和一致性,与元素中声明的名字一致。
    • :指定相对于Servlet的URL的路径。该路径相对于web应用程序上下文的根路径。将URL模式映射到某个Servlet,即该Servlet处理的URL。

二. Spring的web.xml配置

集成Web环境的通用配置(加载Spring容器)

  <context-param>
    <param-name>contextConfigLocationparam-name>
    <param-value>classpath:spring.xmlparam-value>
  context-param>
  
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
  listener>

三. SpringMVC的web.xml配置

SpringMVC中的DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据某某规则分发到目标Controller(我们写的Action)来处理。

  <servlet>
    <servlet-name>springmvcservlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
    <init-param>
      <param-name>contextConfigLocationparam-name>
      <param-value>classpath:servlet-context.xmlparam-value>
    init-param>
    <load-on-startup>1load-on-startup>
  servlet>
  <servlet-mapping>
    <servlet-name>springmvcservlet-name>
    <url-pattern>/url-pattern>
  servlet-mapping>

四. web.xml的加载顺序

web.xml 的加载顺序是:ServletContext -> context-param -> listener -> filter -> servlet ,而同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的。

附件(完整版SpringMVC的web.xml配置):

  
  

      
      
        characterEncodingFilter  
        org.springframework.web.filter.CharacterEncodingFilter  
          
            encoding  
            UTF-8  
          
          
            forceEncoding  
            true  
          
      
      
        characterEncodingFilter  
        /*  
      
      
      
      
      
        org.springframework.web.context.ContextLoaderListener  
      
      
      
        contextConfigLocation  
        classpath:spring/applicationContext.xml  
      

     
      
        default  
        *.css  
      
      
        default  
        *.swf  
      
      
        default  
        *.gif  
      
      
        default  
        *.jpg  
      
      
        default  
        *.png  
      
      
        default  
        *.js  
      
      
        default  
        *.html  
      
      
        default  
        *.xml  
      
      
        default  
        *.json  
      
      
        default  
        *.map  
      
    
        org.springframework.web.servlet.DispatcherServlet 
          
            contextConfigLocation  
            classpath:spring/dispatcher-servlet.xml  
          
        1  
      
    
        DispatcherServlet   
        /   
      

      
        login.html  
      
       
        404  
        /nopage.html  
      
       
        java.lang.NullPointerException  
        /error.html  
      
      
        360  
      
  

你可能感兴趣的:(Java,Java,Web)