N没写博客了,也是来****公司后的第一博。呵呵
今天绝大多数的Web 开发会涉及到ajax json。先从前台开始说起(基于Jquery)
(1) web 前台产生异步请求;jquery 比较常用的两个函数:
1)
$.ajax({
type:"post",
url: addURL,
dataType: "json",
data:param,
success: function (data){
alert("dd");
alert(data);
}
});
其中addURL 处理该请求的后台Action,param表示请求的参数,是以键值对的显示出现,如:
var selcetedIdString = "${param.selcetedIdString}";
var addURL = '${addURL}';
var param = {selcetedIdString:selcetedIdString};
2)第二种方法,利用jqurey 提供的函数
$.getJSON(url,param,function(data){
alert(data);
});
参数意义与第一种一样,两者的唯一区别在于 返回的data 的类型,第一种是是返回对象不是json对象,要进过
eval 函数转化才能成json对象,第二种,返回的data直接是json数据。
前台大致情况是这样的,后台是 json数据的来源,下面来描述后台怎么样常识json 数据,基于ssh 开发,struts2 很好的集成了 对json 数据产生支持,利用struts2 产生json 数据,需要用到包为:
json-lib-2.4-jdk15.jar;ezmorph-1.0.2.jar等。主要是利用import net.sf.json.*下的静态类,写入到请求里。其中主要的注意点,Action 里,请求处理成功后,是否有配置Result;
1) Action 返回的是Void
Action中
public void sationMapQuery(){
Helper.logEntrance("sationMapQuery");
try {
Helper.checkNotNull("sationMapQuery_selcetedIdString", selcetedIdString, "sationMapQuery_selcetedIdString");
String idtemp = selcetedIdString;
selcetedId = null;
selcetedId = new ArrayList<Long>();
if(idtemp.contains(",")){
String arrayID [] = idtemp.split(",");
for(String id:arrayID){
selcetedId.add(new Long(id));
}
}else {
selcetedId.add(new Long(idtemp));
}
List selectedList = stationMapServer.queryByIDs(selcetedId);
String listjson = JsonUtil.getListToJsonData(selectedList);
System.out.println(listjson);
JsonUtil.sendJsonString(listjson);
} catch (IOException e) {
e.printStackTrace();
}
/*JSONObject jsonObject=new JSONObject();
try {
JsonUtil.sendCallbackMessage("true");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jsonObject.element("isSuccess", true);*/
Helper.logExit("sationMapQuery");
}
其中package com.zjpost.rural.util;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import org.apache.struts2.ServletActionContext;
import com.zjpost.rural.model.intermedia.JsonColumn;
import com.zjpost.rural.model.intermedia.JsonTreeItem;
public class JsonUtil {
public static void sendJsonString(String content)throws IOException{
if(content == null){
content = "";
}
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
response.setContentType("text/plain");
response.getWriter().write(content);
}
//message values:
// success : "true"
// error: "detail error message like : db connection exception"
// forword: "forword"
public static void sendCallbackMessage(String message) throws IOException{
JSONObject jsonMessage = new JSONObject();
jsonMessage.element("message", message);
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
response.setContentType("text/plain");
response.getWriter().write(jsonMessage.toString());
}
public static void sendHtmlCallbackMessage(String message) throws IOException{
JSONObject jsonMessage = new JSONObject();
jsonMessage.element("message", message);
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
response.getWriter().write(jsonMessage.toString());
}
public static String toJsonTable(JsonColumn[] columns, List<Object[]> rows, Long total){
return toJsonTable(columns, rows, total, null, false);
}
public static String toJsonTable(JsonColumn[] columns, List<Object[]> rows, Long total, String idColumnName,boolean needCheckbox){
JSONObject table = new JSONObject();
table.element("total", total);
table.element("columns", columns);
JSONArray rowArray = new JSONArray();
if(rows != null && rows.size() > 0){
for(Object[] objs: rows)
{
JSONObject rowObj = new JSONObject();
int i=0;
if (needCheckbox) {
i = 1;
for (; i < columns.length ; i++) {
rowObj.element(columns[i].getField(), objs[i - 1]);
}
} else{
for(; i< columns.length;i++){
rowObj.element(columns[i].getField(), objs[i]);
}
}
if(idColumnName != null && !idColumnName.isEmpty()){
rowObj.element(idColumnName, objs[objs.length -1]);
}
rowArray.add(rowObj);
}
}
table.element("rows", rowArray);
return table.toString();
}
public static String toJsonTableWithColor(JsonColumn[] columns, List<Object[]> rows, Long total, String idColumnName,boolean needCheckbox,String colorColumnName){
JSONObject table = new JSONObject();
table.element("total", total);
table.element("columns", columns);
JSONArray rowArray = new JSONArray();
if(rows != null && rows.size() > 0){
for(Object[] objs: rows)
{
JSONObject rowObj = new JSONObject();
int i=0;
if (needCheckbox) {
i = 1;
for (; i < columns.length ; i++) {
rowObj.element(columns[i].getField(), objs[i - 1]);
}
} else{
for(; i< columns.length;i++){
rowObj.element(columns[i].getField(), objs[i]);
}
}
if(idColumnName != null && !idColumnName.isEmpty()){
if(colorColumnName != null){
rowObj.element(idColumnName, objs[objs.length -2]);
rowObj.element(colorColumnName, objs[objs.length -1]);
}
else{
rowObj.element(idColumnName, objs[objs.length -1]);
}
}
rowArray.add(rowObj);
}
}
table.element("rows", rowArray);
return table.toString();
}
public static String toJsonTable(JsonColumn[] columns, List<Object[]> rows, Long total, String idColumnName){
return toJsonTable(columns, rows, total, idColumnName, true);
}
public static List<JsonTreeItem> makeTree(List<JsonTreeItem> items)
{
Map<Long, List<JsonTreeItem>> parentMap = new HashMap<Long, List<JsonTreeItem>>();
List<JsonTreeItem> rootItems = null;
if(items != null && items.size() >0){
for(JsonTreeItem item : items){
if(parentMap.containsKey(item.getParentId())){
parentMap.get(item.getParentId()).add(item);
}
else{
List<JsonTreeItem> children = new ArrayList<JsonTreeItem>();
children.add(item);
parentMap.put(item.getParentId(), children);
}
}
rootItems = parentMap.get(0L);
if(rootItems != null && rootItems.size() > 0){
for(JsonTreeItem rootItem : rootItems){
setChildrenItem(rootItem, parentMap);
}
}
}
changeParentCheckStatus(rootItems);
return rootItems;
}
public static void changeParentCheckStatus(List<JsonTreeItem> items){
for(JsonTreeItem item : items){
if(item.getChildren().size() > 0)
{
item.setChecked(false);
changeParentCheckStatus(item.getChildren());
}
}
}
//递归set children
public static void setChildrenItem(JsonTreeItem parentItem, Map<Long, List<JsonTreeItem>> itemMap){
List<JsonTreeItem> children = null;
if(itemMap.containsKey(parentItem.getId())){
children = itemMap.get(parentItem.getId());
for(JsonTreeItem item : children){
setChildrenItem(item, itemMap);
}
parentItem.setChildren(children);
}
}
public static String getListToJsonData(List<?> dataList) {
JSONArray jsonArray = null;
try{
jsonArray = JSONArray.fromObject(dataList);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return jsonArray.toString();
}
}
sturts 配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="getgps" namespace="" extends="default">
<!-- 网点地图获取经纬度 -->
<action name="queryMapAction" class="stationMapQueryBean" method="sationMapQuery">
</action>
<action name="initMapQueryAction" class="stationMapQueryBean" method="initMapQuery">
<param name="selcetedIdString">${selcetedIdString}</param>
<result >
/npmap/statiomMap.jsp
</result>
</action>
<action name="initAction" class="stationMapQueryBean" method="init">
<result >
/npmap/stationMapQueryList.jsp
</result>
</action>
</package>
</struts>
2)自己定义个结构类型,实现Result
<package name="kingee_ast_default" namespace="/mobile" extends="struts-default" >
<result-types>
<result-type name="json" class="JSONResult"/>
</result-types>
<action name="queryCtyTwn" class="mobileQueryCtyTwn" method="getCityTown">
<result type="json"></result>
</action>
</package>
/**
* zjpost
*/
package com.zjpost.npmis.struts2;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.Result;
/***
* @author <a href="dengdechuan@gmail.com">XXX</a>
* @version $Id: $
*/
public class MobileBaseResult implements Result {
@Override
public void execute(ActionInvocation arg0) throws Exception {
}
}
/**
* zjpost
*/
package com.zjpost.npmis.action.mobile;
import java.io.IOException;
import com.opensymphony.xwork2.ActionSupport;
import com.zjpost.npmis.service.mobile.IBusinesSiteServer;
import com.zjpost.rural.model.management.User;
import com.zjpost.rural.util.JsonUtil;
/***
* @author <a href="dengdechuan@gmail.com">XXX</a>
* @version $Id: $
*/
public class BusinesSiteAction extends ActionSupport{
private IBusinesSiteServer businesSiteServer;
// private User usr;
public String getCityTown(){
// businesSiteServer.queryCtiyOrTown(usr, null);
String temp = "{" +
" \"posts\" : [{ \"usr_id\": \"1000010012342\"}]} ";
try {
JsonUtil.sendJsonString(temp);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return SUCCESS;
}
public IBusinesSiteServer getBusinesSiteServer() {
return businesSiteServer;
}
public void setBusinesSiteServer(IBusinesSiteServer businesSiteServer) {
this.businesSiteServer = businesSiteServer;
}
}
分享到:
相关推荐
高级色系PPT11.pptx
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
【作品名称】:基于tensorflow的的cnn卷积神经网络的图像识别分类 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。
数据分析是指通过收集、清洗、处理和解释数据,以发现其中的模式、趋势和关联,从而提供决策支持或洞察见解的过程。它在各行各业中都扮演着至关重要的角色,从市场营销到科学研究,从金融领域到医疗保健,都有广泛的应用。
#pip install pandas -i https://mirrors.aliyun.com/pypi/simple #安装pandas处理数据模块 #pip install xlwt -i https://mirrors.aliyun.com/pypi/simple #安装excel模块 #pip install openpyxl #从微信导出对帐帐单 import pandas as pd #引入pandas,重命名为pd,Python3.9.10版本的Pandas无法兼容低版本的xls import numpy as np #导入均值模块 #从第17行读取csv格式的帐单 df = pd.read_csv('微信支付账单(20230101-20230401).csv',header=16) #分析数据 ...... #将分析数据另存为out.xlsx ..... #进行交易进间分析 ...... #统计交易对方 ...... #将结果保存到excel ..... writer.close()
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
作业.docx
DB23∕T 2540-2019 智慧城市建设项目可行性研究报告.pdf
附件是在CentOS系统上安装Docker 步骤,仅供交流学习使用,无任何商业目的! 在执行这些步骤之前,请确保你的CentOS系统已经更新到最新,并且你了解Docker容器技术的相关概念。如果你在安装过程中遇到任何问题,可以查看Docker的官方文档或搜索相关的错误信息。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
蜂群系统链性态网体系化作战矩阵.txt
【资源概览】 高分毕业设计 基于STM32单片机的智能鱼缸设计源代码+原理图+器件清单+实物焊接效果+项目资料齐全.zip高分毕业设计 基于STM32单片机的智能鱼缸设计源代码+原理图+器件清单+实物焊接效果+项目资料齐全.zip高分毕业设计 基于STM32单片机的智能鱼缸设计源代码+原理图+器件清单+实物焊接效果+项目资料齐全.zip 【资源说明】 高分项目源码:此资源是在校高分项目的完整源代码,经过导师的悉心指导与认可,答辩评审得分高达95分,项目的质量与深度有保障。 测试运行成功:所有的项目代码在上传前都经过了严格的测试,确保在功能上完全符合预期,您可以放心下载并使用。 适用人群广泛:该项目不仅适合计算机相关专业(如电子信息、物联网、通信工程、自动化等)的在校学生和老师,还可以作为毕业设计、课程设计、作业或项目初期立项的演示材料。对于希望进阶学习的小白来说,同样是一个极佳的学习资源。 代码灵活性高:如果您具备一定的编程基础,可以在此代码基础上进行个性化的修改,以实现更多功能。当然,直接用于毕业设计、课程设计或作业也是完全可行的。 欢迎下载,与我一起交流学习,共同进步!
Qt是一套跨平台的C++应用程序开发框架,被广泛应用于开发图形用户界面(GUI)程序、嵌入式系统、移动设备应用等领域。它提供了丰富的类库和工具,使得开发者可以快速构建功能强大、美观易用的应用程序。以下是一个涵盖Qt开发的教程和案例的综合描述。
【资源概览】 高分项目 基于STM32单片机的电子血压计设计源代码+项目资料齐全+教程文档.zip高分项目 基于STM32单片机的电子血压计设计源代码+项目资料齐全+教程文档.zip高分项目 基于STM32单片机的电子血压计设计源代码+项目资料齐全+教程文档.zip 【资源说明】 高分项目源码:此资源是在校高分项目的完整源代码,经过导师的悉心指导与认可,答辩评审得分高达95分,项目的质量与深度有保障。 测试运行成功:所有的项目代码在上传前都经过了严格的测试,确保在功能上完全符合预期,您可以放心下载并使用。 适用人群广泛:该项目不仅适合计算机相关专业(如电子信息、物联网、通信工程、自动化等)的在校学生和老师,还可以作为毕业设计、课程设计、作业或项目初期立项的演示材料。对于希望进阶学习的小白来说,同样是一个极佳的学习资源。 代码灵活性高:如果您具备一定的编程基础,可以在此代码基础上进行个性化的修改,以实现更多功能。当然,直接用于毕业设计、课程设计或作业也是完全可行的。 欢迎下载,与我一起交流学习,共同进步!
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
基于深度神经网络的图像分类任务.zip
基于 Flask 发布的深度学习 web 服务.zip
【资源概览】 高分项目 基于STM32F030K6通过该单片机控制各个外设模块的电源控制源代码+项目资料齐全+教程文档.zip高分项目 基于STM32F030K6通过该单片机控制各个外设模块的电源控制源代码+项目资料齐全+教程文档.zip高分项目 基于STM32F030K6通过该单片机控制各个外设模块的电源控制源代码+项目资料齐全+教程文档.zip 【资源说明】 高分项目源码:此资源是在校高分项目的完整源代码,经过导师的悉心指导与认可,答辩评审得分高达95分,项目的质量与深度有保障。 测试运行成功:所有的项目代码在上传前都经过了严格的测试,确保在功能上完全符合预期,您可以放心下载并使用。 适用人群广泛:该项目不仅适合计算机相关专业(如电子信息、物联网、通信工程、自动化等)的在校学生和老师,还可以作为毕业设计、课程设计、作业或项目初期立项的演示材料。对于希望进阶学习的小白来说,同样是一个极佳的学习资源。 代码灵活性高:如果您具备一定的编程基础,可以在此代码基础上进行个性化的修改,以实现更多功能。当然,直接用于毕业设计、课程设计或作业也是完全可行的。 欢迎下载,与我一起交流学习,共同进步!
【资源概览】 高分项目 基于STM32F103单片机的节能型自适应风扇项目源代码+项目资料齐全+教程文档.zip高分项目 基于STM32F103单片机的节能型自适应风扇项目源代码+项目资料齐全+教程文档.zip高分项目 基于STM32F103单片机的节能型自适应风扇项目源代码+项目资料齐全+教程文档.zip 【资源说明】 高分项目源码:此资源是在校高分项目的完整源代码,经过导师的悉心指导与认可,答辩评审得分高达95分,项目的质量与深度有保障。 测试运行成功:所有的项目代码在上传前都经过了严格的测试,确保在功能上完全符合预期,您可以放心下载并使用。 适用人群广泛:该项目不仅适合计算机相关专业(如电子信息、物联网、通信工程、自动化等)的在校学生和老师,还可以作为毕业设计、课程设计、作业或项目初期立项的演示材料。对于希望进阶学习的小白来说,同样是一个极佳的学习资源。 代码灵活性高:如果您具备一定的编程基础,可以在此代码基础上进行个性化的修改,以实现更多功能。当然,直接用于毕业设计、课程设计或作业也是完全可行的。 欢迎下载,与我一起交流学习,共同进步!
本文对养老保险管理系统管理系统的设计与实现分成六个章节来说明。 第1章:研究养老保险管理系统管理系统的背景,以及开发养老保险管理系统管理系统的意义。 第2章:对开发养老保险管理系统管理系统的环境还有技术进行说明。 第3章:分析养老保险管理系统管理系统的可行性,性能,流程以及功能。 第4章:设计养老保险管理系统管理系统的功能结构,设计数据库E-R图以及对数据表的存储结构进行设计。 第5章:实现养老保险管理系统管理系统的功能并进行功能界面展示。 第6章:对系统测试进行阐述,以及对本系统部分功能进行检测。 本课题研发的养老保险管理系统管理系统,就是提供养老保险管理系统信息处理的解决方案,它可以短时间处理完信息,并且这些信息都有专门的存储设备,而且数据的备份和迁移都可以设定为无人值守,从人力角度和信息处理角度以及信息安全角度,养老保险管理系统管理系统是完胜传统纸质操作的。 感兴趣查看目录大纲,下载学习!