一.处理异常的exception和global-exception
在Web应用中,对异常处理位置都是业务逻辑失败的信息.因为异常处理还需要编写ActionErrors,给出报错信息将导致在Action会看到许多的ActionErrors的代码.
struts解决了这个问题,它允许程序员配置任何异常,并且在将异常转化为报错信息的时候,不必须自行使用"try catch"来捕捉,写报错转发到出错页面.
1.局部异常
就是针对一个Action响应所抛出的异常,该异常将只负责Action的程序段,并且自定义在<action>元素中.
局部异常的定义:
<action-mapping>
<action
input="SampleJsp.jsp" 指定了SampleForm对象使用的ActionForrm对象名称,与form-bean元素定义的name属性一致
name="SampleForm" 指定了SampleForm对象使用的ActionForm对象名称
path="/SampleAction" 如果使用了SampleForm.do的响应,那么ActionServlet控制器组件就会自动找到本Action对象
scope="request" 使用ActionForm的范围
type="struts.sample.cap3.sample1.action.SampleAction" 解释本Action对象的路俓
validate="false"> 定义使用的ActionForm在Action是否需要检验
<expetion
key="userNameException" 指定了在资源配置文件中报错信息的键
path="/SampleJsp.jsp" 指定了报错之后所转发到的JSP页面,在该页面中可以通过标签库来读取报错信息,并显示
type="struts.sample.cap3.sample1.exception.UserNameException"/> 指定了该异常类的java实体名
<exception
key="SampleJsp.jsp"
type="java.sql.SQLException"/>
</action>
</action-mappings>
2.全局异常
指对所有定义在Struts-config.xml的Action程序都进行处理,他定义在<global-exception>元素中
<global-exception>
<exception
key="passWordException.jsp"
path="SampleJsp.jsp"
type="struts.sample.cap3.sample.exception.passWordException"/>
<global-exception>
定义全局变量时无需将<exception>元素作为任何<action>元素的子元素,而是直接作为 <global-exception>的子元素.
简单示例:
(1).自定义标签类
UserNameException.java
package struts.sample.cap3.sample1.exception;
public class UserNameException extends Exception {
public UserNameException(){
super();
}
public UserNameException(String message){
super();
}
public UserNameException(String message,Throwable cause){
super(message,cause);
}
public UserNameException(Throwable cause){
super(cause);
}
public UserNameException(Exception exc){
super(exc);
}
}
(2)业务逻辑类
UserNameService.java
package struts.sample.cap3.sample1.service
import struts.sample.cap3.sample1.exception.UserNameException;
import struts.sample.cap3.sample1.exception.UserNameException2;
public class UserNameService {
public void UserNameLogic() throws UserNameException{
throw new UserNameException("UserName");
}
}
(3)Action类
SampleAction.java
package struts.sample.cap3.sample1.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import struts.sample.cap3.sample1.exception.UserNameException;
import struts.sample.cap3.sample1.service.UserNameService;
public class SampleAction extends Action{
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception{
UserNameService userNameService=new UserNameService();
return null;
}
}
(4)资源配置文件
application.properties
userNameException=用户名无法确定
XXX=XXX
....
(5)JSP页面
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page language="java"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<html>
<head><title>JSP for SampleForm</title>
</head>
<body>
<html:errors/><p/>
<html:form action="SampleAction.do">
userName : <html:text property="userName"/><br/>
password : <html:password property="password"/><br/>
sex: <html:select property="sex">
<html:option key="F" value="F"/>
<html:option key="M" value="M"/>
</html:select><br/>
age : <html:text property="age"/><br/>
email : <html:text property="email"/><br/>
<html:submit/><html:cacel/>
</html:form>
</body>
</html>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/huoqubing/archive/2009/07/06/4324214.aspx
分享到:
相关推荐
例如,可以为所有类型的Exception配置一个通用的错误处理页面。 3. **ActionMapping的errorKey属性**:在配置Action时,可以通过errorKey属性指定当该Action执行失败时,要显示的错误信息。这些错误信息可以在JSP...
### Struts 的错误处理 #### 一、简介与背景 Struts 是一款开源的MVC(Model-View-Controller)框架,主要用于Java EE环境下的Web应用程序开发。它提供了一种结构化的方式来组织业务逻辑、视图层以及模型层,使得...
### Struts错误处理详解 #### 一、引言 在软件开发过程中,错误处理是非常重要的一个环节,尤其对于Web应用而言更是如此。Struts作为一款经典的MVC框架,在Java Web开发领域有着广泛的应用。本文将深入探讨Struts...
郭克华可能是一位专注于Java EE技术的专家,他讨论的"Struts错误处理"主题,旨在帮助开发者更好地理解和解决在使用Struts时遇到的问题。 在Struts框架中,错误处理主要涉及以下几个方面: 1. **ActionError和...
例如,如果业务逻辑执行失败,我们可以返回"error",并将结果配置为错误提示页面: ```xml <result name="error">/pages/error.jsp ``` 此外,Struts2还支持动态结果页面,可以使用OGNL(Object-Graph Navigation ...
Struts1.3是一个经典的Java Web框架,用于构建企业级应用程序。在Struts1.3中,页面跳转是常见...在实际项目中,根据业务需求灵活选择请求转发或重定向,同时注意数据传递和错误处理,将有助于提升用户体验和代码质量。
在Struts 1中,我们通常会在struts-config.xml文件中配置全局的`<global-exceptions>`元素,为特定的异常定义处理页面。例如: ```xml ``` 这段代码表示,如果任何地方抛出未捕获的异常,Struts会将控制权交给...
在Struts2中实现国际化,主要包括配置、JSP页面、表单和Action类的处理。 首先,在`struts.xml`配置文件中,我们需要声明全局的国际化资源文件。通过设置常量`struts.custom.i18n.resources`的值为`message`,我们...
9. **异常处理(Exception Handling)**:通过配置全局异常处理,Struts2可以捕获并统一处理Action执行过程中的异常,提供一致的错误反馈。 10. **国际化(Internationalization, i18n)**:Struts2支持多语言,...
这个方法会在ActionForm被提交到Action之前自动调用,如果验证失败,Struts会将错误消息添加到ActionMessage中,然后返回到原来的JSP页面,显示错误信息。 对于验证,Struts提供了内置的验证框架,允许开发者在...
2. **全局异常处理**:Struts允许我们在配置文件中定义全局异常映射,这样所有Action中的未捕获异常都会被映射到特定的结果页面。在`struts.xml`或`struts-default.xml`中,可以使用`<global-exception-mappings>`...
3. **Web.xml中的FORWARD配置**:在web.xml中,`<error-page>`标签可以用来配置错误处理页面,例如404错误。如果`<jsp:forward/>`指向的页面不存在,服务器会抛出404错误,此时需要确保web.xml中有正确的错误处理...
Struts2作为一款流行的Java Web框架,其异常处理机制是其核心功能之一,它使得开发者能够优雅地管理和处理应用程序中的异常情况,提供了一种统一的错误处理方式,从而提高用户体验并增强程序的健壮性。 在Struts2...
7. **错误处理配置**:Struts2允许自定义错误页面。检查`struts-default.xml`或自定义的配置文件,确认404错误是否被正确地映射到了一个自定义的错误页面。 8. **IDE或服务器设置**:有时候,开发环境或服务器的...
本主题主要关注的是如何在Struts框架下结合Ajax实现无页面刷新的验证码验证功能,以及在JSP页面中处理验证码的部分。 首先,我们来理解一下Struts框架。Struts是一种基于MVC(Model-View-Controller)设计模式的...
在Struts2中,异常处理是一项重要的功能,它确保在应用程序遇到错误时能够优雅地处理,提供友好的用户反馈,并保持系统稳定性。下面将详细讨论Struts2中的异常处理机制及其相关知识点。 1. **异常处理机制概述** ...
总的来说,整合Spring和Struts编写多页面用户注册模块涉及到的主要知识点有:Spring的DI和AOP,Struts的MVC架构,Action和Result的配置,以及JSP或模板引擎的使用。通过这样的整合,我们可以构建出一个灵活、可扩展...
本篇文章将深入探讨Struts2中的类型转换机制,包括常规类型转换、自定义类型转换以及错误处理。 首先,我们来看**常规类型转换**。Struts2框架内建了一套完整的类型转换器,能够自动处理常见数据类型,如String、...
9. **异常处理**:Struts2允许自定义全局和局部的异常处理策略,对于注册过程中的异常情况,比如数据库操作失败,可以统一处理并返回相应的错误页面。 10. **国际化支持**:Struts2支持多语言环境,通过资源文件...
相较于Struts1.x版本,Struts2提供了更为强大的功能,尤其是在处理用户输入验证方面。 在Struts2中,可以通过多种方式进行验证: 1. **Action类内部实现**:在Action类中直接编写`validate()`方法来进行数据验证。 ...