收藏 分享(赏)

strut讲义 Struts4.ppt

上传人:gnk289057 文档编号:7929106 上传时间:2019-05-30 格式:PPT 页数:30 大小:482KB
下载 相关 举报
strut讲义 Struts4.ppt_第1页
第1页 / 共30页
strut讲义 Struts4.ppt_第2页
第2页 / 共30页
strut讲义 Struts4.ppt_第3页
第3页 / 共30页
strut讲义 Struts4.ppt_第4页
第4页 / 共30页
strut讲义 Struts4.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、struts配置中的路径与模式匹配,struts配置中的action,有一个path属性,它表明请求的URI 一般情况下,我们需要在配置文件中明确指定某个特定的URI,如path=“/user/add” 在一些大型应用中,如果能够制定一套严格的路径及其操作规范的话,我们可以利用path的路径模式匹配功能,来简化struts配置文件繁琐的编写工作量 假设有如下规范:,路径匹配规范示例,对user对象的所有处理Action,均需要以如下的路径进行访问: /user/add.do 处理用户添加的有关操作 /user/delete.do 处理用户删除的有关操作 /user/update.do 处理用户

2、更新的有关操作 所有操作(Action)对应的JSP如下: 所有操作成功(失败)之后的转向页面,有如下命名规范: /user/add.do - /user/add_success.jsp或/user/add_error.jsp /user/delete.do - /user/delete_success.jsp或/user/delete_error.jsp 所有操作的输入界面有如下命名规范: 添加操作 - /user/add_input.jsp 更新操作 - /user/update_input.jsp ,Action配置示例,Action配置解释,所有的/user/add.do请求,都将由U

3、serAction这个类来处理 在UserAction类中execute方法,都可以返回success/error/input等名称的ActionForward 注意:针对html:form元素,以下写法皆可或者另外1,针对网页form元素,参考以下写法另外2,如果Action的path配置成/add,则 ,Struts控制器内置Action类,DispatchAction ForwardAction IncludeAction,为什么使用DispatchAction,将上一次的加法器修改为支持加、减、乘、除的计算器,怎么做?,方案1: 创建4个Action,在页面中,通过JavaScript

4、控制提交到不同的Action Bean。方案2: 增加隐藏表单域,表示操作类型 ,在Action Bean中根据不同操作类型做不同处理。,为什么使用DispatchAction,两个方案: 方案1对每个操作都创建一个Action,系统规模变大时,容易混乱 方案2将相关操作组织在一个Action中,通过operate参数区分不同操作,但容易使Action中execute方法的代码过长,不易维护类似需求在企业应用系统中非常常见,怎样更简洁有效地实现这样的需求?,Struts提供了DispatchAction解决此类问题,Dispatch的运行原理,DispatchAction的魔力,Dispatc

5、hAction能够根据传入参数值自动选择Action中同名的方法执行,演示DispatchAction的使用,使用DispatchAction实现计算机器的步骤: 1、创建CalcAction,继承自DispatchAction 2、在CalcAction中创建加、减、乘、除四个方法 3、在struts-config.xml中配置CalcAction 4、编写页面代码,演示示例:使用DispatchAction实现计算器,怎样使用DispatchAction,使用DispatchAction实现计算器 1、创建CalcAction,父类为DispatchAction,无需execute方法2、

6、创建加、减、乘、除四个方法,方法签名如下:,public class CalcAction extends DispatchAction ,public class CalcAction extends DispatchAction public ActionForward doAdd(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) public ActionForward doSubtract( .) public ActionForward d

7、oMultiply ( .) public ActionForward doDivide( .) ,怎样使用DispatchAction,使用DispatchAction实现计算器 3、配置CalcAction4、页面代码, 加 减 .function doSubmit(opr)document.forms0.elements“operate“.value=opr;document.forms0.submit(); ,注意:配置Dispatch参数名,实用的页面编码技巧,需要熟练掌握,ForwardAction,有的时候你只是想要从一个页面或资源转换到另一个资源,在MVC/Model 2的架构

8、中,直接使用页面或资源的路径来叫用并不是一个好的主意,这会使得控制器没有机会处理相关的公共事宜。好的方法是应该透过控制器,使用ForwardAction可以帮您完成这个事情。 参见ForwardAction源代码,ForwardAction,当控制器使用ForwardAction时execute ()方法时,它会使用属性parameter所设定的路径进行forward的动作,一个设定ForwardAction的例子如下: 代码: ,Action配置中forward属性,forward属性和ForwardAction 使用forward进行页面跳转的配置方法如下 forward属性和Forard

