旗下导航:搜·么
当前位置:网站首页 > XML教程 > 正文

设置struts.xml的实例详解【XML教程】,struts,xml

作者:搜教程发布时间:2019-12-01分类:XML教程浏览:65评论:0


导读:struts.xml是我们在开辟中运用率最高的文件,也是Struts2中最主要的设置文件。一下离别引见一下几个struts.xml中常用到的标签1、<includ...
struts.xml是我们在开辟中运用率最高的文件,也是Struts2中最主要的设置文件。

一下离别引见一下几个struts.xml中常用到的标签

1、<include>

运用include标签,能够将一个struts.xml设置文件分割成多个设置文件,然后在struts.xml中运用<include>标签引入其他设置文件。

比方一个网上购物顺序,能够把用户设置、商品设置、定单设置离别放在3个设置文件user.xml、goods.xml和order.xml中,然后在struts.xml中将这3个设置文件引入:

struts.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<include file="user.xml"/>
	<include file="goods.xml"/>
	<include file="order.xml"/>
</struts>

user.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<package name="wwfy" extends="struts-default">
		<action name="login" class="wwfy.user.LoginAction">
			<!--省略Action其他设置-->
		</action>
		<action name="logout" class="wwfy.user.LogoutAction">
			<!--省略Action其他设置-->
		</action>
	</package>
</struts>

2、<constant>

在之前提到struts.properties设置文件的引见中,我们曾提到一切在struts.properties文件中定义的属性,都能够设置在struts.xml文件中。而在struts.xml中,是经由过程<constant>标签来举行设置的:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<!--设置开辟情势-->
	<constant name="struts.devMode" value="true"/>
	<!--设置编码情势为GB2312-->
	<constant name="struts.i18n.encoding" value="GB2312"/>
	<!--省略其他设置信息-->
</struts>

3、<package>

1、包属性引见

在Struts2框架中是经由过程包来治理action、result、interceptor、interceptor-stack等设置信息的。包属性以下:

属性

是不是必需

形貌

name 包名,作为别的包运用本包的标记
extends 设置本包继续别的包
namespace 设置包的定名空间
abstact 设置为笼统包


2、extends属性的详解

  • 当一个包经由过程设置extends属性继续了另一个包的时刻,该包将会继续父包中一切的设置,包括action、result、interceptor等。

  • 由于包信息的猎取是根据设置文件的先后顺序举行的,所以父包必需在子包之前被定义。

  • 平常我们设置struts.xml的时刻,都继续一个名为“struts-default.xml”的包,这是struts2中内置的包。

3、namespace的详解

namespace主如果针对大型项目中Action的治理,更主要的是处置惩罚Action重名题目,由于不在一致个定名空间的Action能够运用雷同的Action名的。

1)如果运用定名空间则URL将转变

比方我们有一下设置文件

<package name="wwfy" extends="struts-default">
	<action name="login" class="wwfy.action.LoginAction">
		<result>/success.jsp</result>
	</action>
</package>

则此设置下的Action的URL为localhost:8080/login.action

如果为这个包指定了定名空间

<package name="wwfy" extends="struts-default" namespace="/user">
	<action name="login" class="wwfy.action.LoginAction">
		<result>/success.jsp</result>
	</action>
</package>

则此设置下的Action的URL为localhost:8080/user/login.action

2)默许定名空间

Struts2中如果没有为某个包指定定名空间,该包运用默许的定名空间,默许的定名空间老是""。

3)指定根定名空间

当设置了定名空间为“/”,即指定了包的定名空间为根定名空间时,此时一切根途径下的Action要求都会去这个包中查找对应的资本信息。

倘使前例中途径为http://localhost:8080/login.action则一切http://localhost:8080/*.action都会到设置为根定名空间的包中寻觅资本。

4、<action>与<result>

1、<action>属性引见

属性称号

是不是必需

功用形貌

name 要求的Action称号
class Action处置惩罚类对应细致途径
method 指定Action中的要领名
converter 指定Action运用的范例转换器

如果没有指定method则默许实行Action中的execute要领。

2、<result>属性引见

属性称号

是不是必需

功用形貌

name 对应Action返回逻辑视图称号,默许为success
type 返回效果范例,默许为dispatcher


3、通配符的运用

跟着result的增添,struts.xml文件也会随之变得愈来愈庞杂。那末就能够运用通配符来简化设置:

例以下面这个案例:

Action为Test.java

