Struct2_使用Ajax调用Action方法并返回值
2024-10-21 05:48:36
一、Login.jsp
1、<head>引入jquery:
<script type="text/javascript"
src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.js"></script>
2、界面控件:
用户名: <input type="text" id="userName">
<input type="button" id="btnAjax" value="Ajax调用" />
3、提交ajax请求
<script type="text/javascript">
$(function() {
$("#btnAjax").click(function() {
var userName = $("#userName").val().trim();
if (userName == '') {
alert("用户名不能为空");
return false;
}
//login1为Action类命名空间名称;AjaxExecute为Action方法名称
$.ajax({
type : "post",
url : '/login1/ajaxExecute',
data : {//设置数据源
userName : userName,
password : "我是密码"
},
dataType : "json",//设置需要返回的数据类型
success : function(d) {
alert(d.sayHi);
},
error : function(d) {
alert(d.responseText);
}
});
});
});
</script>
二、后台类:LoginActionNoNamespce
package action; import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map; import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.interceptor.validation.SkipValidation; import freemarker.template.SimpleDate; @ParentPackage("json-default")
@Namespace("/login1")
public class LoginActionNoNamespce extends SuperActionSupport {
private static final long serialVersionUID = 1L;
private Map<String, String> dataMap; //会把本类所有getter方法序列化成字符串返回给jsp页面
public Map<String, String> getDataMap() {
return dataMap;
} public void setDataMap(Map<String, String> dataMap) {
this.dataMap = dataMap;
} @SkipValidation
@Action(value = "ajaxExecute", results = { @Result(type = "json", params = { "root", "dataMap" }) })
public String ajaxExecute() throws Exception {
this.dataMap = new HashMap<String, String>(); // 参数名称必须和jsp的空间名称一一对应
String userName = request.getParameter("userName");
String password = request.getParameter("password");
dataMap.put("isSuccess", "true");
SimpleDateFormat now = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
dataMap.put("sayHi", "Hi:" + userName + " 当前时间为:" + now.format(new Date()) + password); return SUCCESS;
}
}
三、注意事项
- 类注解:@ParentPackage("json-default"),比如为json-default,不能为struts-default
json-default是继承于structs-default的,见.m2\repository\org\apache\struts\struts2-json-plugin\2.3.16.3\struts2-json-plugin-2.3.16.3.jar\struts-plugin.xml - Action注解:@Action(value = "ajaxExecute", results = { @Result(type = "json", params = { "root", "dataMap" }) }),这里的type必须为json、root是固定值,去掉params节点会返回undefined
- 这里的dataMap定义为:private Map<String, String> dataMap;必须要添加getter、setter参数,否则返回null
- JSP页面(这里可以用命名空间,如
url : '/login1/ajaxExecute', @ParentPackage("json-default")这样设置就不会报错) - maven管理,需要引用的库
<dependencies><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>2.3.16</version><exclusions><exclusion><groupId>org.javassist</groupId><artifactId>javassist</artifactId></exclusion></exclusions></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-convention-plugin</artifactId><version>2.3.16.3</version></dependency><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-json-plugin</artifactId><version>2.3.16.3</version></dependency><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version></dependency>
</dependencies>
最新文章
- 【原】iOS多线程之异步任务+并行队列情况与异步任务+串行队列(主队列)情况
- sysctl kernel parameter Optimization note
- PHP WAMP关闭notice等提示
- Java WeakReference的理解与使用
- php5下载,apache2.4与php5整合
- InnoDB这种行锁实现特点意味者:只有通过索引条件检索数据,InnoDB才会使用行级锁,否则,InnoDB将使用表锁!
- pl/sql 的 put和put_line区别
- cocos studio UI 1.6.0.0 修改导出项目路径
- Informatica学习:1、安装介质的获取与安装
- Safe Area Layout Guide
- Spring BeanFactory getBean 源码剖析
- java学习——JDK1.8接口和实现类
- flask权限控制
- 汽车行业解决方案_K2助力车企实现费控/生产“端到端流程”
- 扫描Linux服务器查找恶意软件和rootkit的一款工具
- mysql的undo log和redo log
- vue-router 不重新加载问题
- m4a 转 wav
- quartz-job实现实时或定时发送短信任务
- 安装完xampp启用时,计算机中丢失api-ms-win-crt-conio-l1-1-0.dll怎么办?
热门文章
- [hadoop][会装]hadoop ha模式安装
- dockerfile实例--安装nginx
- [ python ] 项目二:主机批量管理程序
- linux下文件查询命令(cat,more,less,head,tail)
- hdu 1024(滚动数组+动态规划)
- hdu 4496(并查集逆向添边)
- Fraction to Recurring Decimal——数值处理&;&;哈希表
- 原生js遍历每一个对象,给每一个对象添加onclick事件
- HDU 6463.超级无敌简单题-卡边界的暴力 (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)
- vue中的锚链接跳转问题