Struts的运行机制及validator框架问题,
初学Struts!
最近一直被一些基于Struts的验证问题困绕,
一直没有找到好的解决方案,希望CSDN的高手
指点迷津,对于验证开始我使用的是Validator框架
来验证,不要自己写验证类,后来发现验证不通过,页面
直接跳转到input页面,由于开始没设计好ACTION和FORM
的对应关系,一个action里面,有很多个页面跳转,且有多个
页面是需要验证数据的。所以Validator框架不好使用,有
朋友说修改validator 原代码,能力有限.
后来就想将验证写到action里面,感觉只有业务逻辑的验证
才可以,例:如果验证数据,是不是数字类型就有问题了,当你写验证
逻辑的时候,你可以比较每个字符的ASCII是不是都在0-9这个范围
但是,当执行到你的验证逻辑之前,FormBean的数据已经被填充了,
如果要求输入数字类型的数据,你输入字母,虽然不合法,但是
FORMBAEN会自动给你填上合法值,比如是int型的,它会自动填上0
所以你无法验证。
基于以上问题,让我想知道Struts的运行机制到底是怎样的,但现在
感觉是很多地方无法理解了,我说说我理解的思路,不知道对不对,还有
很多不知道的,请高手帮忙解释下。
WEB服务器启动--》读取配置(web.xml),加载组件,监听端口--》用户发出请求(.do)
--》调用actionservlet实例--》读取struts-config.xml--》执行RequestProcessor
--》填充FormBean,验证FormBean--》调用Action,跳转JSP页面--》执行Jsp解释出来的Servlet
--》返回(response)--》返回给用户
我的理解大概是这样,还有就是标签库,不知道它什么时候执行了。
按道理应该在 填充FormBean与 执行Jsp解释出来的Servlet 执行
这样才能将FormBean里面的数据填充到页面,也才可以从页面得到数据。
问题又来了,大家都知道FormBean里面的set,get方法,是用来操作属性的,
填充数据就靠这两个方法,那肯定要实例这个类,调用这些方法。
类名及方法名都是写程序人员自己定义的,框架无法知道,那么它肯定要
通过读取配置文件struts-config.xml来得到,大家都知道这个配置文件
只是写了action,form 的class名字,方法名无法得到,标签库里面的property
属性提供了对象的具体方法名,也就是说在执行标签库实例的时候。调用了方法
,也就是说,上面的流程中,“填充FormBean,验证FormBean” 的时候有执行标签库。
那它是怎么生成标签的实例对象,怎样得到FormBean对象及调用其方法的。
这个地方具体是怎么操作的,请哪位用朴实点的语言说一下。
告诉源代码的位置也行,自己也看了看源代码,但是里面的方法调来调去,且
不知道方法的具体用途,英文太差。
要是能拿个流程图,且有方法具体作用的中文版就好了。(重分购买:),E-Mail:4811killer@163.com)