- 浏览: 1590028 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
附件中有完整的案例!
1.动态方法调用
2.案例:登录/注册(采用 “!” “通配符”“ method属性” 三种方法实现 )
struts.xml
Action.java
login.jsp
initPerson.jsp
1.动态方法调用
在业务逻辑处理action中,可以包含一个或者多个逻辑处理方法。 例如:在jsp文件中的同一个form表单中 有多个用来提交的表单值的按钮,可当用户通过不通的按钮提交表单的时候,需要笤俑Action中的不同的处理方法,这是就需要使用动态方法调用。 在使用动态方法调用时候,提交请求的action属性值,有以下几种方法 action=“Action名称!方法名” 或者 action=“Action名称!方法名.action” 或者 采用通配符 {}来进行动态方法调用 或者 method 配置多个同一个action 不同的 method
2.案例:登录/注册(采用 “!” “通配符”“ method属性” 三种方法实现 )
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!--==================== --> <!--=====定义常量========= --> <!--==================== --> <!-- 修改请求的后缀名为.do 修改后每个请求必须要有后缀了--> <constant name="struts.action.extension" value="do,action"/> <!-- 对于 采用 "!方法名"这种方法有用 ,采用通配符就不需要设置这个了 --> <constant name="struts.enable.DynamicMethodInvocation" value="false"/> <!-- 默认的视图主题 <constant name="struts.ui.theme" value="simple"/>--> <!--+===================+--> <!--+=====定义基本包=======+--> <!--+===================+--> <package name="default" extends="struts-default"> <action name="showPerson" class="com.luob.action.ShowPerson"> <result name="success">/showPerson.jsp</result> </action> </package> <!-- 使用“!”进行动态方法的调用 --> <package name="user" extends="struts-default" namespace="/user"> <action name="loginRegister" class="com.luob.action.ShowPerson"> <result name="success">/index.jsp</result> <result name="reg">/initPerson.jsp</result> </action> </package> <!--使用通配符 来进行动态方法的调用 --> <package name="user2" extends="struts-default" namespace="/user2"> <action name="userAction_*_*" class="com.luob.action.ShowPerson" method="{1}"> <result name="success">/index.jsp</result> <result name="reg">/initPerson.jsp</result> </action> </package> <!-- 使用Method来动态指定调用某个Action中的方法 --> <package name="user3" extends="struts-default" namespace="/user3"> <action name="login" class="com.luob.action.ShowPerson"> <result name="success">/index.jsp</result> </action> <action name="register" class="com.luob.action.ShowPerson" method="register"> <result name="reg">/initPerson.jsp</result> </action> </package> </struts>
Action.java
package com.luob.action; import com.luob.model.Person; import com.opensymphony.xwork2.ActionSupport; public class ShowPerson extends ActionSupport { private Person person; //采用POJO的方式进行赋值和存值 private String tip; @Override public String execute() throws Exception { // TODO Auto-generated method stub setTip("您单击了【登录】按钮!您使用帐号"+person.getName()+"登录成功!"); return SUCCESS; } public String register(){ setTip("您单击了【注册】按钮!亲填写下面的信息吧!"); return "reg"; } public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } public String getTip() { return tip; } public void setTip(String tip) { this.tip = tip; } }
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'login.jsp' starting page</title> <SCRIPT type="text/javascript"> function reg(){ var targetForm=document.forms[0]; targetForm.action="user/loginRegister!register.action"; targetForm.submit(); } function reg2(){ var targetForm=document.forms[1]; targetForm.action="user2/userAction_register.action"; targetForm.submit(); } function reg3(){ var targetForm=document.forms[2]; targetForm.action="user3/register.action"; targetForm.submit(); } </SCRIPT> </head> <body> <center> <!-- 使用 “!”来动态调用方法 --> <s:form action="user/loginRegister!execute.action" method="post" theme="simple"> <ul style="list-style: none;"> <li>帐号:<s:textfield name="person.name"/></li> <li>密码:<s:textfield name="person.password"/></li> <li> <input type="button" value="注册" onclick="reg()"/> <s:submit value="登录"/> </li> </ul> </s:form> <!-- 采用通配符 进行方法动态调用 --> <s:form action="user2/userAction_.action" method="post" theme="simple"> <ul style="list-style: none;"> <li>帐号:<s:textfield name="person.name"/></li> <li>密码:<s:textfield name="person.password"/></li> <li> <input type="button" value="注册" onclick="reg2()"/> <s:submit value="登录"/> </li> </ul> </s:form> <!-- 采用method属性动态调用方法--> <s:form action="user3/login.action" method="post" theme="simple"> <ul style="list-style: none;"> <li>帐号:<s:textfield name="person.name"/></li> <li>密码:<s:textfield name="person.password"/></li> <li> <input type="button" value="注册" onclick="reg3()"/> <s:submit value="登录"/> </li> </ul> </s:form> </center> </body> </html>
initPerson.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'initPerson.jsp' starting page</title> </head> <body> <center> <s:form action="showPerson" method="post"> <s:textfield name="person.name" label="姓名"/> <s:textfield name="person.sex" label="性别"/> <s:textfield name="person.age" label="年龄"/> <s:textfield name="person.address" label="住址"/> <s:submit value="提交"/> </s:form> </center> </body> </html>
- Struts2_Dynamic.zip (3.3 MB)
- 下载次数: 28
发表评论
-
解决getOutputStream() has already been called for this response
2014-07-30 19:16 3315java.lang.IllegalStateException ... -
Struts2 + ajaxFileUpload 异步上传文件
2013-12-04 19:33 1888ajaxFileUpload下载地址http://www.ph ... -
Struts2 Action 解析提交的XML
2013-10-16 12:30 1633package com.bjdata.bjsearch.p ... -
MyBatis+Spring+Struts2
2012-11-28 00:32 10612MyBatis3.1.1+Spring3.1.2+Struts ... -
Ibatis 整合spring + Struts2 加入OSCACHE
2012-11-14 00:10 4554说明: 使用 spring2.5 +ibatis2.3 ... -
Struts2中使用JfreeChart
2012-11-06 09:02 16381.jar commons-fileupload-1.2.2. ... -
Struts2整合SiteMesh
2012-11-05 10:33 76521.导入Struts2的jar 和 sitemesh.jar ... -
Struts2 编写安全策略(四十五)
2012-09-23 23:53 2291编写安全策略 包含(1 ... -
SSH2整合完整案例(四十三)
2012-09-14 09:34 20685注解配置:Struts2+Spring2.5+Hibernat ... -
Struts2 阻止表单重复 和 等待页面(四十四)
2012-09-23 21:13 2138表单重复提交现象 导 ... -
Struts2 文件上传,下载,删除(四十一)
2012-09-10 23:37 12326本文介绍了: 1.基于表单的文件上传 2.Struts 2 的 ... -
Struts2 文件上传,下载的类型(四十二)
2012-09-06 23:18 1994声明: 以下复制他人的!!! Struts2 文件上传 之 ... -
Struts2 常用标签使用(三十九)
2012-09-03 09:28 64261.append标签 使用append标签可以把多个集合对 ... -
Struts2 timer拦截器(三十二)
2012-08-31 02:17 20681.Strus2系统拦截器中,timer拦截器可以实现输出Ac ... -
Struts2 常用标签使用(三十九)
2012-09-03 00:50 51.append标签 使用append标签可以把多个集合对 ... -
Struts2 主题和模版设置(四十)
2012-09-03 20:24 4142----------------Struts2 主题----- ... -
Struts2 如何使用OGNL表达式(三十八)
2012-08-30 20:55 50751.OGNL是Object Graph Navitagtion ... -
Struts2 使用Validation框架验证数据(三十七)
2012-08-30 11:25 18462A:在Struts2的框架汇中,开发者可以通过继承Action ... -
Struts2 使用Validation框架验证数据(三十七)
2012-08-29 14:08 9A:在Struts2的框架汇中,开发者可以通过继承Action ... -
Struts2 iterator 标签遍历 Map,List,数组(三十六)
2012-08-26 18:30 205221.使用iterator 标签 遍历 数组,Map,List ...
相关推荐
Struts2作为一款流行的Java Web框架,其动态方法调用(Dynamic Method Invocation,DMI)功能为开发者提供了极大的灵活性。在传统的MVC模式中,控制器(Controller)通常通过硬编码的方式处理请求,而动态方法调用则...
Struts2_动态方法调用,使用struts2架构的动态方法进行资源调用
Struts2 动态方法调用(DMI,Dynamic Method Invocation)是Struts2框架中一个特色功能,允许开发者通过URL直接调用Action类中的方法,而无需预先在配置文件中显式声明这些方法。这种机制增加了开发的灵活性,但也...
### Struts 2 Action 动态方法调用详解 #### 一、引言 在Struts 2框架中,Action动态方法调用是一项非常实用的功能。它允许开发者在一个Action类中定义多个处理方法,而不仅仅局限于传统的`execute()`方法。这种...
Struts2作为一款流行的Java Web框架,其动态访问调用机制是其强大特性的体现之一。在实际开发中,我们经常需要根据用户的不同操作来执行不同的业务逻辑,这时`struts2`的`method`属性就显得尤为重要。本文将深入探讨...
在Struts2框架中,动态方法调用是一个非常实用且灵活的功能,它允许开发者通过URL中的参数来决定控制器中具体调用哪个方法。这不仅提高了代码的可读性和可维护性,还使得处理不同的请求变得更加直观和高效。下面将...
本文将重点讨论Struts2中的API耦合和动态方法调用,这两种特性对于理解框架的工作原理和提高代码的灵活性至关重要。 首先,我们来看看Struts2 API耦合的几种方式: 1. **ActionContext类**:ActionContext是Struts...
在Struts2中,Action是业务逻辑处理的核心,而通配符的使用则是Struts2框架中一种灵活的配置方式,允许我们以更简洁的方式调用同一个Action中的不同方法。下面我们将深入探讨如何利用Struts2的通配符来实现这一功能...
Struts2作为一款流行的Java Web框架,其动态调用功能为开发者提供了极大的便利。在处理多样化的用户请求时,能够灵活地映射不同的操作(methods)到同一个Action,从而简化配置,提高代码的可维护性。本文将深入探讨...
Struts2动态方法调用是该框架的一个重要特性,它允许开发者通过URL直接映射到Action类中的方法,而不仅仅是类。这种灵活性极大地增强了应用程序的可扩展性和可维护性。在Struts2中,动态方法调用是通过ActionMapper...
Struts2 动态方法调用详解 Struts2 框架提供了动态方法调用的机制,允许一个 Action 对应多个请求,从而减少 Action 的数量。这种机制可以提高系统的灵活性和可维护性。 方法一:指定 Method 属性 在 Struts2 中...
在Struts2中,异步调用机制是实现页面动态更新和提高用户体验的关键技术之一。这个案例“struts014”很可能展示了如何在Struts2中实现异步调用来处理耗时操作,如数据库查询或复杂计算。 异步调用的基本概念是,...
在Struts2框架中,直接和间接访问Servlet API以及动态方法调用是两个关键概念,它们对理解和优化应用性能至关重要。 首先,让我们深入理解直接访问Servlet API。在传统的MVC模式中,Servlet扮演着控制器的角色,...
利用Struts 2框架创建一个web项目chap2_e22,实现用户登录过程。具体要求是在loginAction类中分别用login()和registered()处理用户登录和注册的过程,分别创建login.jsp和register.jsp两个页面实现登录和注册的...
Struts2 动态调用 Action 指定方法及默认 Action 配置 Struts2 框架中,一个 Action 可以包含多个处理逻辑,而不是只有一个 execute() 方法。在实际开发中,我们经常需要在一个 Action 中实现多个处理逻辑,这样...
在Struts2中,动态方法调用是其一大特性,允许开发者通过URL直接调用Action类中的方法。默认情况下,Struts2会尝试将Action类的公共方法与请求路径关联,如果请求路径与Action类的方法名匹配,那么这个方法就会被...
Struts2的动态方法调用(Dynamic Method Invocation,DMI)允许我们根据用户输入来决定执行哪个Action方法。在没有明确的方法名时,Struts2会尝试匹配Action类中的方法。这种方式增加了代码的灵活性,但同时也可能...
在Struts2框架中,这种动态访问主要体现在Action类的实例化和方法调用上,极大地提高了应用的可扩展性和可维护性。下面将详细介绍Struts2动态访问方式的相关知识点。 首先,Struts2的核心是DispatcherServlet,它...
Struts2调用EJB异常项目包,出现的问题以及解决方案参见EJBStruts.zip中的说明.txt 以及博客 http://blog.csdn.net/icecream0/article/details/7167853