- 浏览: 567848 次
文章分类
- 全部博客 (235)
- 数据库 (12)
- j2se (10)
- JQuery (2)
- 经验总结 (4)
- 防毒 (1)
- Struts (20)
- Spring (12)
- 项目 (3)
- 电脑维修项目 (1)
- Eclipse (2)
- JSP (13)
- mysql (5)
- Hibernate (54)
- ssh (1)
- 学习网站 (1)
- tomcat (9)
- servlet (24)
- java语言基础 (1)
- jbpm (1)
- linux (0)
- 技巧积累 (1)
- javaBean (2)
- 设计模式 (2)
- 实用的操作 (9)
- oracle (1)
- UML学习 (1)
- 版本控制 (1)
- 框架 (9)
- javaWeb基础 (13)
- c语言 (0)
- ant (0)
- 关于权限 (3)
- 真正开发有用 (5)
- javascript (2)
- 算法 (1)
- J2EE (1)
- junit (1)
最新评论
-
alleni123:
不错 一搜就搜到这个了
ssession和servletContext的比较 -
hua7381:
楼主,你真实帮了大忙了!!
万能乱码处理---url传中文 -
albrich:
1楼是正解
摘] 装了个Tomcat遇到的问题 -
JA_mcj:
ssession和servletContext的比较 -
haotw:
看了很有帮助,总算对hibernate的延迟加载有一定的了解了 ...
[转]hibernate延迟加载
actionMessages(),actionError()介绍
尽管Struts框架提供了有效的异常处理机制,但不能保证处理所有的错误,这时Struts框架会把错误抛给Web容器,在默认情况下Web容器会向用户浏览器直接返回原始信息。如果想避免直接让用户看到这些原始信息,可以在web.xml中配置<error-page>元素,以下代码演示了如何避免用户看到HTTP 404、HTTP 500错误和Exception异常。
web.xml:
<error-page>
<error-code>404</error-code>
<location>/exception/error404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/exception/error500.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/exception/default.jsp</location>
</error-page>
当WEB容器捕获到exception-type或error-code指定的错误时将跳到由location指定的页面。
问题:当form bean 为动态bean时,在action中无法对form bean数据进行验证,因为formbean没有具体实现类。action中无法引用
ActionError/ActionErrors/ActionMessage/ActionMessages:
有时候你需要向用户提供相关处理信息,包括表单验证时发现错误等。
1. 相关类介绍:
ActionMessage:用于保存一个与资源束对应的提示信息。主要构造函数如:
ActionMessage(String message);
ActionMessage(String message,paramater)。
ActionMessages:用于保存多个ActionMessage。并在html:errors 和html:messages中起作用。
主要构造函数:
ActionMessages().
主要方法是add(String property,ActionMessage message)
ActionMessages有一个HashMap类型messages保存多个ActionMessage对象,每个ActionMessage对象都有唯一的一个property标识。这个property可以是自定义的任意字符串,也可以由org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE指定
html:messages/html:errors使用property属性访问某个资源
ActionErrors:用于保存一个与资源束对应的错误信息。用法跟ActionMessages差不多。
ActionError不赞成使用。
2. 版本:
struts1.1中用ActionErrors报告错误,用ActionMessages提供信息。
在struts1.2中使用ActionMessages提供信息和错误,不赞成使用ActionError
struts1.3中已经没有ActionError类了。
3. AtionErrors和ActionMessages的区别
1. ActionErrors是ActionMessages的一个子类,功能几乎相同,不同点在于标签<html:errors/>和<html:messages>的使用上的区别。
html:errors指定了footer和header属性。默认值为errors.header和errors.footer,需要时可以自己指定。如果资源属性文件配置了 errors.header和errors.footer,则任何时候使用html:errors时开头和结尾都是这两个属性对应的资源信息。
而html:message默认情况下没有errors.header和errors.footer值,当然可以自己指定。
2. html:errors可以根据property属性指定显示一个错误信息。html:messages有一个必添项id。html:messages不能直接显示信息,它将选出的信息放入一个用id标识的Iterator对象里,然后在用ben:write或JSTL c:out标签显示每个信息.例如:
<html:messages message="true" id="msg">
<c:out value="${msg}"/><br />
</html:messages>
3. 具体的一个例子:
接受输入页面input.jsp:
<html:form action="/errormessage/input">
phoneNumber : <html:text property="phoneNumber"/> <html:errors property="<%=org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE %>"/><br/>
<html:submit/><html:cancel/>
</html:form>
struts-config.xml:
<form-beans >
<form-bean name="inputForm" type="cn.rolia.struts.form.errorexception.InputForm" />
</form-beans>
<action-mappings >
<action
attribute="inputForm"
input="/errormessage/input.jsp"
name="inputForm"
path="/errormessage/input"
scope="request"
type="com.yourcompany.struts.action.errormessage.InputAction"
validate="false">
<forward name="success" path="/errormessage/success.jsp" />
</action>
</action-mappings>
InputAction.java:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
cn.rolia.struts.form.errorexception.InputForm inputForm = (cn.rolia.struts.form.errorexception.InputForm) form;// TODO Auto-generated method stub
String phoneNumber = inputForm.getPhoneNumber();
if(phoneNumber.length()<4){
ActionErrors messages = new ActionErrors();
messages.add(org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE,new ActionMessage("error.errormessage.input"));
this.saveErrors(request, messages);
return mapping.getInputForward();
}
return mapping.findForward("success");
}
解说:用户输入手机号码,页面跳转到InputAction控制层进行处理,若输入数据小于4,则创建一个ActionMessage类存储相关错误信息。然后再创建ActionErrors类将此ActionMessage放入ActionErrors。再调用Action的saveErrors方法将此ActionErrors保存的request范围里,然后返回input.jsp页面要求重新输入并用html:errors提示错误信息。
4. Action包含saveErrors()方法和saveMessages()方法。如果创建的ActionErrors则应该调用saveErrors(),若创建的是ActionMessages则应该调用saveMessages()方法。
saveErrors()接收ActionMessages而不是ActionErrors;同时将其保存在request中并用一个由org.apache.struts.Globals.ERROR_KEY指定的常量” org.apache.struts.Globals.ERROR_KEY”标识这个ActionMessages,便于html:errors查找。saveMessages()方法接收ActionMessages同时将其保存在request中并用一个由org.apache.struts.Globals.MESSAGE_KEY指定的常量” org.apache.struts.Globals.MESSAGE_KEY”标识这个ActionMessages,进而让html:messages从常量Globals.ERROR_KEY中遍历获取信息。可以将其属性message设置为true,那么它将从常量Globals.MESSAGE_KEY中遍历获取信息。
5. 默认情况下html:messages从
如果你想将信息保存在session里而不是request,struts1.2提供了
struts1.1没有的saveMessages(HttpSession session, ActionMessages messages)方法和saveErrors(javax.servlet.http.HttpSession session, ActionMessages errors)方法。
InputAction.java:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
cn.rolia.struts.form.errorexception.InputForm inputForm = (cn.rolia.struts.form.errorexception.InputForm) form;// TODO Auto-generated method stub
String phoneNumber = inputForm.getPhoneNumber();
if(phoneNumber.length()<4){
ActionErrors messages = new ActionErrors();
messages.add(org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE,new ActionMessage("error.errormessage.input"));
this.saveErrors(request.getSession(true), messages);
return mapping.getInputForward();
}
return mapping.findForward("success");
}
尽管Struts框架提供了有效的异常处理机制,但不能保证处理所有的错误,这时Struts框架会把错误抛给Web容器,在默认情况下Web容器会向用户浏览器直接返回原始信息。如果想避免直接让用户看到这些原始信息,可以在web.xml中配置<error-page>元素,以下代码演示了如何避免用户看到HTTP 404、HTTP 500错误和Exception异常。
web.xml:
<error-page>
<error-code>404</error-code>
<location>/exception/error404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/exception/error500.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/exception/default.jsp</location>
</error-page>
当WEB容器捕获到exception-type或error-code指定的错误时将跳到由location指定的页面。
问题:当form bean 为动态bean时,在action中无法对form bean数据进行验证,因为formbean没有具体实现类。action中无法引用
ActionError/ActionErrors/ActionMessage/ActionMessages:
有时候你需要向用户提供相关处理信息,包括表单验证时发现错误等。
1. 相关类介绍:
ActionMessage:用于保存一个与资源束对应的提示信息。主要构造函数如:
ActionMessage(String message);
ActionMessage(String message,paramater)。
ActionMessages:用于保存多个ActionMessage。并在html:errors 和html:messages中起作用。
主要构造函数:
ActionMessages().
主要方法是add(String property,ActionMessage message)
ActionMessages有一个HashMap类型messages保存多个ActionMessage对象,每个ActionMessage对象都有唯一的一个property标识。这个property可以是自定义的任意字符串,也可以由org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE指定
html:messages/html:errors使用property属性访问某个资源
ActionErrors:用于保存一个与资源束对应的错误信息。用法跟ActionMessages差不多。
ActionError不赞成使用。
2. 版本:
struts1.1中用ActionErrors报告错误,用ActionMessages提供信息。
在struts1.2中使用ActionMessages提供信息和错误,不赞成使用ActionError
struts1.3中已经没有ActionError类了。
3. AtionErrors和ActionMessages的区别
1. ActionErrors是ActionMessages的一个子类,功能几乎相同,不同点在于标签<html:errors/>和<html:messages>的使用上的区别。
html:errors指定了footer和header属性。默认值为errors.header和errors.footer,需要时可以自己指定。如果资源属性文件配置了 errors.header和errors.footer,则任何时候使用html:errors时开头和结尾都是这两个属性对应的资源信息。
而html:message默认情况下没有errors.header和errors.footer值,当然可以自己指定。
2. html:errors可以根据property属性指定显示一个错误信息。html:messages有一个必添项id。html:messages不能直接显示信息,它将选出的信息放入一个用id标识的Iterator对象里,然后在用ben:write或JSTL c:out标签显示每个信息.例如:
<html:messages message="true" id="msg">
<c:out value="${msg}"/><br />
</html:messages>
3. 具体的一个例子:
接受输入页面input.jsp:
<html:form action="/errormessage/input">
phoneNumber : <html:text property="phoneNumber"/> <html:errors property="<%=org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE %>"/><br/>
<html:submit/><html:cancel/>
</html:form>
struts-config.xml:
<form-beans >
<form-bean name="inputForm" type="cn.rolia.struts.form.errorexception.InputForm" />
</form-beans>
<action-mappings >
<action
attribute="inputForm"
input="/errormessage/input.jsp"
name="inputForm"
path="/errormessage/input"
scope="request"
type="com.yourcompany.struts.action.errormessage.InputAction"
validate="false">
<forward name="success" path="/errormessage/success.jsp" />
</action>
</action-mappings>
InputAction.java:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
cn.rolia.struts.form.errorexception.InputForm inputForm = (cn.rolia.struts.form.errorexception.InputForm) form;// TODO Auto-generated method stub
String phoneNumber = inputForm.getPhoneNumber();
if(phoneNumber.length()<4){
ActionErrors messages = new ActionErrors();
messages.add(org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE,new ActionMessage("error.errormessage.input"));
this.saveErrors(request, messages);
return mapping.getInputForward();
}
return mapping.findForward("success");
}
解说:用户输入手机号码,页面跳转到InputAction控制层进行处理,若输入数据小于4,则创建一个ActionMessage类存储相关错误信息。然后再创建ActionErrors类将此ActionMessage放入ActionErrors。再调用Action的saveErrors方法将此ActionErrors保存的request范围里,然后返回input.jsp页面要求重新输入并用html:errors提示错误信息。
4. Action包含saveErrors()方法和saveMessages()方法。如果创建的ActionErrors则应该调用saveErrors(),若创建的是ActionMessages则应该调用saveMessages()方法。
saveErrors()接收ActionMessages而不是ActionErrors;同时将其保存在request中并用一个由org.apache.struts.Globals.ERROR_KEY指定的常量” org.apache.struts.Globals.ERROR_KEY”标识这个ActionMessages,便于html:errors查找。saveMessages()方法接收ActionMessages同时将其保存在request中并用一个由org.apache.struts.Globals.MESSAGE_KEY指定的常量” org.apache.struts.Globals.MESSAGE_KEY”标识这个ActionMessages,进而让html:messages从常量Globals.ERROR_KEY中遍历获取信息。可以将其属性message设置为true,那么它将从常量Globals.MESSAGE_KEY中遍历获取信息。
5. 默认情况下html:messages从
如果你想将信息保存在session里而不是request,struts1.2提供了
struts1.1没有的saveMessages(HttpSession session, ActionMessages messages)方法和saveErrors(javax.servlet.http.HttpSession session, ActionMessages errors)方法。
InputAction.java:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
cn.rolia.struts.form.errorexception.InputForm inputForm = (cn.rolia.struts.form.errorexception.InputForm) form;// TODO Auto-generated method stub
String phoneNumber = inputForm.getPhoneNumber();
if(phoneNumber.length()<4){
ActionErrors messages = new ActionErrors();
messages.add(org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE,new ActionMessage("error.errormessage.input"));
this.saveErrors(request.getSession(true), messages);
return mapping.getInputForward();
}
return mapping.findForward("success");
}
发表评论
-
[转]Struts1.2 验证用户是否登陆 两种方法
2007-12-05 21:43 5360Struts1.2 验证用户是否登陆 两种方法 ... -
struts解决乱码问题
2007-09-15 16:38 1720在中文插如mysql数据库的时候出现乱码问题. 解决方法有2 ... -
[摘]struts2原来如此
2007-09-14 18:03 1292许多朋友可能对于Struts 2.0与WebWork关系还搞 ... -
[摘]在Struts 2中实现CRUD
2007-09-14 18:01 1209http://www.blogjava.net/max/arc ... -
简单测试的方法
2007-09-14 17:03 1016简单测试的方法: 在类里面加一个主函数进行测试,测试完了之后可 ... -
struts国际化
2007-09-10 15:38 1371PropertiesEditor插件 更新站点: ... -
validatorForm和DynavalidatorForm
2007-09-09 22:23 2948这两个是用于生成脚本的验证.类似javascript效果 相同 ... -
[摘]Struts 学习笔记之ActionForm
2007-09-09 20:34 2234版权所有:(xiaodaoxiaodao)蓝小刀 xi ... -
[摘]struts入门(1)
2007-09-09 19:10 1392bbbh.org.NET Visual Basic ASP V ... -
ActionErrors和ActionError
2007-09-09 19:04 3256/**ActionErrors和ActionError都是Ac ... -
struts中的验证
2007-09-09 17:24 1060Form里面的validate方法进行格式验证:比如说长度,比 ... -
[摘]ActionError和ActionMessage
2007-09-09 16:51 2039ActionForm是表單的物件化,有關於表單資料的完整性檢查 ... -
struts中的listenter监听
2007-09-09 15:12 1741ServletContextListener, Servlet ... -
struts执行流程
2007-09-09 13:48 1490My processPreprocess.......---- ... -
中文乱码问题
2007-09-09 12:45 1028在Struts1.2中在RequestProcessor的控制 ... -
[摘]Struts中RequestProcessor
2007-09-09 11:14 2299From Gossip@caterpillar Struts ... -
Struts中actionservlet(1)
2007-09-09 09:56 1651ActionServlet类对应的类名为org.apche.s ... -
[摘]struts入门
2007-09-09 09:13 1062Struts框架 struts框架具有 ... -
Struts掌握这么几个基本
2007-09-08 22:32 1178Struts基本原理,Form, 国际化,控制器的应用,Str ...
相关推荐
4. **显示错误和消息**:在JSP页面中,使用Struts2的标签库(如`s:actionerror`和`s:actionmessage`)来遍历并显示`ActionContext`中的`ActionErrors`和`ActionMessages`。 ```jsp ()"> <s:actionerror/> ()"> ...
在Struts2框架中,ActionError和ActionMessage是处理用户输入验证和错误反馈的重要组件,它们使得开发者能够优雅地管理应用程序中的错误信息和用户消息。 ActionError类是用来存储错误信息的,它继承自`java.lang....
Struts提供了ActionError和ActionMessages类用于错误和消息的处理。这些类可以帮助开发者更好地管理和显示错误信息,增强用户体验。 #### 三、Struts标签库 Struts提供了丰富的自定义标签库,用于简化页面开发,...
`ActionErrors`是一个集合,可以存储多个`ActionError`对象,每个`ActionError`代表一条具体的错误消息。例如,如果用户没有输入第二个数字,可以通过`errors.add()`方法将错误信息添加到`ActionErrors`中。 在...
在Action中,使用`saveErrors(HttpServletRequest, ActionErrors)`或`saveMessages(HttpServletRequest, ActionMessages)`方法将错误或消息保存到请求范围内,以便在JSP页面中访问。在JSP页面,使用相应的标签从...
例如,通过资源包(Resource Bundle)实现多语言支持,通过 ActionError 和 ActionMessages 实现错误和消息管理,通过 FileUpload 类处理文件上传。 在实际开发中,为了更好地理解和使用 Struts 1.3.8,我们需要...
8. **异常处理**:学习如何在Struts中配置全局和局部异常处理策略,使用ActionError和ActionMessages管理错误和消息。 9. **Tiles框架集成**:Struts可以与Tiles框架结合使用,实现更复杂的页面布局和组件重用。 ...
8. **异常处理**:Struts1提供了ActionError和ActionMessages机制来处理错误和消息。开发者可以在Action中抛出异常,框架会捕获并显示给用户,确保应用程序的健壮性。 9. **验证框架**:通过Validator插件,Struts1...
8. **异常处理**:Struts 1.1提供了ActionError和ActionMessages机制,用于处理和展示业务逻辑中的异常信息。开发者可以通过配置ActionMapping中的`exception`元素来定义全局或特定异常的处理策略。 9. ** Tiles...
这可以通过Struts的ActionError和ActionMessages实现,将错误信息添加到ActionContext中,然后在JSP页面上显示。 总的来说,这个项目涵盖了Struts1的MVC架构、JSP页面设计、数据库连接、用户输入验证、业务逻辑处理...
- Struts提供了全局的异常处理机制,可以自定义ActionError和ActionMessages,用于处理和显示业务错误。 8. **国际化与本地化** - 使用ResourceBundle和struts.properties文件实现应用的多语言支持。 9. **测试*...
Struts提供了ActionError和ActionMessages机制来处理验证错误,以及全局的异常处理器来捕获并处理程序运行时可能出现的异常。 总结来说,使用Struts技术实现留言和发帖功能,主要包括以下几个步骤: 1. 创建Action...
8. **异常处理**:Struts提供了ActionError和ActionMessages机制,用于处理业务逻辑中的异常,并将错误信息展示给用户。 通过刘晓华老师的课件,你可以系统地学习如何使用Struts框架进行Web应用开发,掌握Bean标签...
3. 在Action中使用`ActionMessages`或`ActionErrors`添加和显示消息。 4. 在JSP中使用Struts标签显示本地化消息。 5. 实现语言切换功能,动态改变资源文件的加载。 通过这些步骤,开发者可以轻松地为SSH框架的Web...
Struts提供了ActionError和ActionMessages机制来处理异常,可以将错误信息传递到视图进行显示,增强了错误处理的能力。 9. **Struts 1与Struts 2的区别** Struts 2是Struts 1的升级版,引入了更多现代Web开发的...
- Struts1提供了ActionError和ActionMessages机制来处理用户输入验证错误,可以通过配置文件定义全局错误页面,提高应用的健壮性。 8. **国际化和本地化**: - Struts1支持多语言,可以在资源文件中定义不同语言...
8. **异常处理**:Struts提供了ActionError和ActionMessages,用于处理应用程序中的错误和消息。全局异常处理器可以捕获并统一处理未被捕获的异常。 9. **Struts标签库**:除了基本的HTML标签,Struts还提供了一套...
8. **异常处理**:在`org.apache.struts.action`包下,可以看到ActionError和ActionMessages类,它们用于处理和展示应用程序运行时的错误信息。Struts框架提供了一套完整的异常处理机制,可以在struts-config.xml中...
在Struts中,可以通过`ActionError`或`ActionMessages`来添加错误信息,然后在JSP页面上显示。 总的来说,这个"struts写的上传下载"项目展示了如何利用Struts框架处理文件上传和下载的基本流程,同时也提醒我们在...