《转》struts2动态办法设备 Action,使一个Action可处理惩罚多恳求
添加时间:2013-5-20 点击量:
Struts2中有时可能会须要应用一个Action来处理惩罚多个恳求,来进步编码的效力和削减代码量。例如,在登录界面上的表单中可能会有登录和注册两个事务恳求,有几种体式格式可以鉴戒:
1.采取DMI动态调用办法。
该办法的首要思惟是在一个 Action 类中实现多个办法,然后每个 action 恳求中注解要调用该类中的哪个办法。应用 actionname!method 体式格式调用。
(1)LoginAction 类代码如下:
View Code
1 package com.main.action;
2
3 import com.opensymphony.xwork2.ActionSupport;
4
5 public class LoginAction extends ActionSupport {
6 private String username;
7 private String psd;
8
9 public String login(){
10 if (lihui.equals(username) && xhh.equals(psd)) {
11 return SUCCESS;
12 } else {
13 return ERROR;
14 }
15 }
16
17 public String regist(){
18 return regist;
19 }
20
21 public void setUsername(String username){
22 this.username = username;
23 }
24
25 public String getUsername(){
26 return this.username;
27 }
28
29 public void setPsd(String psd){
30 this.psd = psd;
31 }
32
33 public String getPsd(){
34 return this.psd;
35 }
36 }
(2)struts.xml 设备如下:
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
我俩之间有着强烈的吸引力。短短几个小时后,我俩已经明白:我们的心是一个整体的两半,我俩的心灵是孪生兄妹,是知己。她让我感到更有活力,更完美,更幸福。即使她不在我身边,我依然还是感到幸福,因为她总是以这样或者那样的方式出现在我心头。——恩里克·巴里奥斯《爱的文明》
Struts2中有时可能会须要应用一个Action来处理惩罚多个恳求,来进步编码的效力和削减代码量。例如,在登录界面上的表单中可能会有登录和注册两个事务恳求,有几种体式格式可以鉴戒:
1.采取DMI动态调用办法。
该办法的首要思惟是在一个 Action 类中实现多个办法,然后每个 action 恳求中注解要调用该类中的哪个办法。应用 actionname!method 体式格式调用。
(1)LoginAction 类代码如下:
1 package com.main.action;
2
3 import com.opensymphony.xwork2.ActionSupport;
4
5 public class LoginAction extends ActionSupport {
6 private String username;
7 private String psd;
8
9 public String login(){
10 if (lihui.equals(username) && xhh.equals(psd)) {
11 return SUCCESS;
12 } else {
13 return ERROR;
14 }
15 }
16
17 public String regist(){
18 return regist;
19 }
20
21 public void setUsername(String username){
22 this.username = username;
23 }
24
25 public String getUsername(){
26 return this.username;
27 }
28
29 public void setPsd(String psd){
30 this.psd = psd;
31 }
32
33 public String getPsd(){
34 return this.psd;
35 }
36 }
(2)struts.xml 设备如下:
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