Struts 2 是一个基于MVC设计模式的Web框架,既支持传统的同步请求,也可以通过 Ajax 技术实现异步请求。在 Struts 2 框架中,实现 Ajax 的方式有以下三种:
1. 使用Struts2提供的<s:url>
标签
Struts 2 提供了 <s:url>
标签,该标签可以在页面中生成一个 URL 地址,当用户点击或者提交表单时,会将请求异步发起。使用这种方式时需要进行以下步骤:
步骤
- 定义 Action 方法,方法名使用
execute
,返回值类型使用String
。 - 在 Action 方法中使用
HttpServletResponse
写出输出流并返回null
,实现数据返回。 - 在页面中使用
<s:url>
标签生成 URL 地址,并将 URL 地址赋值给某个 JavaScript 变量。 - 使用 Ajax 技术,异步发起请求并获得返回数据。
示例
- Action 方法:
public class AjaxAction extends ActionSupport {
public String execute() throws Exception {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write("hello,struts2!");
return null;
}
}
- jsp页面:
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>ajax</title>
<script src="<s:url value='/js/jquery-1.11.1.min.js'/>"></script>
<script>
$(function () {
$("#btn").click(function () {
$.get("<s:url value='/ajax'/>", {}, function (data, status) {
$("#result").text(data);
});
});
});
</script>
</head>
<body>
<input type="button" value="ajax" id="btn"/>
<div id="result"></div>
</body>
</html>
2. 使用Struts2提供的@Result注解
在Struts2的Action中可以使用@Result注解来指定成功后的处理方式。这个注解还可以用来指定是否启用 Ajax。在这种方式下,需要进行以下步骤:
步骤
- 定义 Action 方法,方法名使用
execute
,返回值类型使用String
。 - 在 Action 方法中返回字符串,指定使用
@Result
注解,设置type
属性为json
,该注解主要用于指定返回 json 格式数据。 - 在页面中使用 Ajax 技术,异步发起请求并获得返回数据。
示例
- Action 方法:
public class AjaxAction extends ActionSupport {
@Action(value = "/json", results = {
@Result(name = SUCCESS, type = "json")
})
public String execute() throws Exception {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write("{\"name\":\"张三\",\"age\":18}");
return null;
}
}
- 前端页面:
<html>
<head>
<title>ajax</title>
<script src="<s:url value='/js/jquery-1.11.1.min.js'/>"></script>
<script>
$(function () {
$.getJSON("<s:url value='/json'/>", function (data) {
$("#name").text(data.name);
$("#age").text(data.age);
});
});
</script>
</head>
<body>
姓名:<span id="name"></span><br>
年龄:<span id="age"></span>
</body>
</html>
3. 使用第三方库
也可以使用第三方库,例如 jQuery.ajax()
方法和 dojo.xhrGet()
方法等。使用这种方式时需要进行以下步骤:
步骤
- 定义 Action 方法,方法名使用
execute
,返回值类型使用String
。 - 在 Action 方法中使用
HttpServletResponse
写出输出流并返回null
,实现数据返回。 - 在页面中使用第三方库提供的异步请求方法发起请求并获得返回数据。
示例
- Action 方法:
public class AjaxAction extends ActionSupport {
public String execute() throws Exception {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write("hello,struts2!");
return null;
}
}
- jsp页面:
<html>
<head>
<title>ajax</title>
<script src="<s:url value='/js/jquery-1.11.1.min.js'/>"></script>
<script>
$(function () {
$("#btn").click(function () {
$.ajax({
type: "GET",
url: "<s:url value='/ajax'/>",
success: function (data) {
$("#result").text(data);
}
});
});
});
</script>
</head>
<body>
<input type="button" value="ajax" id="btn"/>
<div id="result"></div>
</body>
</html>
这三种方式可以根据实际情况灵活使用,以实现 Ajax 的异步请求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Struts 2中实现Ajax的三种方式 - Python技术站