http://hi.baidu.com/yingshuishui1/item/c6a1610ad1b4851bebfe3870

Struts1 config.xml基本配置导致抛出异常的原因分析

几种在struts-config.xml中经常由于粗心导致的配置错误

1 在action-mapping中的path属性中没有匹配到请求url的对应action时,一般会抛出如下异常Java代码
  1. org.apache.struts.chain.commands.InvalidPathException:   
  2. No action config found for the specified url  
org.apache.struts.chain.commands.InvalidPathException: No action config found for the specified url

可能是由于没有设置该<action>或者没有正确设置<action>中的path属性。

2 在<action>中如果没有配置name属性或者name属性配置错误导致在<form-beans>中找不到匹配的元素时,struts容器并不会抛异常,而是很简单的将一个null值作为form参数传递给了Action.execute()方法。

Xml代码
  1. <action path="/login" type="com.element.LoginAction" name="loginForm">  
  2.     <forward name="loginSuccess" path="/loginSuccess.jsp"></forward>  
  3.     <forward name="loginFailure" path="/loginFailure.jsp"></forward>  
  4. </action>  
<action path="/login" type="com.element.LoginAction" name="loginForm"> <forward name="loginSuccess" path="/loginSuccess.jsp"></forward> <forward name="loginFailure" path="/loginFailure.jsp"></forward> </action>

即:

Java代码
  1. public ActionForward execute(ActionMapping mapping, ActionForm form,   HttpServletRequest request, HttpServletResponse response)   
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)

方法中的form被struts传入null值,在接下来的form转型并不会抛异常,因为(LoginForm)null是合法的。但是在后面的对loginform存取参数的代码中一定会抛出NullPointException异常。

如果在一次request请求中不需要提交附加数据,那么就不需要在<action>中配置name属性。

3 表单上的控件name属性和formbean中的属性名不匹配的时候,struts就不会设置form中的那个不匹配的属性了,这样在转型后存取参数的时候就会发生NullPointException异常。Html代码
  1. <form action="<%=request.getContextPath()%>/login.do">  
  2.      username:<input name="username1" type="text"/><br/>  
  3.      password:<input name="password" type="password"/><br/>  
  4.     <input name="test" type="text"/>  
  5.     <input type="submit" value="登陆">  
  6. </form>  
<form action="<%=request.getContextPath()%>/login.do"> username:<input name="username1" type="text"/><br/> password:<input name="password" type="password"/><br/> <input name="test" type="text"/> <input type="submit" value="登陆"> </form>

但是如果name属性匹配到formbean中的属性,但是表单控件并没有输入,则浏览器会发出

Html代码
  1. login.do?username=&password=xxx  
login.do?username=&password=xxx

之类的url请求,这时struts会讲formbean中的属性设置为“”空字符串,而对于其他类型的属性,例如int型,就会设置成0值。

此文章转自:http://hi.baidu.com/yingshuishui1/item/c6a1610ad1b4851bebfe3870

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值