struts2.5框架使用通配符指定方法(常见错误)-- 分析

在学习struts框架时经常会使用到通配符调用方法,如下

<action name="*Action" class="usersAction" method="{1}">
    <!-- name属性不写默认success -->
	<result>/home.jsp</result>
    <result name="login">/file.jsp</result>
    <result name="input">/login.jsp</result>
            
    <!-- 允许的方法 -->
    <allowed-methods>login</allowed-methods>
</action>

其中的action name="*Action"中*这个符号代表的值会传入method=“{1}”中,并对应action类的一个方法名,这样就能很大程度地减少配置文档中action的数目,例如访问:http://localhost:8000/struts_day04/loginActionloginAction满足条件,login代表的就是*,login就是bean的ID为usersAction的类中的方法名,即调用UsersAction类中的login方法,例如下:

package cn.tedu.web;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import cn.tedu.entity.Users;

/**
 * 控制器类
 * 作用:处理用户的请求
 * @author wq
 *
 */
@Controller
@Scope("prototype")
public class UsersAction extends BaseAction{
	/** 属性 */
	private Users user;
	
	public Users getUser() {
		return user;
	}

	public void setUser(Users user) {
		this.user = user;
	}
	
	/** 登陆验证的方法 */
	public String login(){
		System.out.println("执行顺序:4进入login()");
		if(user != null){
            if(user.getName().equals("admin") && user.getPassword().equals("admin")){
                return SUCCESS;
            }
        }
		return LOGIN;
	}
	
}

但是在使用这种通配符方法的时候,经常会看到这样的映射错误提示

Struts has detected an unhandled exception:
Message:There is no Action mapped for namespace [/] and action name [user_login] associated with context path [/shop].

这是由于struts版本的原因,对于Struts2.3之前的版本可以不配置<allowed-methods>,但是对于之后的版本,如果不配置<allowed-methods>将会出现上述异常

添加如下代码

<allowed-methods>Action内的方法名</allowed-methods>

才成功了

其实有好几种方式都可以添加:

1.在相应的action中添加,只对该action起作用: <allowed-methods>login</allowed-methods>

2.在action前面,package里面添加<global-allowed-methods>regex:.*</global-allowed-methods>,对所有action都起作用,注意顺序,否组会报错,因为在struts.xml中标签的顺序是有顺序规定的,还可以<global-allowed-methods>login</global-allowed-methods>,对某一个方法期作用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荒--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值