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

2014-11-24 07:11:42 · 作者: · 浏览: 0
在开发中一般不会说将所有的配置都放在struts.xml这个一个配置文件中去,因为这样会使得整个配置文件臃肿不堪无法维护,一般来说会进行分模块的进行配置文件的编写。下面来演示一下分模块来进行配置

其实很简单,首先在需要的分模块配置文件写出来,比如


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







/WEB-INF/jsp/hello.jsp






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







/WEB-INF/jsp/hello.jsp







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


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







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








在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";
}
}
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
struts.enable.DynamicMethodInvocation = true
### 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
struts.enable.DynamicMethodInvocation = true将这个参数置为false就可以禁止,那么我们将使用下面这样推荐的通配符方法来进行调用,只需要在Action的配置文件里面这样写就可以





/WEB-INF/ jsp/hello.jsp