当前位置:首页 » 数据仓库 » 怎么配置好的xml文件
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

怎么配置好的xml文件

发布时间: 2022-04-16 02:06:02

A. ssh框架的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">

<!-- 配置spring的监听器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>

<!-- 开启监听 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

<!-- 配置OpenSessionInViewFilter,必须在struts2监听之前 -->
<!--
<filter>
<filter-name>lazyLoadingFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>lazyLoadingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
<!-- 设置监听加载上下文 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern> <!--注意:千万不能写成:*.action ,如果需要:*.action应该配置在struts.xml中-->
</filter-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

B. 如何配置Tomcat Server.xml文件详解

server.xml常用的配置也就是访问端口和连接超时的配置通常会使用默认
如果同一台服务器上部署两个tomcat两个tomcat的端口不能冲突,需要修改三个port,如下:

编码格式配置:URIEncoding="UTF-8"

C. 如何调试xml配置文件

在Eclipse下编辑XML文件时可以像Java文件一样进行格式化。不过,默认的格式化设置效果不太理想,尤其是标签属性较多时。
通过以下设置可以达到一个相对理想的效果:
Window -> Preferences -> XML ->XML Files -> Editor :
1.1设置每行宽度
Line width 设定为80到100个字符。
1.2标签的每个属性都单独一行显示:
选中Split multiple attributes each on a new line
1.3 标签结束符不单独占用一行:
不选中Align final bracket in multi-line element tags
1.4去掉所有空行:
选中Clear all blank lines
1.5 在标签结束符前添加空格:
选中Insert whitespace before closing empty end-tags
1.6缩进使用空格代替tab:
选中Indent using spaces
1.7 设定缩进宽度
Indentation size 设定为4,即缩进4个空格。

D. tomcat中的xml文件该如何配置

你看看这个:
tomcat6_apache2.2_ajp负载均衡加集群实战
环境:
--------------------------------------------
一台apache2.2服务器,三台tomcat服务器:

apache2.2服务器
1.ip:192.168.1.20
2.只装apache软件:httpd-2.2.6.tar.bz2
安装路径:/usr/local/apache2

tomcat服务器:均配置相同的应用。
1.集群名:balancer://tomcatcluster
2.三台集群服务器ip:
IP_1:192.168.1.31
IP_2:192.168.1.32
IP_3:192.168.1.33
3.测试应用程序test文件夹放在tomcat6的webapps目录下

操作系统均为:centos 4.5_x86
jre:1.6:jdk-6u1-linux-i586-rpm.bin
tomcat6.0:编译好的二进制软件包apache-tomcat-6.0.13.tar.gz
tomcat6.0 安装路径:/usr/local/tomcat6

oralce的jdbc:class12.jar

软件包存放的路径:/home/xiutuo/software/
java安装路径:/usr/java/jdk1.6.0_01
使用普通用户:xiutuo来启动tomcat6
tomcat6开机自动启动脚本:/etc/init.d/tomcat

下载路径:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

一:前言:

1.apache对tomcat集群支持有俩种方式:

a.通过apache2.1之后版本后内置的proxy_ajp。
b.对于apache2.1之版本则通过tomcat的jk2.0.4的mod_jk2.so:
(该版本已经停止开发)
将解压缩后的目录中的moles目录中的mod_jk2.so
文件复制到apache的安装目录下的moles目录中。
********************
俩种方式比较:
proxy_ajp配置较简单,主要表现在proxy_ajp目前只支持配置到目录,
还不支持对文件名称的pattern模式匹配
(即还不能定义到只对jsp文件起作用)。

而jk2则可配置性强,但已经停止开发
********************

官方对ajp和jk2说明:
JK2 has been put in maintainer mode and no further development will take place.
The reason for shutting down JK2 development was the lack of developers interest.
Other reason was lack of users interest in adopting JK2,
caused by configuration complexity when compared to JK.

The latest official JK2 release is 2.0.4.

