web.xml文件的作用

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

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


web.xml文件是用来初始化配置信息:比如Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别等。

当你的web工程没用到这些时,你可以不用web.xml文件来配置你的Application。


每个xml文件都有定义它书写规则的Schema文件,也就是说javaEE的定义web.xml所对应的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> 
PS:指定了2个欢迎页面,显示时按顺序从第一个找起,如果第一个存在,就显示第一个,后面的不起作用。如果第一个不存在,就找第二个,以此类推。 

关于欢迎页面: 

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


2、命名与定制URL。我们可以为Servlet和JSP文件命名并定制URL,其中定制URL是依赖命名的,命名必须在定制URL前。下面拿serlet来举例: 
(1)、为Servlet命名: 
<servlet> 
    <servlet-name>servlet1</servlet-name> 
    <servlet-class>org.whatisjava.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>org.whatisjava.TestServlet</servlet-class> 
    <init-param> 
          <param-name>userName</param-name> 
          <param-value>Daniel</param-value> 
    </init-param> 
    <init-param> 
          <param-name>E-mail</param-name> 
          <param-value>125485762@qq.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中添加很多标签元素,由于不常用省略。


文章原作者:http://www.cnblogs.com/yqskj/articles/2233061.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 扫描mipi设备,VS-RK3399 在linux系统下面调试Mipi camera接口介绍

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼debian系统目前支持Usb camera是没有问题&#xff0c;走UVC功能接口。那么mipi 接口camera和并口接口的camera&#xff0c;在Debian系统怎么设置呢&#xff0c;其实原理一样&#xff0c;也走uvc接口封装函数.下面深圳视壮给大家简单…

hadoop window 搭建

hadoop 原理参考&#xff1a;用 Hadoop 进行分布式并行编程官方中文文档&#xff1a;http://hadoop.apache.org/core/docs/r0.18.2/cn/index.html1. 首先安装 cygwin ssh 参考 windows ssh 搭建2. 搭建hadoop 参考 Cygwin下的Hadoop快速入门-伪分布式模式的查缺补漏 这里…

一篇文章解释struts常用功能

一、什么是框架&#xff1f; 来源于建筑行业&#xff0c;如果建筑一个茅草屋&#xff0c;不需要框架&#xff0c;如果建造一个几个亿的摩天大楼&#xff0c;就需要框架。 小系统用框架浪费人力&#xff0c;中大型系统用框架。 软件中的框架&#xff0c;是一种半成品。实现了一些…

webpack 3 零基础入门教程 #12 - 如何使用模块热替换 HMR 来处理 CSS

模块热替换 是什么意思&#xff1f; 以前我们使用的 webpack --watch 或 webpack-dev-server 的功能是监听文件改变&#xff0c;就自动刷新浏览器&#xff0c;而这个 模块热替换 不用刷新浏览器&#xff0c;它是只让修改到的模块&#xff0c;才会在浏览器上发生相应的变化&…

struts2访问jsp页面404

问题描述 在搭建struts2环境的时候&#xff0c;拷贝了web.xml&#xff0c;拷贝了struts.xml&#xff0c;拷贝了jar包。运行&#xff0c;正常&#xff0c;访问jsp页面&#xff0c;报404错误。 web.xml <?xml version"1.0" encoding"UTF-8"?> <w…

centos7定制linux镜像,自定制Centos7.3系统镜像(ISO)

本文主要介绍如何根据官方的Centos镜像文件&#xff0c;在保留原有默认安装的RPM包的基础下&#xff0c;添加自己所需要的RPM包的&#xff0c;最终生成一个自定制版的ISO&#xff0c;节省了宝贵的时间并确保了安装的定制性。对于其他没有介绍的修改&#xff0c;后续在实践中会进…

调用打开另外一个APK