public class Test {
	public String test1(){
		return "result1";
	}
	
	public String test2(){
		return "result2";
	}
	
	public String test3(){
		return "result3";
	}
}

struts.xml中设置为

<package name="wwfy" extends="struts-default">
	<action name="test*" class="wwfy.action.test{1}">
		<result name="result{1}">/result{1}.jsp</result>
	</action>
</package>

4、接见Action要领的另一种完成体式格局

在Struts2中如果要接见Action中的指定要领,还能够经由过程转变URL要求来完成,将底本的“Action称号.action”改成“Action称号!要领称号.action”在struts.xml中就不须要指定要领名了。

5、<exception-mapping>与<global-exception-mapping>

这两个标签都是用来设置发作非常时对应的视图信息的,只不过一个是Action局限的,一个是包局限的,当一致范例非常在两个局限都被设置时,Action局限的优先级要高于包局限的优先级.这两个标签包括的属性也是一样的:

属性称号

是不是必需

功用形貌

name 用来示意该非常设置信息
result 指定发作非常时显现的视图信息,这里要设置为逻辑视图
exception 指定非常范例


两个标签的示例代码为:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<package name="default" extends="struts-default">
		<global-exception-mappings>
			<exception-mapping result="逻辑视图" exception="非常范例"/>
		</global-exception-mappings>
		<action name="Action称号">
			<exception-mapping result="逻辑视图" exception="非常范例"/>
		</action>
	</package>
</struts>

6、<default-class-ref>

当我们在设置Action的时刻,如果没有为某个Action指定细致的class值时,体系将自动援用<default-class-ref>标签中所指定的类。在Struts2框架中,体系默许的class为ActionSupport,该设置我们能够在xwork的中心包下的xwork-default.xml文件中找到。

有特别须要时,能够手动指定默许的class

package wwfy.action;

public class DefaultClassRef {
	public void execute(){
		System.out.println("默许class最先实行……");
	}
}

在struts.xml中设置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<package name="wwfy" extends="struts-default">
		<!-- 指定默许class为Test -->
		<default-class-ref class="wwfy.action.DefaultClassRef"/>
		<action name="test1">
			<result>/index.jsp</result>
		</action>
	</package>
</struts>

7、<default-action-ref>

如果在要求一个没有定义过的Action资本时,体系就会抛出404毛病。这类毛病不可避免,但如许的页面并不友爱。我们能够运用<default-action-ref>来指定一个默许的Action,如果体系没有找到指定的Action,就会指定来挪用这个默许的Action。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<package name="wwfy" extends="struts-default">
		
		<default-action-ref name="acctionError"></default-action-ref>
		<action name="acctionError">
			<result>/jsp/actionError.jsp</result>
		</action>
	</package>
</struts>

8、<default-interceptor-ref>

该标签用来设置全部包局限内一切Action所要运用的默许拦截器信息。事实上我们的包继续了struts-default包今后,运用的是Struts的默许设置。我们能够在struts-default.xml中找到相干设置:

<default-interceptor-ref name="defaultStack"/>

在现实开辟过程当中,如果我们有特别的需求是能够转变默许拦截器设置的。当时一旦变动这个设置,“defaultStack”将不再被援用,须要手动最加。

9、<interceptors>

经由过程该标签能够向Struts2框架中注册拦截器或许拦截器栈,平常多用于自定义拦截器或拦截器栈的注册。该标签运用要领以下:

<interceptors>
	<interceptor name="拦截器名" class="拦截器类"/>
	<interceptor-stack name="拦截器栈名">
		<interceptor-ref name="拦截器名">
	</interceptor-stack>
</interceptors>

10、<interceptor-ref>

经由过程该标签能够为其地点的Action增加拦截器功用。当为某个Action零丁增加拦截器功用后,<default-interceptor-ref>中所指定的拦截器将不再对这个Action起作用。

11、<global-results>

该标签用于设置包局限内的全局效果集。在多个Action返回雷同逻辑视图的情况下,能够经由过程<global-results>标签一致设置这些物理视图所对应的逻辑视图。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="wwfy" extends="struts-default">
<global-results>
<result name="test">/index.jsp</result>
</global-results>
</package>
</struts>

【相干引荐】

1. XML免费视频教程

2. XML手艺手册

3. 李炎恢XHTML视频教程

以上就是设置struts.xml的实例详解的细致内容,更多请关注ki4网别的相干文章!

标签:strutsxml


欢迎 发表评论: