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

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

 

1  在action-mapping中的path属性中没有匹配到请求url的对应action时,一般会抛出如下异常

 

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()方法。

 

		<action path="/login" type="com.element.LoginAction" name="loginForm">
			<forward name="loginSuccess" path="/loginSuccess.jsp"></forward>
			<forward name="loginFailure" path="/loginFailure.jsp"></forward>
		</action>
 

即:

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异常。
   	<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中的属性,但是表单控件并没有输入,则浏览器会发出

login.do?username=&password=xxx

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

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值