JK2 will have it's successor within core Apache2.1/2.2 distribution.
We have developed new proxy_ajp that is an addition to the mod_proxy
and uses Tomcat's AJP protocol stack. It is developped in httpd-2.1
and integrated in it. We have also developed a new proxy_balancer
mole for load balancing http and ajp protocol stacks.

JK will be fully supported for all other web servers.
The next JK release is planned for the end of November.
Lots of code from JK2 has been ported to JK

2.tomcat集群方式:
a.DeltaManager
--现在采用的该方式:内部机器集群少采用
b.BackupManager
********************
两种集群方式官方说明:
using the DeltaManager to replicate session deltas.
By all-to-all we mean that the session gets replicated to
all the other nodes in the cluster. This works great for smaller cluster
but we don't recommend it for larger clusters(a lot of tomcat nodes).
Also when using the delta manager it will replicate to all nodes,
even nodes that don't have the application deployed.

To get around this problem, you'll want to use the BackupManager.
This manager only replicates the session data to one backup node,
and only to nodes that have the application deployed.Downside of
the BackupManager: not quite as battle tested as the delta manager.
********************

3.负载均衡(load-balance)定义:
在服务器端短时间内获得大量的请求,单一服务器无法在一个较短的时间内响应这些请求,
此时服务器需要一个机制,请求按照多个服务器不同的负载能力,把这些请求合理的分配。

4.集群(cluster):
在多个服务器之间共享用户信息,资源等。

tomcat6_apache2.2负载均衡加集群:高可用性至高体现。
现在的带集群功能相关软件oracle10g,mysql5,tomcat等。

二:软件安装

1.apache服务器安装:
这里主要介绍apache2的源码安装
# cd /home/xiutuo/software/
# tar -zvxf httpd-2.2.6.tar.gz
# cd httpd-2.2.6
# mkdir -p /usr/local/apache2
# ./configure \
--prefix=/usr/local/apache2 \
--enable-moles=so \
--enable-mods-shared=all \
--enable-proxy \
--enable-proxy-connect \
--enable-proxy-ftp \
--enable-proxy-http \
--enable-proxy-ajp \
--enable-proxy-balancer

注释:这里测试用,编译了所有可用模块,并激活了tomcat集群需要的
enable-proxy,enable-proxy-http,enable-proxy-connect,enable-proxy-ajp
和enable-proxy-balancer,其中proxy-ajp和proxy-balancer必须依赖proxy,
如果是自定义的编译除了以上几个必须的模块外,mod_status也要编译进去,切记。
enable-proxy-ftp可以不编译。
# make
# make install

2. 三台tomcat服务器安装

主要介绍jdk1.6u1和tomcat6的安装,三台机器重复此工作就可以了,
当然记得ip一定要设置正确。

jdk1.6安装
-------------------------------
a.卸载系统自带jdk
# rpm -e j2sdk-1.4.1-fcs

b.安装新jdk
# cd /home/xiutuo/software
进入软件包存放目录

# chmod a+x jdk-6u1-linux-i586-rpm.bin
使它有执行权限

# ./jdk-6u1-linux-i586-rpm.bin
多敲几个空格,然后看到[yes]的时候输入yes,回车
然后在当前目录下就生成了jdk-6u1-linux-i586-rpm

# rpm -ivh jdk-6u1-linux-i586-rpm

c.设置环境变量
仅设置某个用户而不是所有用户可以修改~/.cshrc,~/.bash_profile文件,
追加下面一段,如果为所有用户以及以后添加的用户都加上环境变量的话,
追加/etc/profie文件.
***主意不要在profile和~/.cshrc或~/.bash_profile中重复追加**

这里:
# vi /etc/profile
//java
//如果你安装的j2sdk的路径不一样,请自行修改

JAVA_HOME=/usr/java/jdk1.6.0_01
export JAVA_HOME
CLASSPATH=/usr/java/jdk1.6.0_01/lib:/usr/java/jdk1.6.0_01/jre/lib
export CLASSPATH
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export PATH
JRE=/usr/java/jdk1.6.0_01/jre
export JRE

