读书人

《转》struts2动态步骤配置 Action使

发布时间: 2013-07-09 09:50:47 作者: rapoo

《转》struts2动态方法配置 Action,使一个Action可处理多请求

Struts2中有时可能会需要使用一个Action来处理多个请求,来提高编码的效率和减少代码量。例如,在登录界面上的表单中可能会有登录和注册两个事件请求,有几种方式可以借鉴:

1.采用DMI动态调用方法。

该方法的主要思想是在一个 Action 类中实现多个方法,然后每个 action 请求中表明要调用该类中的哪个方法。使用 actionname!method 方式调用。

(1)LoginAction 类代码如下:

《转》struts2动态步骤配置 Action,使一个Action可处理多请求
 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC  3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  4     "http://struts.apache.org/dtds/struts-2.0.dtd"> 5  6 <struts> 7     <package name="default" namespace="/" extends="struts-default"> 8         <action name="login" class="com.main.action.LoginAction"> 9             <result name="success">/success.jsp</result>10             <result name="error">/error.jsp</result>11             <result name="regist">/regist.jsp</result>12         </action>13     </package>14 </struts>

(3)在jsp中的action请求代码如下:

 1   <body> 2       <script type="text/javascript"> 3           function regist(){ 4               var form = document.forms[0]; 5               form.action = "login!regist"; 6               form.submit(); 7           } 8       </script> 9     <form action="login!login">10         姓名:<input type="text" name="username" /><br/>11         密码:<input type="password" name="psd" /><br/>12         <input type="submit" value="登录" />13         <input type="submit" value="注册" onclick="regist();">14     </form>15   </body>

2.直接指定 Action 元素的 method 属性

使用这个方法就不必用 ! 将action和method连接后调用了,struts.xml 配置如下:

 1 <struts> 2     <package name="default" namespace="/" extends="struts-default"> 3         <action name="login" class="com.main.action.LoginAction" method="login"> 4             <result name="success">/success.jsp</result> 5             <result name="error">/error.jsp</result> 6         </action> 7         <action name="regist" class="com.main.action.LoginAction" method="regist"> 8             <result name="regist">/regist.jsp</result> 9         </action>10     </package>11 </struts>

3.使用通配符处理

<action>的属性name class method 都支持通配符。struts.xml 配置如下:

1 <struts>2     <package name="default" namespace="/" extends="struts-default">3         <action name="login_*" class="com.main.action.LoginAction" method="{1}">4             <result name="success">/success.jsp</result>5             <result name="error">/error.jsp</result>6             <result name="regist">/regist.jsp</result>7         </action>8     </package>9 </struts>

关键就在于第三行代码, login_* 使用了通配符,所以接收所有类似的action请求,至于调用该类中的哪个方法,就看method="{1}",表示使用name属性第一个*的值。例如,在本例中,form的action属性值设置为 login_regist,则调用com.main.action.LoginAction类中的regist()方法。

此外,Struts支持默认 Action 请求。当系统找不到指定的Action时,则交给默认的Action去处理。在struts.xml中的配置为:

<package ...>

<default-action-ref name="login"></default-action-ref>

</package>

?

转自:http://www.cnblogs.com/lihuiyy/archive/2012/05/30/2525730.html

读书人网 >编程

热点推荐