9、Action在页面中使用时是没有区别的,并且在通常情况下struts对这两种形式的跳转的处理也是相同的.,IncludeAction,IncludeAction类页面中的动作或Servlet中的 RequestDispatcher的include()方法执行的功能一样的.在基于struts框架结构的应用中,最好不要在标记中直接引用另一个JSP页面,而是通过IncludeAciton来实现页面之间的引用。IncludeAction的配置 IncludeAction的使用和Forward基本相同,在页面中还可以通过标记来调用. ,Action配置中include属性,include属性和Inclu

10、deAction Struts也可以通过使用include属性来在Action的配置文件中直接定义被引用的页面.如 ,Struts 视图组件,MVC模式中的视图主要负责实现动态内容的显示。Struts中的视图主要由以下组件组成: JSP页面 HTML页面 JSP定制标记 JavaScript和样式表 多媒体文件 消息资源 ActionForm 其中ActionForm是Struts框架中的核心组件之一。,ActionForm Bean,当用户提交了HTML表单,Struts框架自动把表单数据组装到ActionForm Bean中。 ActionForm Bean中的属性和HTML表单中的字段一

11、一对应。 ActionForm Bean提供表单验证方法: validate() ActionForm Bean提供把属性重新设置为默认值的方法:reset() Struts框架中定义的ActionForm类是抽象的,必须在应用中创建它的子类,来存放具体的HTML表单数据。,ActionForm的作用域,两个作用域: Request Session,Scope属性,在Action映射配置中,Scope属性可以取值为:request或session Scope属性表示:Struts框架在将ActionForm对象(与目标Action匹配的ActionForm)传送到Action之前,会将Acti

12、onForm对象保存的位置 如:scope=“request”配置,将指示struts调用request.setAttribute(“ActionForm名称”,ActionForm对象)方法,将ActionForm对象保存到request。 其中,ActionForm名称与struts-config.xml配置中的ActionForm名称一致,如:,其中uploadForm就是其名称。 我们明白scope属性的意义之后,就可以利用struts的这些特性,来解决开发过程中的某些常见问题,ActionForm生命周期流程图,Reset方法,对于每个请求,控制器先调用ActionForm的rese

13、t方法进行属性初始化,然后将表单数据组装到ActionForm 。 如ActionForm 在“request”范围, reset方法不是很有必要 如ActionForm 在“session”范围, reset方法极为有用,一般此时用reset方法为属性初始化。,数据验证,Struts框架的数据验证可分为两种类型:表单验证和业务逻辑验证,在本例中,它们分别运用于以下场合: 表单验证(由ActionForm Bean处理):如果用户没有在表单中输入姓名,就提交表单,将生成表单验证错误 业务逻辑验证(由Action处理):如果用户在表单中输入的姓名为“Monster”,按照本应用的业务规则,不允许

14、向“Monster”打招呼,因此将生成业务逻辑错误。,HelloForm Bean的表单验证,public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) ActionErrors errors = new ActionErrors();if (userName = null) | (userName.length() 1)errors.add(“username“, new ActionMessage(“hello.no.username.error“);return errors; ,消息类的类

15、框图,HelloForm Bean的表单验证流程,当用户提交了HTML表单,Struts框架自动把表单数据组装到ActionForm Bean中。 接下来Struts框架会调用ActionForm Bean的validate()方法进行表单验证。 如果validate()方法返回的ActionErrors 对象为null,或者不包含任何ActionMessage对象,就表示没有错误,数据验证通过。 如果ActionErrors中包含ActionMessage对象,就表示发生了验证错误,Struts框架会把ActionErrors对象保存到request范围内,然后把请求转发到恰当的视图组件,视图组件通过标签把request范围内的ActionErrors对象中包含的错误消息显示出来,提示用户修改错误。,使用动态Form简化开发,大量的“纯体力” 代码充斥其中,当业务需要,增减数据库字段时,需要修改的地方过多,容易漏改出错,有哪些办法可以解决这种问题呢?,使用动态Form简化开发,使用动态Form实现用户登录,以配置的方式创建Form,从动态Form中取值,总结,使用DispatchAction有哪些好处?使用DispatchAction的步骤是什么?使用动态Form的步骤是什么?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报