web.xml文件主要配置有哪些,都有什么含义

web.xml文件主要配置有哪些,都有什么含义,第1张

①webxml文件是用来配置:欢迎页、servlet、filter等配置文件用的。当你的web工程没用到这些时,你可以不用webxml文件来配置你的web工程

webxml的模式文件中定义的标签并不是定死的,模式文件也是可以改变的,一般来说,随着webmxl模式文件的版本升级,里面定义的功能会越来越复杂,

也即标签元素的种类会越来越多,但有些是不常用的,我们只需记住一些常用的就可以了。

首先是定义头和根元素

声明为xml文件,版本为10,编码为utf-8

声明该文件的内容可以使用xsi的标签库

声明标签的使用范围是被javaee的开发使用的

声明可以使用的标签库和对应的具体的标签库版本地址。

webxml的模式(Schema)文件中定义了多少种标签元素,它就能拥有定义出来的那些功能

随着webmxl模式文件的版本升级,里面定义的功能会越来越复杂,也即标签元素的种类会越来越多

定义项目的名称

项目名称

欢迎页面

servlet

配置springmvc DispatcherServlet( 前台控制器)-->example这个Servlet的名字是example,可以有多个DispatcherServlet,是通过名字来区分的。

async-supported

启动一个新的线程去处理你的请求,完成之后调用你指定的回调函数来完成整个异步 *** 作。

一般的jsp是通过地址栏输入一个地址,或者提交表单的方式发送请求的,这样网页都会被刷新。但是如果你在jsp页面发送一个ajax请求的话,跟前两种不同,

后台会返回给jsp页面内容,页面不会直接刷新,这样可以把返回的数据写在页面的div中,这样就完成了页面的局部刷新。

举个例子,baidu你做一个查询功能,页面上有查询条件和查询结果显示区域,你可以点查询按钮的时候通过ajax异步发送你的查询条件,

而你得到后台返回的查询结果后,更新你的jsp页面的查询结果,jsp的其他部分,比如查询条件,都没有更新,jsp没有刷新,而是更新了查询结果这一块内容

  url-pattern   默认匹配所有请求Servlet拦截匹配规则可以自已定义1、拦截do、htm, 例如:/user/adddo,这是最传统的方式,最简单也最实用。不会导致静态文件(jpg,js,css)被拦截。2、拦截/,例如:/user/add,可以实现现在很流行的REST风格。很多互联网类型的应用很喜欢这种风格的URL。弊端:会导致静态文件(jpg,js,css)被拦截后不能正常显示。

监听器

Listener获取的是Web应用ServletContext(application)的配置参数。-为Web应用配置Listener的两种方式: 使用@WebListener修饰Listener实现类即可 在webxml文档中使用进行配置。我们选择webxml这种配置方式,只有一个元素指定Listener的实现类

②启动WEB项目的时候,Tomcat容器首先会去它的配置文件读取两个节点listener和context-param。

然后Tomcat会创建一个ServletContext(application),WEB项目所有部分都将共享这个上下文

将applicationContextxml存入ServletContext中

Tomcat容器根据class类路径来创建监听

上面这些都是在web项目还没有完全启动起来就完成的工作,而servlet是在第一次发起请求时被实例化的

而且一般不会被容器销毁,并服务于多个用户的请求

webxml的加载顺序是: context-param-> listener -> filter -> servlet

filter

Filter可认为是Servlet的“增强版”,因此Filter配置与Servlet的配置非常相似,需要配置两部分:配置Filter名称和Filter拦截器URL模式。区别在于Servlet通常只配置一个URL,而Filter可以同时配置多个请求的URL。配置Filter有两种方式:

在Filter类中通过Annotation进行配置。

在webxml文件中通过配置文件进行配置。

①百度

