本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188
一:首先看一下struts2中action的实现方式:
1.建立普通的pojo类:这种方式能够实现简单的action功能,但struts2内自带的一些验证和其他功能不能够实现
2.继承ActionSupport类实现action,因为ActionSupport已经实现了Action接口,还实现了Validateable接口,提供了数据校验功能。通过继承该ActionSupport类,可以简化Struts2的Action开发。
3.实现action接口,这个接口里面定义了一些action所要实现的功能的标准,但验证等功能没有,所以一般还是继承actionsupport来实现action
Action跟Actionsupport的区别:
当我们在写action的时候,可以实现Action接口,也可以继承Actionsupport这个类.到底这两个有什么区别呢?
Action接口有:
而Actionsupport这个工具类在实现了Action接口的基础上还定义了一个validate()方法,重写该方法,它会在execute()方法之前执行,如校验失败,会转入input处,必须在配置该Action时配置input属性。
另外,Actionsupport还提供了一个getText(Stringkey)方法还实现国际化,该方法从资源文件上获取国际化信息.
这样在自定义标签时可以定义一个变量为newactionsupport对象实现国际化。
ActionSupport类的作用
struts2不要求我们自己设计的action类继承任何的struts基类或struts接口,但是我们为了方便实现我们自己的action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并重写此类里的publicStringexecute()throwsException方法。因为此类中实现了很多的实用借口,提供了很多默认方法,这些默认方法包括国际化信息的方法、默认的处理用户请求的方法等,这样可以大大的简化Acion的开发。
Struts2中通常直接使用Action来封装HTTP请求参数,因此,Action类里还应该包含与请求参数对应的属性,并且为属性提供对应的getter和setter方法。
二.action数据校验
在上面应用中,即使浏览者输入任何用户名、密码,系统也会处理用户请求。在我们整个HelloWorld应用中,这种空用户名、空密码的情况不会引起太大的问题。但如果数据需要保存到数据库,或者需要根据用户输入的用户名、密码查询数据,这些空输入可能引起异常。为了避免用户的输入引起底层异常,通常我们会在进行业务逻辑操作之前,先执行基本的数据校验。
Action数据校验功能是struts2给我们提供的一个服务器端简单验证的功能,这个功能使我们简化了一些没必要的代码。下面看一下具体实现:
1.继承ActionSupport
ActionSupport类是一个工具类,它已经实现了Action接口。除此之外,它还实现了Validateable接口,提供了数据校验功能。通过继承该ActionSupport类,可以简化Struts2的Action开在Validatable接口中定义了一个validate()方法,重写该方法,如果校验表单输入域出现错误,则将错误添加到ActionSupport类的fieldErrors域中,然后通过OGNL表达式负责输出为了让Struts2增加输入数据校验的功能,改写程序中的LoginAction,增加重写validate方法。下面看一下具体代码实现:
这里简单的实现了表单数据验证功能,上面的Action类重写了validate方法,该方法会在执行系统的execute方法之前执行,如果执行该方法之后,Action类的fieldErrors中已经包含了数据校验错误,请求将被转发到input逻辑视图处。但还是要注意以下几点:
1.在实现表单验证功能的时候一定不要忘记了在struts.xml中相对应的action中配置result=“input”,因为表单验证失败默认返回的字符串为input,如果没有的话会找不到这个结果而报错。
2.数据验证中,如果数据不符的时候可以报三种错误,我们上面代码中只是列举了action错误,另外两种是Field字段的错误,还有一种就是actionMessage。
3.注意在显示界面接收action错误时,要在想显示错误的地方加上<s:actionerror/>标签,如果想接收Filed域的错误时,一定要用struts标签,如果不用的话是不会显示字段错误的
2.使用Struts2的校验框架
上面的输入校验是通过重写ActionSupport类的validate方法实现的,这种方法虽然不错,但需要大量重写的validate方法——毕竟,重复书写相同的代码不是一件吸引人的事情。
类似于Struts1,Struts2也允许通过定义配置文件来完成数据校验。Struts2的校验框架实际上是基于XWork的validator框架。
下面还是使用原来的Action类(即不重写validate方法),却增加一个校验配置文件,校验配置文件通过使用Struts2已有的校验器,完成对表单域的校验。Struts2提供了大量的数据校验器,包括表单域校验器和非表单域校验器两种。本应用主要使用了requiredstring校验器,该校验器是一个必填校验器——指定某个表单域必须输入。
下面是校验规则的定义文件:
定义完该校验规则文件后,该文件的命名应该遵守如下规则:
ActionName-validation.xml:其中ActionName就是需要校验的Action的类名。因此上面的校验规则文件应该命名为“LoginAction-validation.xml”,且该文件应该与Action类的class文件位于同一个路径下。因此,将上面的校验规则文件放在WEB-INF/classes/lee路径下即可。当然,在struts.xml文件的Action定义中,一样需要定义input的逻辑视图名,将input逻辑视图映射到login.jsp页面。在这种校验方式下,无需书写校验代码,只需要通过配置文件指定校验规则即可,因此提供了更好的可维护性。
三、action中的执行方法
Action中默认的执行方法是execute方法,这个方法执行请求,然后转向其他的页面,这是常规的做法,但有时候我们不想用这个方法名,为了代码的可读性,我们希望让他执行我们自己定义的方法,下面我们就来看一下执行其他方法的两种方法:
1.在struts.xml配置method属性
其实执行execute方法是对应action在配置文件method的默认方法,所以要想执行其他的方法,我们可以修改这里的默认方法,只要把默认的方法改为我们自定义的方法就可以了。部分配置代码:
2.DMI(动态直接调用)这种方法,不需要进行struts.xml的配置。而是在html或者jsp页面中通过标示符号指定了要调用的方法。关键的标示符号为"!"号,具体看一下下面表单:
3.提交按钮指定提交方法,普通的提交按钮我们会这么写:<s:submitvalue="提交"></s:submit>
当我们想提交到我们指定的方法时我们可以在这个标签里添加一个method属性指定要提交的方法,如下:
4.使用通配符配置Action,这种方法可以解决action配置文件混乱的问题,减少action的配置:
在name属性的值后面加上*,意思是只要你请求的action名字以helloworld开头,本action就是你找的action,然后method是大括号加上1,这个1代表第一个星号的值,这样就可以动态执行请求的方法。
最后说一点,有时候用户在地址栏随便输入的时候,找不到对应的action,直接对报出一些错误,这样的界面一般都很难看,所以为了能给用户一个友好的提示界面,一般我们会再struts.xml文件配置默认的action,代码如下:
分享到:
相关推荐
java程序员-从笨鸟到菜鸟.pdf
### Java程序员成长之路——从菜鸟到笨鸟 #### 一、引言 《Java程序员由菜鸟到笨鸟》是一本由曹胜欢编写的书籍,旨在帮助初学者掌握Java编程的基础知识,并逐步进阶至更高级的应用场景。本书不仅适合初学者作为...
曹胜欢在《JAVA程序员 从笨鸟到菜鸟.pdf》中分享了他个人学习Java的经历,从迷茫到逐渐成长的过程。他强调了自学的重要性,并鼓励初学者不要怕走弯路,同时希望自己的经验可以帮助到同样在学习Java的初学者。 2. ...
Java程序员的成长之路是一个充满挑战与探索的过程,从初学者到熟练掌握各项技能,需要系统性的学习和实践。"Java程序员由菜鸟到笨鸟学习文档"就是这样一个旨在帮助初入Java世界的学习者逐步进阶的资源。它覆盖了从...
### Java程序员从笨鸟到菜鸟 #### 一、开发环境搭建与基本语法 ##### 开发环境搭建 在开始Java的学习之前,首先需要搭建一个合适的开发环境。这通常涉及到以下步骤: 1. **JDK(Java Development Kit)安装**:...
《Java程序员-从笨鸟到菜鸟》PDF 下载资源目录:作者简介:...............................................................................................................................................2...
以上内容只是《Java程序员由菜鸟到笨鸟》这本书中可能涵盖的部分知识点。对于初学者来说,系统地学习这些基础知识是非常重要的,因为它们构成了Java编程的基础,也是进一步学习高级主题的基石。希望这些内容能够帮助...
根据提供的文件信息,“Java程序员由菜鸟到笨鸟”是一本旨在帮助初学者成长为合格Java开发者的书籍。本书作者为曹胜欢,发布日期为2018年3月17日。以下是从该书的标题、描述以及部分可能包含的内容中提炼出的关键...
**《程序员编程艺术第一~二十七章集锦与总结(教你如何编程)%28by_July%29定稿版》**:这本书可能是作者July的编程经验总结,包含了编程艺术的多个方面,从基础到进阶,可能涵盖良好的编程习惯、设计模式、算法与...
day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda...Java基础小节练习题答案