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

《转》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配置文件中将请求方法的不相同部分抽象成“*".

    struts2的struts.properties配置文件详解

    Struts2是一个基于MVC模式的Web应用程序框架,它提供了一个名为Struts.properties的配置文件,该文件用于配置Struts2的各种参数和设置。下面将对Struts.properties配置文件中的重要参数进行详细解释。 1. struts....

    一个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知识点

    Struts2 的 Action 是一个核心概念,Action 负责处理用户的请求并返回结果。Action 可以通过继承 Struts2 的 ActionSupport 类或实现 Struts2 的 Action 接口来实现。 6. Struts2 的结果类型: Struts2 的结果类型...

    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+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    在 Struts2+Spring+Hibernate 框架中,对 Action 的单元测试环境的搭建是一个非常重要的步骤。本文将详细介绍如何在 Struts2+Spring+Hibernate 框架中搭建 Action 的单元测试环境。 首先,需要了解为什么需要对 ...

Global site tag (gtag.js) - Google Analytics