AJAX框架 jMaki (三) – 用日历(Calendar)和表格(Table)实现的Blog首页

本文介绍如何使用jMaki框架结合YahooUI组件创建一个简单的迷你Blog首页,该页面能够根据用户选择的日历日期动态展示对应的博客文章列表。

下面使用jMaki中的Yahoo CalendarYahoo DataTable 来建立一个迷你Blog首页。这个小程序可以在选择日历的某个日期后,Data Table中只列出这个日期所发表的文章。


jMaki中的Yahoo CalendarYahoo DataTable 都是Yahoo UI Library 中的控间, jMaki的作用只是在现有的控件之上作了一些包装(wrapper), 这样,这些Widget可以通过jMaki框架进行通讯,通过很少的代码或者配置就可以完成一个功能丰富的应用程序,也就是通常所说的mashup.


使用NetBeans开发迷你Blog首页步骤


1. NetBeans 菜单”文件”-”新建项目”.在出现的”新建项目”窗口中,”类别”选择”Web”, 项目选择”Web应用程序”.点击”下一步”

2. 在”新建项目窗口中”, “项目名称”中输入”jMakiCalendarTable”项目. 点击”下一步”

3. 在”框架”窗口中,选择”jMaki Ajax Framework” . 点击”完成”.

4. NetBeans 中出现 jMakiCalendarTable 项目的同时,也会出现在”组件面板”中出现jMakiWidgets, 包括Dojo, Flickr, Google, Yahoo等中的一些Widgets. 如果没有出现”组件面板”, 选择菜单”窗口”-> “组件面板”.

5. netBeans, 用鼠标直接把”jMaki Yahoo”下的Calendar拖到 jMakiCalendarDemo 项目中的index.jsp文件中. 通常日历会放在左侧栏或者右侧栏中. 这个例子中放在<div class="leftSidebar">中.把“jMaki Yahoo“下的”Data Table”拖到“Main Content Area”下。



6. 修改index.jsp 中”yahoo.dataTable”的内容



7. 初始运行jMakiCalendarTable 结果如下:




8. 要完成这个迷你Blog首页,要做以下几部分工作

  • 获得Calendar的日期

  • 日期发送给服务器端

  • 服务器端返回给客户端列表,列表只包含对应日期的信息

  • 返回的列表信息更新到DataTable



要获得Calendar的日期,根据之前介绍的“发布/订阅机制(publish/subscribe machnism)”, 在index.jsp calendar Widget下加入 以下代码<script>代码

<divclass="leftSidebar">
SidebarContentHere
<a:widgetname="yahoo.calendar"/>
<divid="selected_date"></div>
<script>...
functionselectCallBack(_req)...{
vartmp=_req.responseText;
varobj=eval("("+tmp+")");
jmaki.log(
"tmp"+obj);
jmaki.publish(
"/table/topic/clear",...{});
jmaki.publish(
"/table/topic/addRows",obj);
}


functioncalendarListener(item)...{
vartargetDiv=document.getElementById("selected_date");
varselectedDateStr=item.value.getFullYear()
+"/"+(item.value.getMonth()+1)
+"/"+item.value.getDate();
targetDiv.innerHTML
=selectedDateStr;
varbackEndUrl="BlogServlet?date="+selectedDateStr;

jmaki.doAjax(
...{method:"POST",url:backEndUrl,callback:selectCallBack});
}


jmaki.subscribe(
"/yahoo/calendar/onSelect",calendarListener);
</script>
</div><!--leftSidebar-->

因为在web/resources/yahoo/calendar/compenent.js中已经发布(publish)了”/yahoo/calendar/onSelect”, 因此在这段JavaScript中可以直接订阅(subscribe)“/yahoo/calendar/onSelect” topic, 这样在选择Calendar的某个日期时,调用函数calendarListener().

函数calendarListener()完成两件事情, 一个是得到Calendar下显示选中的日期,日期格式为“yyyy/mm/dd”,并显示在定义好的<div id="selected_date">,一个是向服务器端发送AJAX请求, 是用 jmaki.doAjax()函数实现的.

SelectCallBack()函数是AJAX请求返回的回调函数, 得到服务器端返回的信息后, 发布(publish) “"/table/topic/clear"和”/table/topic/addRows”, 并传递了相关参数. 相应地在 yahoo.dataTable 中订阅(subscribe)这些”

topic”

修改dataTable Widget为:

<a:widgetname="yahoo.dataTable"subscribe="/table/topic"
value
="{columns:[
{label:'PostDate',id:'postdate'},
{label:'Title',id:'title'},
{label:'Author',id:'author'}
],
rows:[]
}"

/>

DataTablerows内容为空,下面要把这部分信息放在服务器端的Servlet,

9. 修改后的index.jsp的源代码如下:

<%@taglibprefix="a"uri="http://jmaki/v1.0/jsp"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
<linkrel="stylesheet"href="jmaki-standard.css"type="text/css"></link>
<title>PageTitle</title>
<metahttp-equiv="Content-Type"content="text/html;charset=iso-8859-1"/>
</head>
<body>
<divclass="outerBorder">

<divclass="header">
<divclass="banner">ApplicationName</div>

<divclass="subheader">

<div>
<ahref="mailto:feedback@youraddress">Feedback</a>|
<ahref="#">SiteMap</a>|
<ahref="#">Home</a>
</div>

