当前位置: 代码迷 >> Web前端 >> web.xml资料在web项目中的作用及基本配置
  详细解决方案

web.xml资料在web项目中的作用及基本配置

热度:310   发布时间:2012-11-20 09:55:43.0
web.xml文件在web项目中的作用及基本配置

?

web 工程中的 web.xml 文件有什么作用呢?它是每个 web.xml 工程都必须的吗?

一个 web 中完全可以没有 web.xml 文件,也就是说, web.xml 文件并不是 web 工程必须的。

那什么时候需要,什么时候可以不需要呢?

要想回答上面的问题,得先了解 web.xml 文件使用来干什么的。 web.xml 文件是用来配置:欢迎页、 servlet filter 等的。当你的 web 工程没用到这些时,你可以不用 web.xml 文件来配置你的 web 工程。

?

那么 web.xml 能做的所有事情都有那些?

?

其实, web.xml 的模式 (Schema) 文件中定义了多少种标签元素, web.xml 中就可以出现它的模式文件所定义的标签元素,它就能拥有定义出来的那些功能。 web.xml 的模式文件是由 Sun 公司定义的,每个 web.xml 文件的根元素 <web-app> 中,都必须标明这个 web.xml 使用的是哪个模式文件。如:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"

? 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_2_5.xsd">

</web-app>

?

??? 而且 web.xml 的模式文件中定义的标签并不是定死的,模式文件也是可以改变的,一般来说,随着 web.mxl 模式文件的版本升级,里面定义的功能会越来越复杂,也即标签元素的种类会越来越多,但有些是不常用的,我们只需记住一些常用的就可以了。

?

?

??? 下面列出 web.xml 常用的标签元素及这些标签元素的功能:

?

1 、指定欢迎页面,例如:

<welcome-file-list>

? <welcome-file-list>

??? <welcome-file>index.jsp</welcome-file>

??? <welcome-file>index1.jsp</welcome-file>

? </welcome-file-list>

上面的例子指定了 2 个欢迎页面,显示时按顺序从第一个找起,如果第一个存在,就显示第一个,后面的不起作用。如果第一个不存在,就找第二个,以此类推。

?

关于欢迎页面:

?

??? 访问一个网站时,默认看到的第一个页面就叫欢迎页,一般情况下是由首页来充当欢迎页的。一般情况下,我们会在 web.xml 中指定欢迎页。但 web.xml 并不是一个 Web 的必要文件,没有 web.xml ,网站仍然是可以正常工作的。只不过网站的功能复杂起来后, web.xml 的确有非常大用处,所以,默认创建的动态 web 工程在 WEB-INF 文件夹下面都有一个 web.xml 文件。

?????? 对于 tomcat 来说,当你只指定一个 web 的根名,没有指定具体页面,去访问时一个 web 时, 如果 web.xml 文件中配置了欢迎页,那么就返回指定的那个页面作为欢迎页,而在文中没有 web.xml 文件,或虽然有 web.xml ,但 web.xml 也没指定欢迎页的情况下,它默认先查找 index.html 文件,如果找到了,就把 index.html 作为欢迎页还回给浏览器。如果没找到 index.html tomcat 就去找 index.jsp 。找到 index.jsp 就把它作为欢迎页面返回。而如果 index.html index.jsp 都没找到,又没有用 web.xml 文件指定欢迎页面,那此时 tomcat 就不知道该返回哪个文件了,它就显示 The requested resource (/XXX) is not available 的页面。其中 XXX 表示 web 的根名。但如果你指定了具体页面,是可以正常访问的。

?

2 、命名与定制 URL 。我们可以为 Servlet JSP 文件命名并定制 URL, 其中定制 URL 是依赖一命名的,命名必须在定制 URL 前。下面拿 serlet 来举例:

(1) 、为 Servlet 命名:

<servlet>

??? <servlet-name>servlet1</servlet-name>

??? <servlet-class>net.test.TestServlet</servlet-class>

</servlet>

?

(2) 、为 Servlet 定制 URL

<servlet-mapping>

??? <servlet-name>servlet1</servlet-name>

??? <url-pattern>*.do</url-pattern>

</servlet-mapping>

?

?

3 、定制初始化参数:可以定制 servlet JSP Context 的初始化参数,然后可以再 servlet JSP Context 中获取这些参数值。下面哪 servlet 来举例:

<servlet>

??? <servlet-name>servlet1</servlet-name>

??? <servlet-class>net.test.TestServlet</servlet-class>

??? <init-param>

????????? <param-name>userName</param-name>

????????? <param-value>Tommy</param-value>

??? </init-param>

??? <init-param>

????????? <param-name>E-mail</param-name>

????????? <param-value>Tommy@163.com</param-value>

??? </init-param>

</servlet>

经过上面的配置,在 servlet 中能够调用 getServletConfig().getInitParameter("param1") 获得参数名对应的值。

?

4 、指定错误处理页面,可以通过“异常类型”或“错误码”来指定错误处理页面。

<error-page>

??? <error-code>404</error-code>

??? <location>/error404.jsp</location>

</error-page>

-----------------------------

<error-page>

??? <exception-type>java.lang.Exception<exception-type>

??? <location>/exception.jsp<location>

</error-page>

?

5 、设置过滤器:比如设置一个编码过滤器,过滤所有资源

<filter>

??? <filter-name>XXXCharaSetFilter</filter-name>

??? <filter-class>net.test.CharSetFilter</filter-class>

</filter>

<filter-mapping>

??? <filter-name>XXXCharaSetFilter</filter-name>

??? <url-pattern>/*</url-pattern>

</filter-mapping>

?

6 、设置监听器:

<listener>

<listener-class>net.test.XXXLisenet</listener-class>

</listener>

?

7 、设置会话 (Session) 过期时间,其中时间以分钟为单位,假如设置 60 分钟超时:

<session-config>

<session-timeout>60</session-timeout>

</session-config>

?

除了这些标签元素之外,还可以往 web.xml 中添加那些标签元素呢,那些标签元素都能起什么作用呢?我们只要去查看 web.xml 的模式文件就能知道。直接看模式文件看不懂,可以找一些中文教程来看看。

  相关解决方案