Struts2为应用指定多个配置文件和动态方法调用以及通配符的使用方法

本文介绍了Struts2框架中如何通过模块化配置文件简化项目管理,并详细解析了动态方法调用的两种实现方式及其优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发中一般不会说将所有的配置都放在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="bird" namespace="/test" extends="struts-default">
		<action name="helloworld_*" class="com.bird.action.HelloWorld" method="{1}">
		
			<result name="success">/WEB-INF/jsp/hello.jsp</result>
		</action>
	</package>
	
	
  
</struts>

然后在struts.xml文件中使用include标签就可以完成将这个配置文件移入里面去的功能

<?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.action.extension" value="do,action"></constant>

	<include file="employee.xml"></include>
	<include file="user.xml"></include>
</struts>

在struts.xml文件中一般只是配置一些全局文件需要的东西,比如一些常量。


下面来说一下动态方法调用,所谓的动态方法调用其实就是通过地址参数来选择调用哪些方法,而不是默认的execute方法,先看一下代码

package com.bird.action;

public class HelloWorld {
	
	private String message;


	public String getMessage() {
		return message;
	}


	public void setMessage(String message) {
		this.message = message;
	}

	
	public String execute(){
	//	message = "我的第一个Struts2应用";
		message = "execute";
		return "success";
	}
	
	public String addUI(){
		message = "addUI";
		return "success";
	}
}

如果不指定则调用默认的execute方法,但是你可以在浏览器的地址栏使用这个样的地址请求方式来进行调用addUI这个方法,具体地址如下

http://localhost:8080/Struts2/test/helloworld!addUI.action

就是在后面加上感叹号和具体需要调用的方法名称,当然了,struts的文档不推荐使用这种方式,所以我们可以在struts.xml文件an里面通过使用静态常量的方式来指定禁止使用这样的动态方法调用

### Set this to false if you wish to disable implicit dynamic method invocation
### via the URL request. This includes URLs like foo!bar.action, as well as params
### like method:bar (but not action:foo).
### An alternative to implicit dynamic method invocation is to use wildcard
### mappings, such as <action name="*/*" method="{2}" class="actions.{1}">
struts.enable.DynamicMethodInvocation = true
将这个参数置为false就可以禁止,那么我们将使用下面这样推荐的通配符方法来进行调用,只需要在Action的配置文件里面这样写就可以

	<package name="bird" namespace="/test" extends="struts-default">
		<action name="helloworld_*" class="com.bird.action.HelloWorld" method="{1}">
		
			<result name="success">/WEB-INF/jsp/hello.jsp</result>
		</action>
	</package>

在actionNamn后面加上星号,然后method是大括号加上1,这个1代表第一个星号,那么我们下面再访问的地址就可以这样写

http://localhost:8080/Struts2/test/helloworld_addUI.action

这样使用通配符就可以访问addUI这个方法了。推荐使用这样的方式哦


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值