②>如何创建一个XML文件,然后创建一个与之关联的样式表文件? <PageView
</PageView
这里说明简单的概念,虽然很多书上都有说,这里还是做个简单的说明。
第一句是 处理指令以<开始,而以结束。
XML声明有version、encoding、standalone三个特性。其中standalone指名该xml后台是否有dtd文件支持。
创建一个样式表文件,存储为firstcss
PageView{font-size:24pt ; font-weight: bold; color:red;}
仍然是处理指令!这个处理指令是是<xml-stylesheet和它的两个特性,type和href。type特性指定所用的样式语言,而href特性指定一个可以找到样式单的URL(可能是相对的)。这里就在firstxml中的第一行之后,增加一行,
这样在浏览firstxml就可以看到你要的效果了!纯属备忘!
C#如何创建一个xml文件
首先创建 XmlDocument xml文档
XmlDocument xml = new XmlDocument();
创建根节点 config
XmlElement config = xmlCreateElement("Config");
把根节点加到xml文档中
xmlAppendChild(config);
创建一个节点 path(用于做子节点)
XmlElement path = xmlCreateElement("Path");
path节点中的文本内容为 E:\Test\ @用于转义后面的'\'
pathInnerText = @"E:\Test\";
将path添加为config的子节点
configAppendChild(path);
以下Regex同理
XmlElement regex = xmlCreateElement("Regex");
regexInnerText = "<![CDDATA[@^abc$]]>";
configAppendChild(regex);
XmlElement ini = xmlCreateElement("ini");
所以我们需要创建 ini标签里的xml属性 属性名为timeout
XmlAttribute timeout = xmlCreateAttribute("timeout");
timeout属性的内容为200
timeoutInnerText = "200";
标签ini里的文档内容为 time
iniInnerText = "time";
创建完标签的属性timeout 后需要将其添加到ini标签的属性里
iniAttributesAppend(timeout);
最后将ini标签添加到config 父节点里
configAppendChild(ini);
最后将整个xml文件保存在D盘
xmlSave(@"D:\abcxml");
怎么创建一个webxml文件
我们首先打开Eclipse,如下:
我们可以看到在”WEB-INF“文件夹下没有webxml文件。
这是是什么原因呢,我们来看看,我们首先来新建一个web工程,如下:
我们点击”文件“,如下:
我们点击上图中标出的位置,如下:
我们再点击”下一步“,而不是直接点”完成“,如下:
我们再点击”下一步“,如下:
问题的关键就在上图中标出的位置,我们勾选该选项即可。我们再点击”完成“,如下:
如何在Android Studio中创建一个selectorxml文件
1、selectorxml属于drawable文件夹下的用法,创建该文件时,首先在res文件夹下新建drawable文件夹
2、点击drawable文件夹,鼠标右键"New——>Drawable resource file",输入文件名,选择默认根标签:selector
3、例子:
<selector xmlns:android=":schemasandroid/apk/res/android"><itemandroid:drawable="@drawable/shape_red_corners_button_pressed"android:state_pressed="true"/><itemandroid:drawable="@drawable/shape_red_corners_button"android:state_pressed="false"/></selector>
在drawable文件夹上右击New->Drawable resource file就可以创建了,默认就是selector父标签。

在Android Studio菜单上,依次选择:
File
New
Xml
Layout xml File
Android Studio 是一个Android开发环境,基于IntelliJ
IDEA 类似 Eclipse ADT,Android Studio 提供了集成的
Android 开发工具用于开发和调试。
在IDEA的基础上,Android Studio 提供:
基于Gradle的构建支持
Android 专属的重构和快速修复
提示工具以捕获性能、可用性、版本兼容性等问题
支持ProGuard 和应用签名
基于模板的向导来生成常用的 Android
应用设计和组件
功能强大的布局编辑器,可以让你拖拉 UI 控件并进行效果预览
方法一:在drawable目录上点击右键,d出菜单中有Drawable resource file选项,对话框里填写文件名称和文件类型 。
方法二:在drawable目录的上级目录(res或更上级的目录)点击右键,d出菜单中有Android resource file选项,对话框里的类型选择drawable ,然后下一栏写你要创建的文件类型 。

在webxml中进行配置,对所有的URL请求进行过滤,就像"击鼓传花"一样,链式处理。

配置分为两种A和B。

A:普通配置

在webxml中增加如下内容:

由filter和filter-mapping构成。filter指定过滤器处理类(实现了Filter接口),filter-mapping指定过滤的规则。
B:高级配置(允许代理注入Spring bean)

在webxml中增加如下内容:

在spring bean配置中加入:

因为filter比bean先加载,也就是spring会先加载filter指定的类到container中,这样filter中注入的spring bean就为null了。

