struts2、jQuery实现Ajax简单实例
1.搭建struts2环境
(1)引入jar包
--struts2基本jar包
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
commons-logging-api-1.1.jar
freemarker-2.3.13.jar
ognl-2.6.11.jar
struts2-core-2.1.6.jar
xwork-2.1.2.jar
--struts2返回json格式使用jar包
xwork-core-2.2.1.jar
struts2-json-plugin-2.1.8.1.jar
(2)修改添加struts2相关配置
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<!-- 定义核心Filter的名字 -->
<filter-name>struts2</filter-name>
<!-- 定义核心Filter的实现类 -->
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<!-- FilterDispatcher用来初始化Struts 2并且处理所有的Web请求 -->
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>src目录下新建struts.xml配置文件
(LoginAction用于测试、JqueryAction用于Ajax的使用)
<?xml version="1.0" encoding="GBK"?>
<!-- 指定Struts 2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<!-- struts是Struts 2配置文件的根元素 -->
<struts>
<!-- Struts 2的Action必须放在指定的包空间下定义 -->
<package name="xx" extends="struts-default">
<action name="Login" class="action.LoginAction">
<!-- 定义处理结果和资源之间映射关系。 -->
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
</package>
<!-- Ajax方式返回json格式数据到页面 -->
<package name="json" extends="json-default">
<action name="jquery" class="action.JqueryAction" method="jquery">
<result type="json">
<param name="root">result</param>
</result>
</action>
</package>
</struts>(3)Ajax数据初始化Action
package action;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class JqueryAction extends ActionSupport
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1147435491635259488L;
/**
* 用于记录返回结果
*/
private String result;
/**
* Ajax测试类
* @return
* @throws IOException
*/
public String jquery() throws IOException
{
//获取用户输入值
String num=getRequest().getParameter("num");
List<Test> testUser = new ArrayList<Test> ();
int numtemp;
//判断用户输入是否是数字
if (isNumeric(num))
{
numtemp = Integer.valueOf(num);
}
else
{
numtemp = 0;
}
//Test类,自定义(定义属性:username、password;提供get、set方法)
//模拟数据初始化
for (int i = 0; i < numtemp; i++) {
Test t = new Test();
String username = "user" + i;
String pssword = "pass" + i;
t.setUsername(username);
t.setPassword(pssword);
testUser.add(t);
}
StringBuffer sb = new StringBuffer();
sb.append("[");
for (int i = 0; i < testUser.size(); i++)
{
Test temp = testUser.get(i);
if (testUser.size() -1 > i)
{
sb.append("{\"username\":\""+temp.getUsername()+"\",\"password\":\""+temp.getPassword()+"\"},");
}
else
{
sb.append("{\"username\":\""+temp.getUsername()+"\",\"password\":\""+temp.getPassword()+"\"}");
}
}
sb.append("]");
this.result=sb.toString();
return SUCCESS;
}
public static boolean isNumeric(String str)
{
if (null == str || "".equals(str))
{
return false;
}
for (int i = str.length();--i>=0;)
{
if (!Character.isDigit(str.charAt(i)))
{
return false;
}
}
return true;
}
/**
* 必须经过struts初始化才能使用
* 获取 HttpServletRequest
* @return HttpServletRequest
*/
public static HttpServletRequest getRequest()
{
return ServletActionContext.getRequest();
}
/**
* 必须经过struts初始化才能使用
* 获取HttpServletResponse
* @return HttpServletResponse
*/
public static HttpServletResponse getResponse()
{
return ServletActionContext.getResponse();
}
public String getResult()
{
return result;
}
public void setResult(String result)
{
this.result = result;
}
}(4)jsp
需要导入jquery-1.4.4.min.js
<%@ page language="java" contentType="text/html; charset=gbk"
pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<script type="text/javascript" src="/Ajax/js/jquery-1.4.4.min.js"></script>
<title>Ajax</title>
</head>
<body>
<script type="text/javascript">
function checkSubmit()
{
var bol = true;
var num = $.trim($("#num").val());
/**
success :
当请求成功时调用的函数。
这个函数会得到一个参数:从服务器返回的数据。当请求成功时调用函数,即status==200。
complete :
当请求完成时调用的函数。
这个函数会得到两个参数:XMLHttpRequest对象和一个描述请求成功的类型的字符串。
当请求完成时调用函数,即status==404、403、302...。
**/
$.ajax({
url:'jquery.action',
data:{num:num},
complete:function(xmlHttpRequest)
{
},
success:function(data){
//var jsonStr='[{"id":1,"name":"name1"},{"id":2,"name":"name2"},{"id":3,"name":"name3"},{"id":4,"name":"name4"},{"id":5,"name":"name5"}]';
var uslist=eval("("+data+")");
var divtemp = "";
for(var i = 0; i < uslist.length; i++)
{
divtemp += "<br>"+uslist[i].username+"<br>";
}
$("#msgDIVID").show();
$("#msgDIVID").html(divtemp);
},
error:function()
{
alert('你妹的!竟然出错了!');
}
});
}
</script>
<form name="myform1" action="">
<table>
<tr>
<td>num:</td>
<td><input type="text" id="num" onkeyup="checkSubmit()"></td>
<td><div id="userDivId" style="border: 0px solid red;width:200px;height:10px;color: red"></div></td>
</tr>
</table>
<Br>
<!-- 显示登陆信息的div层. -->
<div id="msgDIVID" style="border:0px solid blue;color: blue;width:400px;height:30;font-weight: bold;font-size: 20px"></div>
</form>
</body>
</html>(5)测试
访问 自己工程的地方
http://localhost:8080/Ajax/jquery/jquery.jsp
在输入框输入数字,即可看到Ajax效果
(6)扩展
[1] json中特殊符号处理
相关推荐
hgzhang 2020-05-06
白净垃圾桶 2020-05-04
playis 2020-04-18
郭大路路 2020-04-16
lenchio 2020-04-08
yixiaoqi00 2020-04-08
melonjj 2020-01-05
mmywcoco 2019-12-28
wangruiling 2014-06-13
yaoyao0 2014-06-01
YangHuiLiang 2014-05-20
方志朋 2019-12-22
xcguoyu 2014-01-18
方志朋 2015-04-30
殷龙飞 2014-06-24
zmysna 2016-12-16
89264255 2011-04-23
wuddny的blog 2014-12-04