d:立即生效
//如果你修改的是/etc/profile
# source /etc/profile
//如果你修改的是~/.cshrc
# source ~/.cshrc
//如果你修改的是~/.bash_profile
# source ~/.bash_profile

e:测试成功否
# java -version
Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)
看到这个消息,就ok啦
----------------------------------------------

tomcat6安装
tomcat6更详细的安装请看blog上tomcat文章
----------------------------------------------
a.安装tomcat,
# cd /home/xiutuo/software //进入软件包存放目录
# tar -zvxf apache-tomcat-6.0.13.tar.gz //解压
# mv apache-tomcat-6.0.13 /usr/local/tomcat6 //安装

# cd /usr/local/tomcat6/bin/ //进入安装目录
# tar -zvxf jsvc.tar.gz //解压
# cd jsvc-src //进入jsvc-src目录
# autoconf
# ./configure --with-java=/usr/java/jdk1.6.0_01
# configure时切记加java的jdk路径,否则无法使用普通用户开机自动启动tomcat

# make //编译生成jsvc文件
# cp jsvc .. //拷贝jsvc到上级目录
# cd .. //回到上级目录

# cd /usr/local/tomcat6/

//运行下面的命令可以使tomcat以daemon方式运行
# ./bin/jsvc -cp ./bin/bootstrap.jar \
-outfile ./logs/catalina.out \
-errfile ./logs/catalina.err \
org.apache.catalina.startup.Bootstrap

b.配置oralce的jdbc
//拷贝oracle的jdbc到/usr/local/tomcat6/lib目录下
# cp /home/software/class12.jar ./lib/

c.配置tomcat用户
# cd /usr/local/tomcat6/conf
# vi tomcat-users.xml
内容如下:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>
请修改tomcat里所有定义用户的密码:即修改password为自己想要的值。

d.把应用程序文件夹test放到webapps下

3.tomcat负载均衡和集群配置
参考官方配置文档:

a.tomcat6配置文件server.xml和应用程序的web.xml

**开放负载均衡,默认使用ajp协议时使用8009端口(使用http协议时为8080端口)
**修改tomcat 的 conf/server.xml 的<Engine>(使用ajp协议时配置)

<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost">
改成

<!-- You should set jvmRoute to support load-balancing via AJP ie :
-->
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">
<!--
<Engine name="Catalina" defaultHost="localhost">
-->
说明:
第一台tomcat就把jvmRoute="tomcat1"
第二台tomcat就把jvmRoute="tomcat2"
第三台tomcat就把jvmRoute="tomcat3"

**开放集群
**修改tomcat 的 conf/server.xml (使用ajp协议时配置)
在<Engine> 后面或者 <Host>后面简单的加上
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
也可以加上更详细参数的集群配置内容(这是官方默认,请自行修改相关参数):

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">

<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>

<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>

<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>

<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>

<ClusterListener className="org.apache.catalina.ha.session."/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>

***配置应用的web.xml
***在每个webapps应用中,修改配置文件web.xml文件 添加元素<distributable/>
在web.xml文件中<web-app>元素下增加以下内容:
<!--此应用将与群集服务器复制Session-->
<distributable/>
具体修改如下:
修改前:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns=""
xmlns:xsi=""
xsi:schemaLocation=" "
version="2.5">
</web-app>
修改后:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns=""
xmlns:xsi=""
xsi:schemaLocation=" "
version="2.5">
<!--此应用将与群集服务器复制Session-->
<distributable/>
</web-app>

4.配置apache的ajp负载均衡功能,这里请务必启用反向代理。
******************************
至于其中的原理请参考官方文档说明。

正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。
正向代理还可以使用缓冲特性(由mod_cache提供)减少网络使用率。

反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。
反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。
另外,还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时
存在于同一个URL空间下。
*****************************

参考文档:
tomcat6官方文档

apache中文版本

apache官方英文版本

***配置apache
***修改/usr/local/apache2/conf/httpd.conf文件