解决办法:
先filter中加入DelegatingFilterProxy类,"targetFilterLifecycle"指明作用于filter的所有生命周期。
原理是,DelegatingFilterProxy类是一个代理类,所有的请求都会首先发到这个filter代理,然后再按照"filter-name"委派到spring中的这个bean。

在Spring中配置的bean的name要和webxml中的<filter-name>一样

此外,spring bean实现了Filter接口,但默认情况下,是由spring容器来管理其生命周期的(不是由tomcat这种服务器容器来管理)。如果设置"targetFilterLifecycle"为True,则spring来管理Filterinit()和Filterdestroy();若为false,则这两个方法失效!!

B和A最大的不同是,A是一个filter,优先被加载到container中,无法调用spring中后续的bean;而B是一个spring bean,可以引用其他的bean,而请求都通过DelegatingFilterProxy类委派给B!

B的另外一种配置方式:

也就是增加一个"targetBeanName"的参数,值为实际执行Filter的bean。

Webxml常用元素
<web-app>
<display-name></display-name>定义了WEB应用的名字
<description></description> 声明WEB应用的描述信息

<context-param></context-param> context-param元素声明应用范围内的初始化参数。
<filter></filter> 过滤器元素将一个名字与一个实现<a href=">引用命名空间:using SystemXml
1检查所要 *** 作的xml文件是否存在:
SystemIOFileExists(文件路径及名称);
2得到xml文件:
(1)在aspnet中可以这样得到:
XmlDocument xmlDoc = new XmlDocument();
//导入xml文档
xmlDocLoad( ServerMapPath("xmlTestingxml"));
//导入字符串
//xmlDocLoadXml("<bookStore> <book id="01" price="35元"> 读者</book></bookStore>");
注:ServerMapPath("xmlTestingxml")此时的xmlTestingxml文件必须是在当前的解决方案里;同样可以写成完整的物理路径xmlDocLoad (@"E:"软件学习"测试"myNoteWeb"xmlTestingxml")
(2)在windForm中 直接用物理路径得到所要 *** 作的xml文件具体实现方法同上
3创建xml文件:
XmlDocument xmlDoc = new XmlDocument(); //创建xml文档(实例化一个xml)
XmlNode root = xmlDocCreateElement("bookStore");//创建根节点
//创建第1个子结点:
XmlNode bookNode = xmlDocCreateElement("book");
bookNodeInnerText = "读者";
//为此节点添加属性
法1:
bookPublishNodeSetAttribute("id", "01")
rootAppendChild(bookNode);
法2:
XmlAttribute xmlattribute = tempXmlDocCreateAttribute("price");
xmlattributeValue = "35元";
tempRoot Attributes Append (xmlattribute )
//创建第2个根节点的子结点:
XmlNode tempBookNode = xmlDocCreateElement("tempbook ");
tempBookNodeInnerText ="文摘";
rootAppendChild(tempBookNode);
xmlDocAppendChild(root); //将根节点添加到xml文档中
try
{
xmlDocsave(“bookInfoxml”);//xml将保存到当前解决方案的目录下
}
catch (Exception ex)
{
MessageBoxShow(exMessage); //显示错误信息
}
得到的xml文档如下:
<xml version="10" encoding="utf-8" >
<bookStore>
<book id ="01" price="35元">
读者
</book>
<tempbook id ="02">
文摘
</tempbook >
</bookStore>
4读取,修改xml信息
tempTestingxml文件的内容如下:
<xml version="10" encoding="utf-8">
<bookStore>
<book id="01" price="35元">
读者
</book>
<book id="02" price="5元">
<bookname>百家讲坛</bookname>
<bookpublish>文学出版社</bookpublish>
</book>
<tempbook id="0000">漫画tempbook>
</bookStore>
(1) 得到xml文件的xml信息
XmlDocument xmlDoc = new XmlDocument();
xmlDocLoad( ServerMapPath("xmlTestingxml"));
XmlNode root=xmlDocDocumentElement;
(2) 得到节点
//得到id为2book节点下的所有节点
XmlNodeList xmlNodes = rootSelectNodes("//book[@id='02']//");
XmlNode tempNode = xmlNodes[0];//得到第一个节点
//将tempbook强制转化为XmlElement
XmlElement xmlelement = (XmlElement)rootSelectSingleNode("tempbook");
(3) 修改节点内容
XmlNode tempBook = rootSelectSingleNode("tempbook");//修改节点内容
tempBook InnerText="漫画";
(4)得到节点的属性值并修改:
//得到节点的属性
//法1
XmlAttributeCollection attrbute= tempBookAttributes;
string bookID = attrbute[0]Value;
//法2:
string bookid = tempBookAttributes[0]ValueToString();
//修改节点属性的值
tempBookAttributes[0]Value = "0000";
(5)添加一个根节点
XmlNode node = xmlDocCreateElement("testing");
nodeInnerText = "testing";
rootAppendChild(node);
(6)保存修改后的文档
xmlDocSave(ServerMapPath("tempTestingxml"));
其他:
(一)显示xml信息
1以xml文档的样式显示:xmlDocouterxml;
2显示各个节点
XmlNode root = xmlDocDocumentElement;//得到根节点:
if (rootChildNodesCount > 0)
{
XmlNode xmlnode = rootFirstChild;//得到子结点:
for (int i = 0; i < rootChildNodesCount; i++)
{
MessageBoxShow(xmlnodeFirstChild InnerText);
xmlnode = xmlnodeNextSibling;或mlNode subNode2 = rootLastChild;
}
}
else
MessageBoxShow("没有内容!");
(二)将数据库的信息导入为xml
XmlDocument xmlDocItem = new XmlDocument();
DataSet ds = GetDataSet(strtsql);//调用方法从数据库中得到DataSet。
xmlDocItemLoadXml(ds GetXml ());//导入xml中;
以下是在网络上找到的关于C# *** 作xml文件的总结
一:创建并保存xml文件
string FileName =ApplicationStartupPath+"""phonexml";
XmlTextWriter objXmlTextWriter = new XmlTextWriter(FileName,EncodingDefault);
objXmlTextWriterFormatting = FormattingIndented;
objXmlTextWriterIndentation = 6;
objXmlTextWriterWriteStartDocument();
objXmlTextWriterWriteStartElement("", "PhoneBook", "");
objXmlTextWriterWriteStartElement("", "Name", "");
objXmlTextWriterWriteString("加菲尔德");
objXmlTextWriterWriteEndElement();
objXmlTextWriterWriteStartElement("", "Number", "");
objXmlTextWriterWriteString("5555555");
objXmlTextWriterWriteEndElement();
objXmlTextWriterWriteStartElement("", "City", "");
objXmlTextWriterWriteString("纽约");
objXmlTextWriterWriteEndElement();
objXmlTextWriterWriteStartElement("", "DateOfBirth", "");
objXmlTextWriterWriteString("26/10/1978");
objXmlTextWriterWriteEndElement();
objXmlTextWriterWriteEndElement();
objXmlTextWriterWriteEndDocument();
objXmlTextWriterFlush();
objXmlTextWriterClose();
这段代码在win2003ser+vs2005环境下测试通过,出来的效果很好,也比较容易理解,我一般就是用这段代码创建XML文件。
二、读取、修改XML文件的某个节点的值
string path = "phonexml";
XmlDocument doc = new XmlDocument();
docLoad(path);
//读所有节点表
XmlNamespaceManager xnm = new XmlNamespaceManager(docNameTable);
//读取节点值
XmlNode node = docSelectSingleNode("/PhoneBook/Name", xnm); //nodeInnerText 就是读取出来的值
//修改节点值
nodeInnerText="要修改的内容";
//保存修改后的内容
docSave(path);

这个文件可以配置很多东西的,这个是一个web项目所必备的。
譬如配置servlet,listener,filter,Spring ,struts 等等,具体要看你需要配置什么,也都不是很难,都有一定的模式可寻

为什么把struts2的配置文件,引入webxml呢

<!-- 定义Struts2的FilterDispatcher的Filter -->
<filter>
<!-- 定义核心Filter的名字 -->
<filter-name>struts2</filter-name>
<!-- 定义核心Filter的实现类 -->
<filter-class>orgapachestruts2dispatcherngfilterStrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- FilterDispatcher用来初始化Struts2并且处理所有的Web请求 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>do</url-pattern>
</filter-mapping>

这样写不就行了吗?


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13338799.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-17
下一篇 2023-07-17

发表评论

登录后才能评论

评论列表(0条)

保存