这星期一接到一个任务:把首页上的告警列表部分的查询改用AJAX实现,目的是降低网络和服务器的IO。
项目中使用到了AJAX的prototype.js框架和JSON技术。
1、
function searchAlertSeverity(severityId){
action_url="SearchAlertSeverityAction.do?severityId="+severityId;
var curl='<c:url value="'+action_url+'"/>';
new Ajax.Request(curl, { method:'get',
requestHeaders: {Accept: 'application/json'},
onSuccess:showResponse});
}
function showResponse(transport){
//在刚开始用“eval('('+transport.responseText+')')或transport.responseText.parseJSON()”来将字符串转化为JSON对象的,但是运行无效。费了好半天,才发现parseJSON()\yy\\方法是json.js中的方法,而我没有引入这个js文件。
//prototype.js对json的支持非常好,evalJSON()方法就是prototype.js中的,作用和parseJSON()一样。
var alertList=transport.responseText.evalJSON();将服务器返回的字符串转化为JSON对象。
createAlertTab(alertList);
}
function createAlertTab(json){
var len=json.alerts.length ;
var tbody=document.getElementById('freshThis');
// 删除原有数据
var _tr=tbody.getElementsByTagName("tr");
while(_tr.length!=0){
// 用 _tr[0].parentNode才能保证每次取到正确的子节点
_tr[0].parentNode.removeChild(_tr[0]);
}
td.innerHTML='';
message_tr.appendChild(td);
for(i=0;i<len&&i<4;i ++){
var td_0=document.createElement('td');
var td_1=document.createElement('td');
var td_2=document.createElement('td');
var td_3=document.createElement('td');
var td_4=document.createElement('td');
td_0.innerHTML='<div class="svt" style="background-color:'+json.alerts[i]["severityColor"]+'"> </div>';
td_1.innerHTML=json.alerts[i]["lastHappenTime"];
td_2.innerHTML=json.alerts[i]["deviceSno"];
td_3.innerHTML=json.alerts[i]["alertTitle"];
td_4.innerHTML=json.alerts[i]["alertType"];
var tr=document.createElement('tr');
tr.appendChild(td_0);
tr.appendChild(td_1);
tr.appendChild(td_2);
tr.appendChild(td_3);
tr.appendChild(td_4);
tbody.appendChild(tr);
}
}
jsp页面部分代码:
<table id="ad" width="100%" border="0" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th width="12%">告警级别</th>
<th width="15%">发生时间</th>
<th width="20%">设备序列号</th>
<th width="20%">告警标题</th>
<th width="15%">告警类型</th>
</tr>
</thead>
<tbody id="freshThis">
<c:forEach var="vo" items="${PAGER_ITEMS}" end="4">
<tr>
<td>
<div class="svt"
style="background-color:${vo.severityColor}"> </div>
</td> <td><fmt:formatDate value='${vo.lastHappenTime}' pattern="yyyy-MM-dd HH:mm:ss" /></td>
<td>${vo.deviceSno}</td>
<td>${vo.alertTitle}</td>
<td>${allAlertType[vo.alertType]}</td>
</tr>
</c:forEach>
//////////点击超链接部分刷新首页面的内容。
<a href="#" onclick="javascript:searchAlertSeverity (${alertSeverity.severityId})">
<div class="svt"
style="background-color:${alertSeverity.severityColor}"></div>
${alertSeverity.severityName}</a></td>
</tbody>
</table>
//////////SearchAlertSeverityAction .java
package com.huaxia.inm.bbms.actions.alert;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import com.huaxia.inm.bbms.beans.alert.Alert;
import com.huaxia.inm.bbms.domain.TbAdUser;
import com.huaxia.inm.bbms.domain.TbUser;
import com.huaxia.inm.bbms.service.AlertService;
import com.huaxia.inm.bbms.utils.Contents;
/**
*
* @author jinyy.
*
*/
public class SearchAlertSeverityAction extends Action {
public static final String DATE_PATTERN = "yyyy-MM-dd HH:mm:ss";
private DateFormat dateFormat;
@SuppressWarnings("unchecked")
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
try {
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("GBK");
String severityId = (String) request.getParameter("severityId");
List<Alert> list = alertService.getAdUserCurAlertlist(Integer
.parseInt(severityId));;
PrintWriter out = response.getWriter();
JSONObject object = new JSONObject();
JSONArray js = new JSONArray();
dateFormat=new SimpleDateFormat(DATE_PATTERN);
for (Alert alert : list) {
JSONObject objTemp = new JSONObject();
String severityColor = alert.getSeverityColor();
objTemp.put("severityColor", severityColor);
objTemp.put("lastHappenTime", dateFormat.format (alert.getLastHappenTime()));
objTemp.put("deviceSno", alert.getDeviceSno());
objTemp.put("alertTitle", alert.getAlertTitle());
String alertType = alert.getAlertType());
objTemp.put("alertType", alertType);
js.add(objTemp);
}
object.put("alerts", js);
out.print(object.toString());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
分享到:
相关推荐
总的来说,"jquery + struts1 + ajax学习例子"是一个很好的教学资源,它涵盖了前端交互、后台处理和异步通信的关键技术。通过深入研究这个例子,开发者可以更熟练地掌握这些技能,并将其应用于实际项目中,提升Web...
在这个项目中,Struts负责处理用户请求,将Ajax发送的数据转发到相应的Action,然后将处理结果返回给前端。 Hibernate是一个优秀的对象关系映射(ORM)框架,它简化了Java应用程序对数据库的操作。通过Hibernate,...
总结起来,"struts2+jquery+json+ajax"的例子展示了如何利用这些技术协同工作,实现一个无刷新的登录界面,提供流畅的用户体验。通过Struts2处理业务逻辑和数据验证,jQuery和Ajax负责前后端的通信,JSON作为数据...
在Struts2的配置文件(struts.xml)中,我们需要定义一个对应的Action,该Action将处理来自Ajax请求的数据,并返回响应。例如: ```xml <package name="default" namespace="/" extends="struts-default"> ...
【资源介绍】:Ajax+Struts+hibernate二级联动查询(完整源码例子) 【备注】: 亲爱的下载用户: 谢谢您光临CSDN阿Q资源中心! 本中心发布的资源均是经过本人测试通过后才发布的,请放心下载。如果您有不...
本文将详细讲解在Struts2框架中使用Ajax和JSON进行数据交互的心得体会。 首先,要启用Struts2对JSON的支持,你需要在项目中引入`struts2-json-plugin.jar`库。这个库包含了处理JSON数据所需的类和方法,可以从...
总的来说,这个实例展示了如何在Struts和AJAX环境中使用JSON进行数据交互。通过AJAX,前端可以异步地向服务器发送请求,获取JSON数据,然后在不刷新整个页面的情况下更新部分视图。而Struts框架则负责处理请求,调用...
在Struts配置文件(如struts-config.xml)中定义一个Action,例如`MyAction.java`,该Action负责处理业务逻辑并返回结果。 ```xml ``` 2. **编写Action类**: `MyAction.java`中需要定义一个执行方法,比如`...
struts2+jquery+ajax实现验证功能
一个部门和员工信息管理的例子,页面上的所有数据全部采用动态加载,增删改查操用全部在一个页面上实现,没有页面跳转。前台页面和后台服务器交互采用json格试传输。 初学jquery的可以下载看一下
本示例是基于jQuery、Ajax、Struts、Spring和iBatis这五个核心技术实现的一个无限级树的案例。下面我们将深入探讨这些技术及其在无限级树中的应用。 首先,jQuery是一个轻量级的JavaScript库,它简化了HTML文档遍历...
Struts2之ajax初析的并结合jquery一个例子 Web2.0的随波逐流,Ajax那是大放异彩,Struts2框架自己整合了对Ajax的原生支持(struts 2.1.7+,之前的版本可以通过插件实现),框架的整合只是使得JSON的创建变得异常简单...
一个简单的例子是,用户在前端输入表单信息,点击提交按钮时,通过Ajax发送请求到Struts2 Action,Action验证数据并返回结果。如果数据有效,更新页面显示“提交成功”;如果数据无效,返回错误信息,前端展示错误...
**Struts框架**:Struts是Apache软件基金会的一个开源项目,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。Struts主要负责控制应用程序的流程,通过Action类处理用户请求,并将结果转发到...
在这个项目中,可能包含了一个使用jQuery的HTML页面,用于发起AJAX请求。 4. **src目录**:这是源代码目录,通常包含Java代码和其他源文件。在这个项目中,可能有Struts2的Action类和相关的Java代码。 5. **....
最后一种方法是集成到Struts2的Ajax功能中。通过JSON或XML响应,将图表数据发送到前端,然后使用JavaScript库(如jQuery或D3.js)在客户端渲染图表,实现异步加载和更新。 在实际开发中,我们还需要注意一些关键点...
总的来说,"Struts2+json+ajax整合例子"是一个实用的教学资源,帮助开发者了解如何在实际项目中利用这些技术进行高效的Web开发。通过学习和实践这个例子,开发者可以提升其在Web应用程序开发中的技能。
在`struts.xml`配置文件中,我们需要定义一个Action,该Action将处理Ajax请求。例如,我们可以创建一个名为`AjaxAction`的类,里面包含一个返回JSON数据的方法。在`struts.xml`中配置这个Action,确保它能接收GET或...
在提供的示例中,“struts2Ajax”可能包含了两个项目,一个使用jQuery、Ajax和Servlet,另一个引入了Struts2。这两个例子可以帮助初学者理解如何在实际开发中整合这些技术。 对于“jQuery+Ajax+Servlet”的示例,...
【标题】"AJAX例子 struts hibernate 开发"揭示了这个压缩包文件包含的是一个实际的开发项目,其中融合了AJAX、Struts和Hibernate这三种技术的使用。AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个...