首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Struts2_02_Action访问与Action步骤调用

2012-11-05 
Struts2_02_Action访问与Action方法调用一、Action访问路径Action的访问路径是由struts.xml文件中配置的Act

Struts2_02_Action访问与Action方法调用

一、Action访问路径
Action的访问路径是由struts.xml文件中配置的Action所在包的命名空间,Action的名字和常struts.action.extension共同决定的
例如:

    <constant name="struts.action.extension" value="action, ," />    <package name="default"  namespace="/"  extends="struts-default">       <action name="hello">         <result>/1.jsp</result>       </action>    </package>        <package name="a"  namespace="/a"  extends="struts-default">       <action name="hello">         <result>/2.jsp</result>       </action>    </package>

?

访问default包下的名字叫hello的Action,须运行路径:/hello? 或 /hello.action
访问a包下的名字叫hello的Action,须运行路径:/a/hello 或 /a/hello.action
?
?
如果将struts.action.extension的值修改成do

<constant name="struts.action.extension" value="do,action" />

?

?

访问a包下的名字叫hello的Action,须运行路径:/a/hello.do 或 /a/hello.action

?

包的命名空间
每个包的命名空间不同,包中的Action不能同名,不同包的Action可以同名
同一个Web应用有可能出现同名Action,把它们放在不同的命名空间下,可以避免访问冲突。
如果在某Action在该命名空间找不到,就在默认命名空间找,在默认命名空间还找不到就会报错

按照上面的配置
访问 /hello.action 则跳转? /1.jsp
访问 /a/hello.action 则跳转 /2.jsp
访问 /b/hello.action 则跳转 /1.jsp
访问 /b/hi.action 则找不到页面,报异常


二、Action方法调用与动态方法调用
Action接收请求默认调用execute方法,但这已经满足不了我们的需求。通常我们会把一个业务模块的所有请求定义在同一个Action类,这就需要Action类提供更多的方法处理不同的请求,而不仅仅是一个execute方法。
例如我们想定义一个用户模块的增删查改请求,就可以采取如下方式实现

package com.puckasoft.web.action;public class UserAction { public String saveUser() throws Exception{  System.out.println("添加用户");  return null; } public String updateUser() throws Exception{  System.out.println("修改用户");  return null; } public String deleteUser() throws Exception{  System.out.println("删除用户");  return null; } public String showUser() throws Exception{  System.out.println("查询用户");  return null; }}

?

配置方法一:action方法调用

    <package name="user"  namespace="/user"  extends="struts-default">      <action name="save"         method="saveUser"></action>      <action name="update"         method="updateUser"></action>      <action name="delete"         method="deleteUser"></action>      <action name="show"         method="showUser"></action>    </package>

?

运行路径路径格式: 包的命名空间/Action的名字??

?? 用户添加 /user/save.action
?? 用户更新 /user/update.action
?? 用户删除 /user/delete.action
?? 用户查看 /user/show.acton
??
??
配置方法二:action动态方法调用DMI

<constant name="struts.enable.DynamicMethodInvocation" value="true" /><package name="user"  namespace="/user"  extends="struts-default">     <action name="index"  name="code"><package name="user"  namespace="/user"  extends="struts-default">  <action name="*" method="{1}User"/></package>

?

运行路径路径格式: 包的命名空间/Action的名字

?? 用户添加 /user/save.action
?? 用户更新 /user/update.action
?? 用户删除 /user/delete.action
?? 用户查看 /user/show.acton

?

热点排行