`
BradyZhu
  • 浏览: 247741 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

 
阅读更多

在开发中一般不会说将所有的配置都放在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这个方法了。推荐使用这样的方式哦


分享到:
评论

相关推荐

    struts2 详解文档

    为应用指定多个配置文件 动态方法调用和使用通配符定义action 请求参数接收 自定义类型转换器 全局类型转换器 访问或添加几个属性 文件上传 多文件上传 自定义拦截器 对Action中所有方法进行输入校验 对...

    Struts2入门教程(全新完整版)

    4.分工合作include:指定多个配置文件 10 5.tomcat认证访问 10 6.初识拦截器 11 7.Action中的method属性 12 8.使用ForwardAction实现页面屏蔽。 13 8.使用default-Action配置统一访问 14 小结Action 14 9.使用通配符 ...

    深入浅出Struts2(附源码)

    跟随作者一道深入Struts 2,聆听大量来之不易的经验之谈,你对Struts 2开发框架的理解和应用水平都将更上一层楼。本书适合Java Web 程序员阅读和参考 第1章 Model 2应用程序 1 1.1 Model 2概览 1 1.2 带servlet...

    struts2Demo

    struts2演示 &lt;br&gt;1./helloworld - helloworld 2./spring - 与spring整合 3./coc - 惯例优先配置,零配置文件 - codebehind不支持redirect,chain等操作,需要自己写jsp跳转 4./crud - CRUD,Create Read...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    你对Struts2开发框架的理解和应用水平都将更上一层楼。 Struts2权威著作 深入全面阐释Struts2的方方面面 涵盖FreeMarker、Ajax等大量相关技术 媒体推荐 “本书是毋庸置疑的struts2权威著作,虽然肯定还会有更多相关...

    J2EE应用开发详解

    118 8.3.5 Struts2配置文件 119 8.4 Action的配置方式 121 8.4.1 动态方法调用 121 8.4.2 设置action元素的method属性 122 8.4.3 使用通配符配置action 122 8.4.4 默认action 123 8.5 拦截器Interceptor 123 8.5.1 ...

    ssh(structs,spring,hibernate)框架中的上传下载

    WEB-INF下的applicationContext.xml为Spring的配置文件,struts-config.xml为Struts的配置文件,file-upload.jsp为文件上传页面,file-list.jsp为文件列表页面。  本文后面的章节将从数据持久层->业务层->Web层的...

    Spring中文帮助文档

    5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. AOP代理 6.2. @AspectJ支持 ...

    Spring API

    5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. AOP代理 6.2. @AspectJ支持 ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    处理多个持久化单元 12.6.2. JpaTemplate 和 JpaDaoSupport 12.6.3. 基于原生的JPA实现DAO 12.6.4. 异常转化 12.6.5. 事务管理 12.6.6. JpaDialect III. Web 13. Web框架 13.1. 介绍 13.1.1. 与其他web框架的集成 ...

    Spring 2.0 开发参考手册

    5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @...

    spring chm文档

    5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的PropertyEditor实现 6. 使用Spring进行面向切面编程(AOP) 6.1. 简介 6.1.1. AOP概念 6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @...

Global site tag (gtag.js) - Google Analytics