确保将以下Mole的注释去掉
LoadMole proxy_mole moles/mod_proxy.so
LoadMole proxy_connect_mole moles/mod_proxy_connect.so
LoadMole proxy_ftp_mole moles/mod_proxy_ftp.so
LoadMole proxy_http_mole moles/mod_proxy_http.so
LoadMole proxy_ajp_mole moles/mod_proxy_ajp.so
LoadMole proxy_balancer_mole moles/mod_proxy_balancer.so
LoadMole status_mole moles/mod_status.so

并在最后面,增加
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from all
</Location>
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from all
</Location>
ProxyRequests Off
ProxyPass /test balancer://tomcatcluster/ stickysession=jsessionid nofailover=On

<Proxy balancer://tomcatcluster>
BalancerMember ajp://192.168.1.30:8009 loadfactor=1
BalancerMember ajp://192.168.1.31:8009 loadfactor=2
BalancerMember ajp://192.168.1.32:8009 loadfactor=3
</Proxy>
注释:
ProxyRequests Off 表示启用反向代理。
ProxyPass为代理转发的Url,即将所有访问/的请求转发到
群集balancer://tomcatcluster,这里为/test即将所有访问/的请求转发到群集balancer://tomcatcluster的/test目录

BalancerMember为群集的成员,
即群集服务器1或2或3,负载均衡服务器会根据均衡规则来将请求转发给BalancerMember。

配置好后,启动Apahce服务器,访问localhost就会看到群集服务器中应用返回的结果。

访问,显示负载均衡有关信息

5.调试负载均衡集群系统

调试前务必:
先开启三台tomcat6服务器的tomcat服务!
再开启apache服务器的apache服务,切记!

a.开启tomcat服务
# cd /usr/local/tomcat6/bin
# ./shutdown.sh //停止tomcat
# ./start.sh //启动tomcat

查看tomcat的进程:
# ps -e | grep java
出现了java这个进程的话,说明你的tomcat起来了。

b.开启apache服务
# cd /usr/local/apache2/bin
# ./apachectl configtest
//命令检查一下配置是否有误,显示Syntax OK,说明配置正确
# ./apachectl stop //停止apache
# ./apachectl start //启动apache

6.检验是否负载均衡集群系统成功

访问apache服务器的web服务

如果显示负载均衡有关信息则说明成功了。
接着可以访问即访问到了tomcat的test应用

7.具体的tomcat集群负载均衡优化请参考文档自行设置相关参数
具体的apache优化请参考文档自行设置相关参数

E. C++如何操作XML配置文件

<?xmlversion="1.0"encoding="utf-8"?>
<Cases>
<case>
<No>001</No>
<CopyFilesrc="C: est.txt"dest="D: est.txt"></CopyFile>
</case>

<case>
<No>002</No>
<DelFile>C: est.txt</DelFile>
</case>
</Cases>

我们用C++来读取上述xml,代码如下:

voidCTestToolsDlg::ReadXml(CStringstrXmlPath)
{
MSXML2::IXMLDOMDocumentPtrpDoc;
::CoInitialize(NULL);
HRESULThr=pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));

if(!SUCCEEDED(hr))
{
MessageBox(_T("创建DOMDocument对象失败。 请检查运行环境"),_T("错误"),MB_ICONERROR);
return;
}
//读取xml
pDoc->put_async(VARIANT_FALSE);
VARIANT_BOOLbhr=pDoc->load((_variant_t)strXmlPath);

if(bhr!=VARIANT_TRUE){
MessageBox(_T("无法正确读取xml文件"),_T("错误"),MB_ICONERROR);
return;
}

//根节点取得
MSXML2::IXMLDOMElementPtrroot=pDoc->documentElement;
//取得根节点的名字
_variant_tstrRootName=root->nodeName;
_bstr_twstrRootName(strRootName.bstrVal);
MSXML2::IXMLDOMNodeListPtrnodeList=root->GetchildNodes();//cases

//解析cases的子节点
ReadCases(nodeList);
}

