struts.xml中配置Action的几种方法
2013-11-04 12:33
225 查看
Struts2中有时可能会需要使用一个Action来处理多个请求,来提高编码的效率和减少代码量。例如,在登录界面上的表单中可能会有登录和注册两个事件请求,有几种方式可以借鉴:
1.采用DMI动态调用方法。
该方法的主要思想是在一个 Action 类中实现多个方法,然后每个 action 请求中表明要调用该类中的哪个方法。使用 actionname!method 方式调用。
(1)LoginAction 类代码如下:
![](http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
(2)struts.xml 配置如下:
(3)在jsp中的action请求代码如下:
2.直接指定 Action 元素的 method 属性
使用这个方法就不必用 ! 将action和method连接后调用了,struts.xml 配置如下:
3.使用通配符处理
<action>的属性name class method 都支持通配符。struts.xml 配置如下:
关键就在于第三行代码, 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>
1.采用DMI动态调用方法。
该方法的主要思想是在一个 Action 类中实现多个方法,然后每个 action 请求中表明要调用该类中的哪个方法。使用 actionname!method 方式调用。
(1)LoginAction 类代码如下:
![](http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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>
相关文章推荐
- Struts2.x中action的几种配置方法
- struts2 两个action方法的跳转 struts.xml怎么配置
- Struts2 方法动态调用,验证表签,xml配置Action
- Struts2中struts.xml的Action配置详解
- struts.xml配置转向另外一个action (type='redirect')出错
- java读取配置文件 xml properties的几种方法
- Struts.xml中Action的method与路径的三种匹配方法
- Struts2 基于XML配置方式实现对action的所有方法进行校验
- struts.xml在Action配置具体解释
- 基于XML配置方式实现对action的所有方法进行校验
- Struts.xml中Action的method与路径的三种匹配方法
- struts.xml配置文件(package,namespace,action)
- 框架 day27 Struts2 入门(概述,基本xml配置,动态方法调用,Action类,ServletAPI访问,结果集)
- struts2中struts.xml中的action标签的method属性配置为"{1}"的时候是什么意味
- Struts2基于XML配置对Action方法的校验命名规则
- struts.xml配置action没用,任意href自动跳到主页,在action中print没用?????
- Struts 配置拦截器导致 验证的某某Action-vationdation.xml文件不好使的问题
- 基于XML配置方式实现对action的所有方法进行输入校验
- 6.在struts.xml中配置默认的action,也就是主页
- struts.xml配置文件(package,namespace,action)