知识大全 JSP中Action属性的功能浅析

Posted 属性

篇首语:不患人之不己知,患不知人也。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JSP中Action属性的功能浅析相关的知识,希望对你有一定的参考价值。

JSP中Action属性的功能浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   完整的action

﹤action path= /aFullAction type= somePackage someActionClass ﹥name= someForm input= someJSP jsp ﹤forward name= successful  path= someJSP jsp /﹥﹤forward name= failed  path= someOtherJSP jsp /﹥﹤/action﹥

  首先 Struts的ActionServlet接收到一个请求 然后根据struts config XML的配置定位到相应的mapping(映射) 接下来假如form的范围是request或在定义的范围中很难找到这个form 创建一个新的form实例 取得form实例以后 调用其reset ()方法 然后将表单中的参数放入form 假如validate属性不为false 调用validate()方法 假如validate()返回非空的ActionErrors 将会被转到input属性指定的URI 假如返回空的ActionErrors 那么执行Action的execute() 方法 根据返回的ActionForward确定目标URI

  这样做的效果是 execute()仅当validate()成功以后才执行 input属性指定的是个URI

   仅有Form的action

﹤action path= /aFormOnlyAction type=  apache struts actions ForwardAction name= someForm input= someJSP jsp parameter= someOtherJSP jsp />

  首先 Struts会在定义的scope搜寻someForm 假如找到则重用 假如很难找到则新建一个实例 取得form实例以后 调用其reset()方法 然后将表单中的参数放入form 假如validate属性不为false 调用validate()方法 假如validate()返回非空的 ActionErrors 将会被转到input属性指定的URI 假如返回空的ActionErrors 那么转到parameter属性指定的目标 URI

  这样做的效果是 没有action类能够存放我们的业务逻辑 所以任何需要写入的逻辑都只能写到form的reset()或 validate()方法中 validate()的作用是验证和访问业务层 因为这里的action映射不包括forward(也没有意义) 所以不能重定向 只能用默认的那个forward 这种仅有form的action能够用来处理数据获取并forward到另一个JSP来显示

   仅有Action的action

﹤action path= /anActionOnlyAction type= somePackage someActionClass ﹥input= someJSP jsp ﹤forward name= successful  path= someJSP jsp /﹥﹤forward name= failed  path= someOtherJSP jsp /﹥﹤/action﹥

  首先 ActionServlet接收到请求后 取得action类实例 调用execute()方法 然后根据返回的ActionForward在配置中找forward forward到指定的URI或action

  这样做的效果是 没有form实例被传入execute()方法 于是execute()必须自己从请求中获取参数 Action能够被forward或重定向 这种action不能处理通过HTML FORM提交的请求 只能处理链接式的请求

   仅有JSP的action

﹤action path= /aJSPOnlyAction type=  apache struts actions ForwardAction parameter= someOtherJSP jsp /﹥

  首先 ActionServlet接到请求后调用ForwardAction的execute()方法 execute()根据配置的parameter属性值来forward到那个URI

  这样做的效果是 没有任何form被实例化 比较现实的情形可能是form在request更高级别的范围中定义 或这个action被用作在应用程式编译好后充当系统参数 只需要更改这个配置文档而无需重新编译系统

   两个action对应一个form

﹤action path= /anAction type= somePackage someActionClass ﹥name= someForm input= someJSP jsp ﹤forward name= successful  path= /anotherAction do /﹥﹤/action﹥﹤action path= /anotherAction type= somePackage someOtherActionClass ﹥name= someForm input= someOtherJSP jsp ﹤forward name= successful  path= someResultJSP jsp /﹥﹤/action﹥

  就每个单独的action来讲 处理上并没有和完整的action有什么实质的区分 这个组合模式能够被用来传递命令对象(form) 需要注意的是在后一个action中同样会调用form的reset()和validate()方法 因此我们必须确保form中的信息不被重写

  处理的方式大致分为两种

  a) 在request中放入一个指示器表明前一个action有意向后一个action传递form 从而在后一个action能够保留那个form中的值 这一方式只能在使用forward时使用 b) 当使用redirect而不是forward时 能够把指示器放在session或更高的级别 在命令链的最后一环将这个指示器清除

﹤action path= /anAction type= somePackage someActionClass ﹥name= someForm input= someJSP jsp ﹤forward name= successful  path= /anotherAction do  redirect= true /﹥﹤/action﹥﹤action path= /anotherAction type= somePackage someOtherActionClass ﹥ name= someOtherForm input= someOtherJSP jsp ﹤forward name= successful  path= someResultJSP jsp /﹥﹤/action﹥

  这个组合方式跟前一种在流程上没有太大区分 只是我们现在对于两个action分别提供了form 于是代码看上去更加清楚 于是我们能够分别处理Web应用程式的输入和输出 值得注意的是 后一个action同样会尝试往form中写入那些参数 但是我们能够这样处理

  a) 在后一个form中使用另一套属性名

  b) 只提供getter而不提供setter

  大致的处理是这样

  前一个action接收输入 验证 然后将数据写入业务层或持久层 重定向到后一个action 后一个action手动的从业务层/持久层取出数据 写入form(通过其他方式) 交给前台JSP显示

cha138/Article/program/Java/JSP/201311/20756

相关参考

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

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

知识大全 浅析Servlet和Jsp中的多国语言显示

浅析Servlet和Jsp中的多国语言显示  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  因为一

知识大全 在jsp页面判断struts2变量的值

  首先在action里面要用变量sex并且要有get方法  jsp页面中可以用ONGL标签$sex 直接输出变量sex的值  <s:propertyvalue=sex/>也可以输出但好像

知识大全 为ASP.NET MVC扩展异步Action功能(上)

为ASP.NETMVC扩展异步Action功能(上)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 我在 USER action 中如何获取表单中控

我在USERaction中如何获取表单中控  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!<:

知识大全 如何理解struts

  当请求一JSP页面时对应的FormBean会自动创建并由对应的属性设置struts标签的控件因此如果想要页面中的控件一开始就设置了初值的话请在FormBean的构造函数中设置相应的属性中  当请求

知识大全 从实例看struts2运行原理

  简单例子  先做一个最简单的struts的例子在浏览器中请求一个action然后返回一个字符串到jsp页面上显示出来  第一步把struts最低配置的jar包加入的项目中  monslogging

知识大全 asp中get post提交表单区别

  asp教程中getpost提交表单区别  Get和Post方式的区别有点  get是从服务器上获取数据post是向服务器传送数据  get是把参数数据队列加到提交表单的ACTION属性所指的URL

知识大全 Struts2中action和field级别错误处理

Struts2中action和field级别错误处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 struts2的action中获得request response sessi

  在struts中有两种方式可以得到这些对象  非IoC方式  要获得上述对象关键Struts中opensymphonyxworkActionContext类我们可以通过它的静态方法getConte