voidCTestToolsDlg::ReadCases(MSXML2::IXMLDOMNodeListPtrnodeList)
{
intilength=nodeList->Getlength();
for(intnodeCount=0;nodeCount<ilength;nodeCount++){
MSXML2::IXMLDOMNodePtrnodePtr=nodeList->nextNode();
_variant_tstrNodeName=nodePtr->GetnodeName();
_variant_tstrNodeValue=nodePtr->GetnodeValue();

//读取case节点下的子节点
ReadCase(nodePtr->GetchildNodes());
}
}

voidCTestToolDlg::ReadCase(MSXML2::IXMLDOMNodeListPtrnodeList)
{
CStringstrLogInfo;
strLogInfo.Empty();
CStringstrNo;//case编号
CStringstrSrcFile;//源文件
CStringstrDestFile;//目标文件
for(intnodeCount=0;nodeCount<nodeList->Getlength();nodeCount++)
{
MSXML2::IXMLDOMNodePtrnodePtr=nodeList->nextNode();
_variant_tstrCaseNodeName=nodePtr->GetnodeName();
_variant_tstrCaseNodeValue=nodePtr->Gettext();
BSTRbStrTemp=strCaseNodeName.bstrVal;
CStringstrTemp=CString(bStrTemp);
SysFreeString(bStrTemp);
CStringstrNodeName=strTemp;
//节点的值,如何取得?
if(0==strNodeName.CompareNoCase(_T("NO")))
{
strNo=(BSTR)strCaseNodeValue.pbstrVal;

//取得的值可以打印出来
printf(strNo);
}

//节点有属性值,该怎么处理?
elseif(0==strNodeName.CompareNoCase(_T("CopyFile")))
{
strSrcFile.Empty();
strDestFile.Empty();
//取得节点的属性值
MSXML2::=nodePtr->Getattributes();
for(intj=0;j<pDOMAttrList->Getlength();j++)
{
MSXML2::IXMLDOMNodePtrpDOMAttr=pDOMAttrList->Getitem(j);
//取得源文件路径
if(CompareNoCase((char*)pDOMAttr->GetnodeName(),_T("src")))
{
strSrcFile=pDOMAttr->GetnodeTypedValue();
//取得目标文件路径
}elseif(CompareNoCase((char*)pDOMAttr->GetnodeName(),_T("dest")))
{
strDestFile=pDOMAttr->GetnodeTypedValue();
}

CopyFile(strSrcFile,strDestFile,FALSE);
}
elseif(0==strNodeName.CompareNoCase(_T("DelFile")))
{
strDestFile.Empty();
strDestFile=CString((BSTR)strCaseNodeValue.pbstrVal);

DeleteFile(strDestFile);
}
}
}

为了能够让C++认识MSXML2,我们需要引入相应的dll,代码如下;#import "msxml4.dll"

F. eclips 里面的xml文件怎么配置

xml文件是现在比较流行的配置文件,我说一下他的构成<?xml version="" encoding=""?>开头要标明版本和编码这两个是必须的其他按需添加,格式就是尖括号加?号。下面配置dtd,这是对xml书写的一种规范。比如,任何元素都要被节点包着,有父节点和子节点。假如你要配置一个欢迎页面吧就得这样
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
此处<welcome-file-list></welcome-file-list>是父节点<welcome-file></welcome-file>是子节点

G. springxml文件怎么配置

对于大多数的应用,从表现层的action,到持久层的DataSource,都被Spring 作为
bean 管理。如果这些bean 被配置在同一个文件中,阅读及维护该配置文件将是一件非
常有挑战的事情。
因此, Spring 建议:将一个大的配置文件分解成多个小的配置文件,使每个配置文
件仅仅管理功能近似于bean; 这样不仅可以分散配置文件,降低修改配置文件的风险,
而且更符合"分而治之"的软件工程原理。
多个配置文件最终需要汇总, ApplicationContext提供如下方式来汇总多个配置文件:
.使用App1icationContext 加载多个配置文件。
• Web 应用启动时加载多个配置文件。
• XML 配置文件中导入其他配置。
1 ApplicationContext 加载多个配置文件
ApplicatonContext 的常用实现类有如下两个:
• ClassPathXm1 ApplicationContext 。
• 。
这两个类都可以用来加载多个配置文件,它们的构造器都可以接收一个数组,并在
该数组中存放多个配置文件。 可采用如下代码加载多个
配置文件:

H. 怎样配置服务器里面的Web.XML文件

servlet中web.xml配置详解(转)

这篇文章转自JavaEye,以前配置web.xml时都不知道为什么这样,看了之后明白了很多。贴下来,共同分享!
Web.xml常用元素
<web-app>
<display-name></display-name>定义了WEB应用的名字
<description></description> 声明WEB应用的描述信息

<context-param></context-param> context-param元素声明应用范围内的初始化参数。
<filter></filter> 过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联。
<filter-mapping></filter-mapping> 一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联。
<listener></listener>servlet API的版本2.3增加了对事件监听程序的支持,事件监听程序在建立、修改和删除会话或servlet环境时得到通知。
Listener元素指出事件监听程序类。
<servlet></servlet> 在向servlet或JSP页面制定初始化参数或定制URL时,必须首先命名servlet或JSP页面。Servlet元素就是用来完成此项任务的。
<servlet-mapping></servlet-mapping> 服务器一般为servlet提供一个缺省的URL:http://host/webAppPrefix/servlet/ServletName。
但是,常常会更改这个URL,以便servlet可以访问初始化参数或更容易地处理相对URL。在更改缺省URL时,使用servlet-mapping元素。

<session-config></session-config> 如果某个会话在一定时间内未被访问,服务器可以抛弃它以节省内存。
可通过使用HttpSession的setMaxInactiveInterval方法明确设置单个会话对象的超时值,或者可利用session-config元素制定缺省超时值。

<mime-mapping></mime-mapping>如果Web应用具有想到特殊的文件,希望能保证给他们分配特定的MIME类型,则mime-mapping元素提供这种保证。
<welcome-file-list></welcome-file-list> 指示服务器在收到引用一个目录名而不是文件名的URL时,使用哪个文件。
<error-page></error-page> 在返回特定HTTP状态代码时,或者特定类型的异常被抛出时,能够制定将要显示的页面。
<taglib></taglib> 对标记库描述符文件(Tag Libraryu Descriptor file)指定别名。此功能使你能够更改TLD文件的位置,
而不用编辑使用这些文件的JSP页面。
<resource-env-ref></resource-env-ref>声明与资源相关的一个管理对象。
<resource-ref></resource-ref> 声明一个资源工厂使用的外部资源。
<security-constraint></security-constraint> 制定应该保护的URL。它与login-config元素联合使用
<login-config></login-config> 指定服务器应该怎样给试图访问受保护页面的用户授权。它与sercurity-constraint元素联合使用。
<security-role></security-role>给出安全角色的一个列表,这些角色将出现在servlet元素内的security-role-ref元素
的role-name子元素中。分别地声明角色可使高级IDE处理安全信息更为容易。
<env-entry></env-entry>声明Web应用的环境项。
<ejb-ref></ejb-ref>声明一个EJB的主目录的引用。
< ejb-local-ref></ ejb-local-ref>声明一个EJB的本地主目录的应用。
</web-app>

I. 通过java怎么配置xml文件

JAVA与XML文件,可以说是软件开发的“黄金搭档”,而如何使用JAVA完成对XML文件的读取,是我们首先要解决的问题。
一、XML文件

这个示例文件包括了用来打开ORACLE数据库的各种参数

<?xml version="1.0" encoding="UTF-8"?>
<dbmsg>
<dbinfo>
<drivername>oracle.jdbc.driver.OracleDriver</drivername>
<sConnStr>jdbc:oracle:thin:@11.88.225.80:1521:VOUCHERDB</sConnStr>
<username>SYS AS SYSDBA</username>
<password>voucherdb</password>
</dbinfo>
</dbmsg>

二、编写类名为ReadXml的类,用于解析XML文件

我们要在应用程序中打开数据库,就必须完成对该文件中drivername、sConnStr、username、password的读取,通过查找有关资料,笔者编制了以下程序,用于读取文件名为filename的XML文件。

package voucher.basic;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class ReadXml {
private String drivername;
private String sConnStr;
private String username;
private String password;

public String getDrivername() {
return drivername;
}

public String getSConnStr() {
return sConnStr;
}

public String getUsername() {
return username;
}

public String getPassword() {
return password;
}
public void setDrivername(String drivername) {
this.drivername = drivername;
}

public void setSConnStr(String connStr) {
sConnStr = connStr;
}

public void setUsername(String username) {
this.username = username;
}

public void setPassword(String password) {
this.password = password;
}

public ReadXml(String fileName){
DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();
try {
DocumentBuilder dombuilder=domfac.newDocumentBuilder();
InputStream is=new FileInputStream(fileName);
Document doc=dombuilder.parse(is);
Element root=doc.getDocumentElement();
NodeList dbinfo=root.getChildNodes();
if(dbinfo!=null){
for(int i=0;i<dbinfo.getLength();i++){
Node db=dbinfo.item(i);
for(Node node=db.getFirstChild();node!=null;node=node.getNextSibling()){
if(node.getNodeType()==Node.ELEMENT_NODE){
if(node.getNodeName().equals("drivername")){
setDrivername(node.getFirstChild().getNodeValue());
}
if(node.getNodeName().equals("sConnStr")){
setSConnStr(node.getFirstChild().getNodeValue());
}
if(node.getNodeName().equals("username")){
setUsername(node.getFirstChild().getNodeValue());
}
if(node.getNodeName().equals("password")){
setPassword(node.getFirstChild().getNodeValue());
}
}
}
}
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

这个以ReadXml命名的类,使用了参数为文件名的构造方法,用户只要将配置文件我名称传递给该方法,就可以完成对XML文件的解析,进而完成对相应参数数的读取。三、如何获取XML文件全路径并读取配置参数

获取XML文件全路径的方法有两个,一是在servlet中获取,二是在单独的JAVA类中获取。

1.在servlet中获取XML文件的全路径并读取配置参数

程序片段String dirPath = getServletContext().getRealPath( "/WEB-INF");
String fileName = dirPath + "/conn.xml";
ReadXml xm = new ReadXml(fileName);
String DriverName = xm.getDrivername();
String connStr = xm.getSConnStr();
String user = xm.getUsername();
String pas = xm.getPassword();

将这段程序添加到servlet中dopost()之后即可完成参数的读取

2.在单独的JAVA类中获取全路径并读取配置参数

程序片段String dirpath = System.getProperty("user.dir");
String xmlFile = dirpath + "/WebRoot/WEB-INF/conn.xml";
ReadXml rdxml = new ReadXml(xmlFile);
String driverName = rdxml.getDrivername();
String sConnStr = rdxml.getSConnStr();
String userName = rdxml.getUsername();
String passWord = rdxml.getPassword();注:配置文件conn.xml保存在webroot/WEB-INF目录中。

J. 如何配置struts.xml文件

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

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<!-- struts是struts2配置文件的根元素 -->
<struts>

<!-- 会员管理 -->
<package name="user" extends="zqzj-default" namespace="/user">
<action name="user" class="userManageAction" method="user">
<result>/WEB-INF/pages/user/user.jsp</result>
</action>
</package>
</struts>

这就是一个Struts2.xml的例子。
<package 里的name名字随便起,但是不能和其他的package的name重复。namespace可不写,写了之后访问路径:项目名+namespace名字+jsp页面名
<action name也是随便起,不过习惯上是和action里你要请求的方法一致,class是action类的全类名路径,我这个SSH框架的所以不用全路径。
<result 是返回类型,里面有type属性,默认是请求转发,name默认是success