知识大全 Struts源码研究 - Action-Input属性篇

Posted

篇首语:不飞则已,一飞冲天;不鸣则已,一鸣惊人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Struts源码研究 - Action-Input属性篇相关的知识,希望对你有一定的参考价值。

Struts源码研究 - Action-Input属性篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  初学Struts 写了一个很简单的应用 主要功能和页面如下      首页显示一个 添加新用户 的链接 点击该链接出发一个forward动作 页面导向到添加用户的jsp页面   添加用户的jsp页面中 可供用户输入 用户名 和 用户描述 两项   用户输入完毕 将做输入数据合法性检查 检查通过 将输入信息保存进入文件(使用了Properties类) 然后返回首页 检查失败返回添加用户页面   数据合法性检查分成两块 第一部分检查条件使用Struts的Validator 检查条件配置在Validator xml中 第二部分检查放在ActionForm中   检查失败将错误信息置入ActionErrors中 然后返回到添加用户的页面并显示错误信息     JSP页面 ActionForm和Action类的代码书写都参照了struts example应用 所以这里代码不再列举 请看附件中的代码包这里值得一提的是 在开发过程中 碰到了一个小问题 正是由于该问题 才导致查看Struts源码 刨根问底的查找错误原因的过程该错误发生在Struts的配置文件中 首先将错误的配置文件列出如下     <?xml version= encoding= ISO ?>    <!DOCTYPE struts config PUBLIC   //Apache Sofare Foundation//DTD Struts Configuration //EN    config_ _ dtd >    <struts config>    <! ======================================== Form Bean Definitions >    <form beans>    <form bean    name= CreateUserForm     type= zchome CreateUserForm />      </form beans>    <! ================================= Global Exception Definitions >    <global exceptions>    </global exceptions>    <! =================================== Global Forward Definitions >    <global forwards>    <! Default forward to Wele action >    <! Demonstrates using index jsp to forward >    <forward name= wele path= /Wele do />    </global forwards>    <! =================================== Action Mapping Definitions >    <action mappings>    <! Default Wele action >    <! Forwards to Wele jsp >    <action    path= /Wele     type= apache struts actions ForwardAction     parameter= /jsp/Wele jsp />      <action path= /createuserpage forward= /jsp/createuser jsp >  </action>      <action    path= /docreateuser     type= zchome CreateUserAction     name= CreateUserForm     scope= request     input= createuser >    <forward name= createusersuccess path= /jsp/Wele jsp />    <forward name= createuser path= /jsp/createuser jsp />    </action>      </action mappings>      <! ===================================== Controller Configuration >    <controller>  <set property property= processorClass value= apache struts tiles TilesRequestProcessor />  </controller>    <! ================================ Message Resources Definitions >    <message resources parameter= resources application />    <! ======================================= Plug Ins Configuration >    <! ========== Tiles plugin =================== >  <! >  <!   This plugin initialize Tiles definition factory This later can takes some  parameters explained here after The plugin first read parameters from web xml then  overload them with parameters defined here All parameters are optional   The plugin should be declared in each struts config file      definitions config: (optional)  Specify configuration file names There can be several ma  separated file names (default: ?? )   moduleAware: (optional struts )  Specify if the Tiles definition factory is module aware If true (default)   there will be one factory for each Struts module   If false there will be one mon factory for all module In this later case   it is still needed to declare one plugin per module The factory will be  initialized with parameters found in the first initialized plugin (generally the  one associated with the default module)   true : One factory per module (default)  false : one single shared factory for all modules   definitions parser validate: (optional)  Specify if xml parser should validate the Tiles configuration file   true : validate DTD should be specified in file header (default)  false : no validation    Paths found in Tiles definitions are relative to the main context    >  <! ment following if struts x >  <plug in className= apache struts tiles TilesPlugin >  <set property property= definitions config   value= /WEB INF/tiles defs xml />  <set property property= moduleAware value= true />  <set property property= definitions parser validate value= true />  </plug in>    <! end ment if struts x >    <plug in className= apache struts validator ValidatorPlugIn >  <set property  property= pathnames   value= /WEB INF/validator rules xml /WEB INF/validation xml />  </plug in>    </struts config>    首先描述一下系统的出错背景    从首页点击链接来到添加用户的页面 正常   在添加用户页面中输入Vlidator xml文件中定义的错误数据 弹出Javascript对话框 提示出错 正常   在添加用户页面中输入合法数据 数据保存进入文件并重定向到首页 正常   在添加用户页面中输入ActionForm中定义的非法数据 系统应返回到添加用户的页面 出错!!!  OK 来着重看这个添加动作的定义 如下     <action    path= /docreateuser     type= zchome CreateUserAction     name= CreateUserForm     scope= request     input= createuser >    <forward name= createusersuccess path= /jsp/Wele jsp />    <forward name= createuser path= /jsp/createuser jsp />    </action>    从以上的定义可以看出 如果Validate验证出错 Struts应该为我们重定向到input域所定义的uri 即/jsp/createuser jsp  看起来应该没有问题 再来看看出错信息 如下     java lang IllegalArgumentException: Path createuser does not start with a / character  at re ApplicationContext getRequestDispatcher(ApplicationContext java: )  at re ApplicationContextFacade getRequestDispatcher(ApplicationContextFacade java: )  at apache struts action RequestProcessor doForward(RequestProcessor java: )  at apache struts tiles TilesRequestProcessor doForward(TilesRequestProcessor java: )  at apache struts action RequestProcessor internalModuleRelativeForward(RequestProcessor java: )  at apache struts tiles TilesRequestProcessor internalModuleRelativeForward(TilesRequestProcessor java: )  at apache struts action RequestProcessor processValidate(RequestProcessor java: )  at apache struts action RequestProcessor process(RequestProcessor java: )  at apache struts action ActionServlet process(ActionServlet java: )  at apache struts action ActionServlet doPost(ActionServlet java: )    出错信息清楚的说明 createuser 这个path应该以 / 字符开头  为定位这个错误 从以上错误信息 开始打开Struts的源码RequestProcessor java进行研究 首先来到这一段     public class RequestProcessor     protected boolean processValidate(H cha138/Article/program/Java/ky/201311/28659

相关参考

知识大全 Struts源码研究 - html-Link标签篇

Struts源码研究-html-Link标签篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  S

知识大全 Struts源码的切片学习之Struts的初始化

Struts源码的切片学习之Struts的初始化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Au

知识大全 Struts2请求处理流程及源码分析

Struts2请求处理流程及源码分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts

知识大全 Struts2分页实现源码

Struts2分页实现源码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &

知识大全 struts+spring实现的登陆实例源码

cha138/Article/program/Java/JSP/201311/20631

知识大全 struts2自定义验证器(身份证验证)

  struts的验证器是用的xwork里面的验证自定义验证器就是根据源码继承已有的字段验证器而来具体步骤如下:  展开xworkjaropensymphonyxwork  validatorvali

知识大全 Spring Security 2资源-角色查找源码研究及性能改进

SpringSecurity2资源-角色查找源码研究及性能改进  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 自定义分页控件源码asp.net(c#)

  可能大家有用得着的地方发出来一起研究下代码如下  Pagercs 服务器控件源代码  usingSystem;   usingSystemWeb; 

知识大全 Java框架研究——JSF与Struts的异同

Java框架研究——JSF与Struts的异同  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  S

知识大全 ASP调用存储过程源码示例

ASP调用存储过程源码示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASP调用存储过程源码