`
dyllove98
  • 浏览: 1383052 次
  • 性别: Icon_minigender_1
  • 来自: 济南
博客专栏
73a48ce3-d397-3b94-9f5d-49eb2ab017ab
Eclipse Rcp/R...
浏览量:38348
4322ac12-0ba9-3ac3-a3cf-b2f587fdfd3f
项目管理checkList...
浏览量:78674
4fb6ad91-52a6-307a-9e4f-816b4a7ce416
哲理故事与管理之道
浏览量:131833
社区版块
存档分类
最新评论

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

 
阅读更多

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

0
1
分享到:
评论

相关推荐

    struts2一个action处理多个请求 struts2实例

    struts2一个action处理多个请求

    Struts2请求处理方法的处理

    Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射

    Struts2从一个带参数action跳转到另一个action

    资源中示例了一个struts2的配置文件中配置的action的result结果为另外一个action的配置,该跳转的过程中是带所有参赛调整的,在另外一个action中可以接受到当前action的所有参数,此配置文件是我日常开发中的经验...

    Struts2 处理多个请求

    Struts2一个Action内包含多个请求处理方法的处理

    struts2利用通配符调用同一个Action里面不同的方法

    struts2利用通配符调用同一个Action里面不同的方法,在struts.xml配置文件中将请求方法的不相同部分抽象成“*".

    一个struts的action跳转大全

    首先,Struts的ActionServlet接收到一个请求,然后根据struts-config.xml的配置定位到相应的mapping (映射);接下来如果form的范围是request或者在定义的范围中找不到这个form,创建一个新的form实例;取得form...

    Struts2 in action中文版

    第一部分 Strut 2:一个全新的框架 第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 1.2.1 什么是框架 7 1.2.2 ...

    Struts1与Struts2本质区别

    Struts 2 Action类可以实现一个Action接口,也可以实现其他接口,使可选和定制的服务成为可能。Struts 2提供一个ActionSupport基类去实现常用的接口。即使Action接口不是必须实现的,只有一个包含execute方法的POJO...

    js 原始ajax请求实现 struts2

    js ajax请求实现 struts2 action js ajax请求实现 struts2 action js ajax请求实现 struts2 action js ajax请求实现 struts2 action js ajax请求实现 struts2 action

    struts2 详解文档

    第一个Struts 2应用开发 解决Struts 2配置文件无提示问题 Action名称的搜索顺序 Action配置的各项默认值 result配置的各种视图转发类型 为Action属性注入值 指定Struts 2处理的请求后缀 Struts 2的处理...

    struts2 使用action属性接收中文参数(post提交)

    NULL 博文链接:https://cdxs2.iteye.com/blog/1925245

    解决struts2请求转发或重定向时,一个结果码无法对应多个视图的问题

    通过两个自定义结果集,解决struts2请求转发或重定向时,一个结果码无法对应多个视图的问题。以前的做法,是在配置Action时使用通配符解决,但这样需要JSP页面名称和Action的方法名称一致,如果命名不一致或不规范,...

    struts2流程与流程图

    一个请求在Struts 2框架中的处理大概分为以下几个步骤。  客户端提交一个(HttpServletRequest)请求,如上文在浏览器中输入 http://localhost: 8080/bookcode/ch2/Reg.action就是提交一个(HttpServletRequest)...

    struts2分页代码的示例

    下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库...

    Struts2的工作原理和流程

    2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3 接着FilterDispatcher被调用,...

    struts2动态访问调用-method方法

    struts动态访问调用之一,采用method属性,同一个Action内的不同方法来响应用户请求

    struts2技术内幕+struts2权威指南

    然后厘清了Web开发中极易混淆的一些重要概念,以及Struts2的核心技术、宏观视图、微观元素、配置元素等,提纲挈领地对Struts2进行了多角度的讲解。核心技术篇首先分析了Struts2中多种具有代表性的设计模式,然后对...

    struts2开发文档

    一个请求在Struts2框架中的处理大概分为以下几个步骤: 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求; 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做 ActionContextCleanUp的可选...

    Struts2属性文件详解

    如果需要实现自己的配置管理器,开发者则可以实现一个实现Configuration接口的类,该类可以自己加载Struts 2配置文件. struts.locale 指定Web应用的默认Locale. struts.i18n.encoding 指定Web应用的默认编码集.该...

    struts2 拦截器写法

    Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.

Global site tag (gtag.js) - Google Analytics