概述
引言:
知识在于总结,生命在于运动。
概述:
本篇博客,小编为大家带来自己学习Struts过程中了解到几个有用的对象,分别是ActionForm、ActionForward、ActionMapping、Action、ActionMessage。
内容:
一 ActionForm:主要说明ActionForm在Struts中的作用。
(1)表单数据收集:
1)通过http提交表单数据:核心就是将ActionForm对象中的属性与页面的值匹配起来,在该对象java类中编写属性,并得到其get、set方法,然后在action中调用ActionForm得到页面的值。
2)通过http上传文件:在ActionForm中使用FormFile来接收上传的文件,然后Action中调用FormFile取得数据,采用流输出,即完成上传。
(2)类型转换:所有从表单提交到后台的数据均为字符串类型,通过ActionForm自动转换为int、boolean、Date、Double类型。
1)boolean:yes、1、no、true都会转换成true类型,而且忽略大小写,其他情况都转换成false
2)Date类型转换:如果是java.sql.Date,页面日期的格式必须为yyyy-mm-dd,才可以转换;如果是java.util.Date,默认情况下struts无法转换。
3) 自定义转换器:第一步,实现converter接口,实现convert方法;第二步,将实现的converter注册,通常情况采用servlet注册;第三步,采用servlet注册需要配置的标签 <load-on-startup>10</load-on-startup>(也可以采用struts plugin注册)。
(3)作为传输对象:实体对象赋值为值对象或数据传输对象,实体对象改变不会影响前台显示。
(4)动态ActionForm:把页面中的Html元素的名字和值放入map中,通过get方法取出相应的值,并采用EL表达式的输入方式${dynabean.map.prop};好处是可以减少静态ActionForm的数量,若进行动态ActionForm的验证,通过使用动态验证框架validator。
二 ActionForward:Action操作成功后,会回传给ActionServlet,个人感觉与Action中的forward的属性差不多。
(1)转发(froward)与重定向(redirect):redirect=true为重定向,反之为转发
(2)全局与局部ActionForward:全局forward,所有action都可以使用;局部forward只能被包含它的action使用。使用原则:就近原则,一般都是以局部优先,然后再解析全局的forward。
(3)受保护的页面可以放到WEB-INF文件夹下,避免通过URL直接进入页面的情况,不过要注意的是Action中的路径也要做相应的改变。
(4)struts-config.xml不能在运行时修改,动态ActionForward,可以运行期修改。
(5)我们可以采用手动转向: response.sendRedirect(request.getContextPath()+ "/login.jsp");
三 ActionMapping:web应用中,每个资源都必须通过url来进行引用,为了给动作定制一个url或者说路径,Struts提供了ActionMapping 对象。
(1)主要功能:管理Action的信息和管理Action执行完成以后的转向信息。接收特定http请求,映射到Action,并将相关信息存储在ActionMapping中,ActionServlet将ActionMapping的信息传送到Action类的execute()方法,Action将使用ActionMapping的findForward()方法,此方法返回一个指定名称的ActionForward,这样就实现了转发;若没有找到具体的ActionForward,返回值为null。
(2)主要属性:path、forward、type、name、scope(取值包括session和request,默认为session)、validate、input、parameter、unknown(注意只能有一个action包含该属性,相当于forward跳转到error页面)。
(3)主要方法:public ExceptionConfig findException(Class type) ,查找异常对象;
public ActionForward findForward(String name) 可在映射中动态添加ActionForward;
public String[] findForwards()找到一个Action可以使用的actionForward列表
public ActionForward getInputForward() 得到本action的输入ActionForard.
<struts-config>
<action-mappings>
<actionpathactionpath="/login"
type="com.bjpowernode.struts.LoginAction"
name="loginForm"
scope="request"
>
<forwardnameforwardname="success" path="/login_success.jsp" />
<forwardnameforwardname="error"path="/login_error.jsp"/>
</action>
</action-mappings>
</struts-config>
四 Action对象:http://blog.csdn.net/lsh6688/article/details/7525963
五 ActionMessage对象:存储提示消息的对象,例如错误消息提示等。
(1)如何创建消息对象:ActionMessage msg = new ActionMessage("key")。
(2)如何将消息从Action传递给JSP:传递的消息分为普通的消息和错误消息,通过调用父类(Action)所提供的方法saveMessage()/saveErrors()来保存消息对象。
(3)如何在JSP中使用消息对象:使用<html:messages/>标签来显示消息,该标签包含四大属性:name-消息对象的名称;id-消息对象的标识;property-指定显示哪条消息;message-取值为true,显示普通消息,取值为false,将显示错误消息。还有一个标签<html:errors/>只显示错误消息。
总结:
这么多核新对象,最重要的其实是Action对象,可以说Action是Struts的灵魂,相信了解过的都知道。这里小编为大家展示了Struts的核心对象,希望大家阅读的过程中,多提问题和建议,在交流中共同进步。
最后
以上就是冷静书包为你收集整理的Struts框架(二)——对象的全部内容,希望文章能够帮你解决Struts框架(二)——对象所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复