几种在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值。
分享到:
相关推荐
- **全局异常处理**:这部分用于配置全局异常处理机制,当某个Action抛出异常时,可以由指定的异常处理器来处理这些异常。 - `<global-exceptions>`元素:用于定义全局异常处理规则。 - `<exception>`元素:用于...
使用`<global-exceptions>`配置可以定义全局的异常处理器,使得错误信息能够优雅地呈现给用户,同时便于统一处理程序中抛出的异常。 8. **数据访问**: Struts 1.2.4支持多种数据访问技术,如JDBC、Hibernate、...
Struts允许开发者定义全局或特定Action的异常处理策略,当Action执行过程中抛出异常时,可以自定义返回的错误页面。 10. **ActionServlet**: Struts的核心组件ActionServlet是Servlet的子类,它处理HTTP请求,...
3. **异常处理**:提供了全局的异常处理机制,当Action或ActionForm抛出异常时,可以自动跳转到错误页面。 4. **预定义的Action**:如RedirectAction和ForwardAction,简化了动作的执行。 5. **性能优化**:通过缓存...
当应用程序抛出未捕获的异常时,可以通过此配置将控制权转移到特定的错误页面。 5. **global-forwards** `global-forwards`用于定义全局转发,也就是不依赖于任何特定Action的请求重定向。这些转发可以在整个应用...
此异常通常是在 Struts 初始化过程中抛出的,可能是由于配置错误或其他初始化时的问题导致。 **解决方案:** 1. **检查 struts-config.xml 文件**:确保文件格式正确,没有遗漏或多余的标签。 2. **检查 web.xml ...
当使用Struts的验证器时,如果在`validation.xml`中定义的资源不存在,会抛出此异常。确保所有需要的验证规则和资源在`validation.xml`中正确定义,并且在配置文件中引用正确。 以上列举的错误是Struts开发者在实践...
有时在开发过程中,可能会遇到没有任何明显异常信息的情况,例如 Action 使用的 `forward` 指向了 `struts-config.xml` 中未配置的路径。 **解决方案:** 1. **调试代码**:通过添加日志输出或者使用调试工具逐步...
- **异常描述**:在 Struts 配置文件 `struts-config.xml` 中定义了一个 ActionForm,但 `type` 属性指定的类不存在或者在 Action 的定义中,`name` 或 `attribute` 属性指定的 ActionForm 不存在。 - **解决方案**...
8. **异常处理**:Struts提供了一套全局的异常处理机制,可以将应用程序中抛出的异常映射到特定的错误页面,从而提高用户体验。 9. **拦截器(Interceptor)**:在Struts 2中,拦截器是AOP(面向切面编程)的一个...
Struts提供了全局的异常处理机制,可以统一处理程序中抛出的异常,避免因未捕获异常导致的系统崩溃。在struts-config.xml中配置全局异常映射即可实现。 六、验证框架 Struts的Validator框架允许开发者定义表单验证...
- `global-exceptions`允许我们定义全局的异常处理策略,当Action执行时抛出未捕获的异常时,可以指定一个默认的错误页面或Action来处理。 8. **国际化与资源文件** - Struts支持多语言,通过资源文件(如`...
在JSP页面中,我们可能会用标签来提交表单,如`<html:form action="Login.do">`,但若Struts框架无法在配置文件中找到对应的Action映射,就会抛出此异常。解决方法是检查struts-config.xml中的配置,确保Action的...
2. **Struts-config.xml配置异常处理**:在框架配置文件中,`<global-exceptions>`标签用于定义全局异常处理规则。例如: ```xml <global-exceptions> <exception key="error.generic" type="java.lang.Exception...
如果上传文件大小超过这个限制,Struts会抛出`MaxUploadSizeExceededException`异常。 2. Spring框架中的文件上传: Spring提供了`CommonsMultipartFile`类来处理文件上传,它是基于Apache Commons FileUpload库的...
7. **异常处理**:Struts提供了全局的异常处理机制,当业务逻辑抛出异常时,可以通过配置文件指定如何处理。 8. **国际化(Internationalization, i18n)**:Struts支持多语言,可以通过资源文件为不同地区提供本地化...
**错误描述**:当在Struts配置文件中未找到指定的ActionForm类型时,会抛出此异常。这通常意味着在`<form-beans>`元素下定义的ActionForm类不存在或者其类型(type属性)不正确。 **解决方法**: - 检查`struts-...