Struts2 DMI动态方法调用和通配符

 

Struts2 DMI动态方法调用和通配符

更多请看  (www.omob.cc)

 

动态方法调用

 

1、Struts2默认关闭DMI功能,需要使用需要手动打开,配置常量

struts.enable.DynamicMethodInvocation = true

2、使用“!”方法,即action名称!方法名称。

struts.xml

  
    /success.jsp  
    /update.jsp  

请求URL为/query!success.action,调用actio.QueryActionsuccess()方法;请求URL为/query!update,调用actio.queryupdate()方法;

路径上的.action可以写也可以不写,Struts2默认添加.action为后缀,如果更改了后缀名,例如.do,就要显示声明。

3、好处:减少action数量,但是结果集数量不变。

通配符映射

  1. 不必配置struts.enable.DynamicMethodInvocation = true
  1. 写法

struts.xml

  
    {1}_{2}Succ.jsp  

请求URL为/Query_success,调用actio.QueryActionsuccess()方法;

{1}、{2}表示通配符的位置,这里{1}表示Query,{2}表示success;

{0}表示整个通配符,这里表示Query_success,所以上面的结果集也可以写成{0}Succ.jsp

  1. 好处:减少action数量的同时,减少结果集的数量,体现“约定优于配置”,在增加代码的同时,并不需要对struts.xml文件进行更改;

  2. URL请求顺序:当有多个action被匹配成功,例如XAction、Action、,对于请求XAction,则匹配XAction,忽视XAction的出现顺序,对于请求YAction,则由Action、在struts.xml的出现顺序决定,先出现的先调用

  3. 匹配带有“/”的路径:

(1)配置常量struts.enable.SlashesInActionNames = true

(2)有些书写用匹配带“/”的路径,但是本人实验结果不需要,直接/即可

DMI

action

package com.qianfeng.action;

import com.opensymphony.xwork2.Action;
import com.qianfeng.entity.User;

public class UserAction {
	private User user;
	
	public String add(){
		System.out.println("add");
		return Action.SUCCESS;
	}
	
	public String del(){
		System.out.println("del");
		return Action.SUCCESS;
	}
	
	public String update(){
		System.out.println("update");
		return Action.SUCCESS;
	}
	
	public String other(){
		System.out.println("other");
		return Action.SUCCESS;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
}

struts.xml





	
    
    
    
    

    
    	
        
        
        
        
        
        
        
        
        	/ok.jsp
        
        
        
        	/ok.jsp
        
    


login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


	${sessionScope.msg}
	
用户名:
密码:
add del update add del update add del update

你可能感兴趣的:(Struts2)