Struts2框架下action与jsp数据交互实践
"Struts2框架实现action和jsp的数据交互,主要通过Ajax技术进行异步通信" 在Struts2框架中,Action与JSP之间的数据交互是Web应用开发中的常见操作,通常涉及到用户界面的动态更新和服务器端业务逻辑的处理。在给定的例子中,我们看到一个基于jQuery的Ajax调用来实现这一交互。以下将详细解释这个过程。 1. **Ajax调用**: - JSP页面中的`checkTel`函数使用jQuery的`$.ajax`方法发起异步请求。这里的URL指向了Struts2 Action的方法`customer_checkTel.do`,表示当用户触发该函数时,会向服务器发送一个POST请求。 - 请求的数据类型设置为`dataType:"json"`,意味着期望从服务器返回JSON格式的数据。 - `data`参数包含了要传递给Action的参数,如`macaoCardCustomer.userType`和`macaoCardCustomer.organTel`(或`agentTel`)。 2. **Struts2 Action处理**: - Action类中的`checkTel`方法是Ajax请求的目标。在实际代码中,`String mobile = null;`应该是获取请求参数的代码,这部分在给出的内容中被截断了。正常情况下,应该使用`params`拦截器或者直接通过`ActionContext`来获取请求参数,如`String mobile = params.get("macaoCardCustomer.organTel");`。 - 在Action中完成业务逻辑处理后,通常会设置结果值,以决定后续的视图(JSP)跳转。在Ajax场景下,我们通常不进行视图跳转,而是直接返回处理结果(例如JSON对象)。 3. **响应处理**: - Ajax的`success`回调函数处理来自服务器的响应。在这里,它检查`data.count`的值,根据业务规则展示相应的提示信息。 - 如果发生错误,`error`回调函数会被调用,显示网络异常的提示。 4. **Struts2配置**: - 在Struts2的配置文件(struts.xml)中,需要定义一个匹配`/macaoAction/customer_checkTel.action`的Action配置,指定执行`checkTel`方法,并可能需要配置返回JSON的Result类型,如`<result type="json">`。 5. **JSON序列化与反序列化**: - Struts2提供了JSON插件支持JSON数据的处理。为了返回JSON,Action需要使用`@ResultType("json")`注解或在配置文件中设置结果类型为JSON。 - Action处理完成后,返回的对象会被自动转换为JSON格式,然后发送回客户端。 6. **最佳实践**: - 使用OGNL(Object-Graph Navigation Language)表达式简化数据传递,例如`${macaoCardCustomer.userType}`。 - 考虑使用Struts2的拦截器来处理共性逻辑,如日志、权限验证等。 - 对于复杂的交互,可以考虑使用Struts2的插件,如Tiles,来组织和管理视图。 Struts2通过Ajax实现了Action与JSP之间的无刷新通信,提高了用户体验,同时也保持了MVC架构的清晰性。理解并熟练掌握这种交互方式对于开发高效、可维护的Struts2应用至关重要。
例如:
jsp页面
//校验手机号码绑定客户-输入手机号就校验
function checkTel(){
var userType = $('#userType').val();
var mobile = "";
if(userType == '8'){
mobile = $("#organTel").val();
$.ajax({
url : "${basePath}/macaoAction/customer_checkTel.do",
type : "post",
dataType : "json",
data: {
"macaoCardCustomer.userType":userType,
"macaoCardCustomer.organTel":mobile
},
success:function(data) {
loadingHide();
if(data.count > '0'){
alertMsg("该手机号码无法用于办理业务,一个手机号码仅能绑定一个个人客户。");
}
},
error : function() {
loadingHide();
alert("网络异常,稍后请重试");
}
});
}else{
下载后可阅读完整内容,剩余4页未读,立即下载
- 粉丝: 149
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- OptiX传输试题与SDH基础知识
- C++Builder函数详解与应用
- Linux shell (bash) 文件与字符串比较运算符详解
- Adam Gawne-Cain解读英文版WKT格式与常见投影标准
- dos命令详解:基础操作与网络测试必备
- Windows 蓝屏代码解析与处理指南
- PSoC CY8C24533在电动自行车控制器设计中的应用
- PHP整合FCKeditor网页编辑器教程
- Java Swing计算器源码示例:初学者入门教程
- Eclipse平台上的可视化开发:使用VEP与SWT
- 软件工程CASE工具实践指南
- AIX LVM详解:网络存储架构与管理
- 递归算法解析:文件系统、XML与树图
- 使用Struts2与MySQL构建Web登录验证教程
- PHP5 CLI模式:用PHP编写Shell脚本教程
- MyBatis与Spring完美整合:1.0.0-RC3详解