</div><!--sub-header-->
</div><!--header-->

<divclass="main">
<divclass="leftSidebar">
SidebarContentHere
<a:widgetname="yahoo.calendar"/>
<divid="selected_date"></div>
<script>
functionselectCallBack(_req)
...{
vartmp
=_req.responseText;
varobj
=eval("("+tmp+")");
jmaki.log(
"tmp"+obj);
jmaki.publish(
"/table/topic/clear",...{});
jmaki.publish(
"/table/topic/addRows",obj);
}


functioncalendarListener(item)
...{
vartargetDiv
=document.getElementById("selected_date");
varselectedDateStr
=item.value.getFullYear()
+"/"+(item.value.getMonth()+1)
+"/"+item.value.getDate();
targetDiv.innerHTML
=selectedDateStr;
varbackEndUrl
="BlogServlet?date="+selectedDateStr;

jmaki.doAjax(
...{method:"POST",url:backEndUrl,callback:selectCallBack});
}


jmaki.subscribe(
"/yahoo/calendar/onSelect",calendarListener);
</script>
</div><!--leftSidebar-->

<divclass="content"style="height:400px">

MainContentArea

<a:widgetname="yahoo.dataTable"subscribe="/table/topic"
value
="{columns:[
...{label:'PostDate',id:'postdate'},
...{label:'Title',id:'title'},
...{label:'Author',id:'author'}
],
rows:[]
}
"

/>
</div><!--content-->

</div><!--main-->
</div><!--outerborder-->
</body>
</html>

10. 新建BlogServlet, 作为服务器端接受,处理信息以及返回信息的类. 鼠标右键盘选择项目"jMakiCalendarTable, 选择"新建"->"Servlet",

类名:BlogServlet

包:com.sun.sdn.demo.jmaki

点击"下一步"


下一个"配置Servlet部署"窗口不做修改, 点击”完成”

修改BlogServletprotected void processRequest()方法, 内容如下

protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException...{
String[][]blogList
=...{
...{"2007/09/07","NetBeansNewandCool","TimBoudreau"},
...{"2007/09/07","NetBeansMobility","AdaLi"},
...{"2007/09/07","CreatingWeb2.0RichInternetApplications","MichaelLi"},
...{"2007/09/08","AJAXandJSF","AdaLi"},
【EI复现】基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)内容概要:本文围绕“基于深度强化学习的微能源网能量管理与优化策略”展开研究,重点利用深度Q网络(DQN)等深度强化学习算法对微能源网中的能量调度进行建模与优化,旨在应对可再生能源出力波动、负荷变化及运行成本等问题。文中结合Python代码实现,构建了包含光伏、储能、负荷等元素的微能源网模型,通过强化学习智能体动态决策能量分配策略,实现经济性、稳定性能效的多重优化目标,并可能与其他优化算法进行对比分析以验证有效性。研究属于电力系统与人工智能交叉领域,具有较强的工程应用背景学术参考价值。; 适合人群:具备一定Python编程基础机器学习基础知识,从事电力系统、能源互联网、智能优化等相关方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①学习如何将深度强化学习应用于微能源网的能量管理;②掌握DQN等算法在实际能源系统调度中的建模与实现方法;③为相关课题研究或项目开发提供代码参考技术思路。; 阅读建议:建议读者结合提供的Python代码进行实践操作,理解环境建模、状态空间、动作空间及奖励函数的设计逻辑,同时可扩展学习其他强化学习算法在能源系统中的应用。
皮肤烧伤识别作为医学与智能技术交叉的前沿课题,近年来在深度学习方法推动下取得了显著进展。该技术体系借助卷积神经网络等先进模型,实现了对烧伤区域特征的高效提取与分类判别,为临床诊疗决策提供了重要参考依据。本研究项目系统整合了算法设计、数据处理及模型部署等关键环节,形成了一套完整的可操作性方案。 在技术实现层面,首先需要构建具有代表性的烧伤图像数据库,涵盖不同损伤程度及愈合阶段的临床样本。通过对原始图像进行标准化校正、对比度增强等预处理操作,有效提升后续特征学习的稳定性。网络架构设计需充分考虑皮肤病变的区域特性,通过多层卷积与池化操作的组合,逐步抽象出具有判别力的烧伤特征表示。 模型优化过程中采用自适应学习率调整策略,结合交叉熵损失函数与梯度下降算法,确保参数收敛的稳定性。为防止过拟合现象,引入数据扩增技术与正则化约束,增强模型的泛化能力。性能验证阶段采用精确率、召回率等多维度指标,在独立测试集上全面评估模型对不同烧伤类型的识别效能。 经过充分验证的识别系统可集成至医疗诊断平台,通过规范化接口实现与现有医疗设备的无缝对接。实际部署前需进行多中心临床验证,确保系统在不同操作环境下的稳定表现。该技术方案的实施将显著缩短烧伤评估时间,为临床医师提供客观量化的辅助诊断依据,进而优化治疗方案制定流程。 本项目的突出特点在于将理论研究与工程实践有机结合,既包含前沿的深度学习算法探索,又提供了完整的产业化实施路径。通过模块化的设计思路,使得医疗专业人员能够快速掌握核心技术方法,推动智能诊断技术在烧伤外科领域的实际应用。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值