2019独角兽企业重金招聘Python工程师标准>>> Intent mIntent new Intent(); mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ComponentName comp new ComponentName("com.mm.android.direct.gdmssphoneLite", "com.mm.android.direct.gdmsspho…

Jquery Mobile dialog的生命周期

JQuery Mobile对htm5的移动开发绝对是个好用的东西&#xff0c;今天简单谈谈JQuery Mobile中的dialog的使用。 1.对话框的弹出。 2.对话框的生命周期。 3.对话框内事件的注册。 1&#xff09;第一个问题&#xff1a;对话框的弹出。 如果要弹出一个对话框&#xff0c;可以在页面…

基本linux命令vi,基本linux和vi命令.pdf

基本linux和vi命令DETIBIHORP ___________________YLTCIR 附录 BTSSIR 基本的 Linux 和ETUP vi 命令 yM lO nC oS___________________I eH sT uM NOR OF IS TL AAI RR OET PA RMT OIK

集成Java内容仓库和Spring

JCR模块 Spring Modules的一部分&#xff0c;JCR模块的主要目标是&#xff1a;以一种类似Spring主分发包中ORM包的方式&#xff0c;简化使用JSR-170 API进行开发。特点如下&#xff1a; JcrTemplate&#xff0c;允许执行JcrCallback和异常处理&#xff08;将需检查的JCR异常转换…

jQuery Mobile弹出对话框后不刷新原页面,保持原页面内容不变

使用jQuery Mobile开发移动应用程序时&#xff0c;在一个页面上弹出对话框&#xff0c;关闭对话框后&#xff0c;发现原来的页面被刷新了。如果原页面上有一些已经选择或者填写的数据&#xff0c;则这些数据就会丢失。这时候&#xff0c;就需要对对话框的返回按钮做一些处理&am…

mpi4py linux例子,python-3.x – mpi4py中的共享内存

我使用MPI(mpi4py)脚本(在单个节点上),它与一个非常大的对象一起使用.为了让所有进程都可以访问该对象,我通过comm.bcast()分发它.这会将对象复制到所有进程并占用大量内存,尤其是在复制过程中.因此,我想分享像指针而不是对象本身.我发现memoryview中的一些功能对于增强进程内对…

c语言源程序最多可能由组成,一个C语言源程序由若干函数组成,其中至少应含有一个()。...

个C语言源由I am interested in the training course, which _____ at Hilton Hotel in Beijing from March 8 to 12, 2018.程序成“万物莫不有对”体现了中国传统哲学的矛盾观。用户在进行产品的三维设计时&#xff0c;干函可以采用以下( )的设计方法。数组少意识是人脑对客观…

oracle的背景

oracle简介 1977年 美国人 Larry 成立软件开发实验室 。 1980年 用c/c开发了世界第一个商用关系型数据库&#xff08;RDBMS&#xff09;。 1983年 公司更名为Oracle Corporation&#xff08;甲骨文公司&#xff09;。 2009年4月21日&#xff0c;Oracle收购Sun公司。 30多…

Citrix Netscaler版本管理和选择

Citrix Netscaler版本管理和选择 来源 http://blog.51cto.com/caojin/1898164 随着Citrix Netscaler的快速发展&#xff0c;有很多人在维护设备时经常搞不懂Netscaler软件版本是如何查看和选择&#xff0c;当前软件是否需要升级&#xff0c;当前软件是否稳定等。基于以上问题&a…

树的基本操作代码 c语言,二叉树的基本操作(C语言、源代码)

二叉树的基本操作(源代码)#include "stdio.h"#include "malloc.h"#define MAX 100typedef struct node{int date;struct node *lchild,*rchild;}bitnode,*bitree;bitree createbitree(bitree bt){int m;printf("m");scanf("%d",&m…

oracle实例与数据库

一、名称 Oracle数据库服务器。单叫数据库或服务器都不全面。 二、组成 oracle数据库服务器由二部份组成&#xff1a;实例和数据库 实例&#xff1a; 可理解为对象&#xff0c;看不见。数据库&#xff1a; 理解为类&#xff0c;看得见的&#xff0c;E:\app\Administrator\…

1.Dao代码如何编写?

Dao代码如何编写&#xff1f; 1、操作xml数据。数据保存在xml文件里。2、使用jdbc技术。2.1、原始的jdbc操作&#xff0c;connection&#xff0c;statement&#xff0c;resultset。2.2、自定义一个持久层的框架&#xff0c;封装通用的dao操作方法。2.3、DbUtils组件&#xff0c…

WEB前端面试题汇总整理01

1.JS找字符串中出现最多的字符 例如&#xff1a;求字符串nininihaoa中出现次数最多字符 var str "nininihaoa"; var o {}; for (var i 0, length str.length; i < length; i) {var char str.charAt(i);if (o[char]) {o[char]; //次数加1} else {o[char] 1;…

c语言 文件游程统计,游程 码表 如何形成

游程 码表 如何形成求一个程序 将下表用huffman 树存储表示用传统的霍夫曼建立的树 好像不能形成此码表。我感觉应该有一个特等的算法。我也试了好几种方法&#xff0c;感觉都不行&#xff0c;希望大家给点建议。(码表 要利于编码和解码)(部分码表)白游程 码子 黑游程 码子(长…