public void renderJsonpObj(Object json){ String callbackFunctionName = request.getParameter("callback"); try { response.setContentType("text/html;charset=UTF-8"); response.getWriter().print(callbackFunctionName+"("+gson.toJson(json)+")"); response.getWriter().flush(); response.getWriter().close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String encodeGet(String str){ if(str!=null){ try { str = new String(str.getBytes("iso8859-1"),"utf-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return str; } public String getRequestEncode(String key){ String str = request.getParameter(key); return encodeGet(str); } public Object getByRequest(Object model){ //Object model = c.getInterfaces(); Class c = model.getClass(); Map<String,String> map = new HashMap(); Map<String,String[]> parammap = request.getParameterMap(); for(Map.Entry<String, String[]> entry:parammap.entrySet()){ String[] value = entry.getValue(); if(value.length==1){ map.put(entry.getKey(),value[0]); } } Field[] fields = c.getDeclaredFields(); try { for(int i=0;i<fields.length;i++){ Field field = fields[i]; field.setAccessible(true); String fname = field.getName(); String mvalue = map.get(fname); if(mvalue != null && !mvalue.equals("") && !mvalue.equals("null")){ String ftype = field.getType().getSimpleName(); if(ftype.equals("String")){ field.set(model, mvalue); }else if(ftype.equals("Integer") || ftype.equals("int")){ field.set(model, Integer.parseInt(mvalue)); }else if(ftype.equals("Double")){ field.set(model, Double.parseDouble(mvalue)); }else if(ftype.equals("Timestamp")){ Timestamp timestamp = Timestamp.valueOf(mvalue); field.set(model,timestamp); } } } }catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } return model; }

时间: 2024-01-05 21:04:45 浏览: 27
这是一段 Java 代码,主要实现了以下几个功能: 1. renderJsonpObj 函数,用于将一个对象以 JSONP 格式输出到响应中,其中 callback 参数指定了回调函数的名称。 2. encodeGet 函数,将 ISO8859-1 编码的字符串转换为 UTF-8 编码的字符串。 3. getRequestEncode 函数,获取请求中指定参数的值,并将其使用 encodeGet 函数进行解码后返回。 4. getByRequest 函数,将请求参数映射到指定的 Java 对象中,支持 String、Integer、Double、Timestamp 类型的参数。
相关问题

public void setServletResponse(HttpServletResponse response) { // TODO Auto-generated method stub this.response = response; } @Override public void setServletRequest(HttpServletRequest request) { // TODO Auto-generated method stub this.request = request; } @Override public void setSession(Map<String, Object> session) { this.session = (SessionMap<String, Object>) session; } public void render(String mesg){ try { response.setContentType("text/html;charset=UTF-8"); response.getWriter().print(mesg); response.getWriter().flush(); response.getWriter().close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void renderJsonpString(String mesg){ Map obj = new HashMap(); obj.put("info", mesg); String callbackFunctionName = request.getParameter("callback"); try { response.setContentType("text/html;charset=UTF-8"); response.getWriter().print(callbackFunctionName+"("+gson.toJson(obj)+")"); response.getWriter().flush(); response.getWriter().close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }

这是一个 Java 类中的一些方法和属性。它实现了三个接口:ServletResponseAware、ServletRequestAware和SessionAware,并且包含了两个自定义的方法:render和renderJsonpString。 在这个类中,setServletResponse、setServletRequest和setSession方法被重写,这些方法会在 Struts2 框架中调用,用于获取相应的 HTTP 请求和响应对象以及会话信息。 render方法将一个字符串作为参数,并将其写入响应对象中,这个方法可以用来向客户端返回 HTML 或文本数据。 renderJsonpString方法也是将一个字符串作为参数,但它首先将这个字符串放入一个 Map 对象中,并将这个 Map 对象转换成 JSON 格式的字符串。然后,它会从 HTTP 请求参数中获取一个名为 "callback" 的值,这个值代表了一个回调函数的名称。最后,它将 JSON 格式的字符串和回调函数的名称拼接起来,并将结果写入响应对象中,返回给客户端。这个方法通常用于实现跨域请求。

jsonp http头

JSONP(JSON with Padding)是一种跨域数据请求的技术。它通过动态创建script标签来请求数据,然后在响应中返回一个函数调用,该函数调用包含了请求数据作为参数。这样可以绕过同源策略限制,实现跨域数据请求。 在JSONP请求中,服务器需要在响应中返回一个类似于以下的代码: ```javascript callbackFunctionName({"key": "value"}); ``` 其中,callbackFunctionName是客户端预先定义好的回调函数名,服务器端需要将请求数据作为参数传递给该函数。客户端在接收到响应后,会自动执行该回调函数,从而获取到请求的数据。 需要注意的是,在使用JSONP时,服务器需要支持返回JSONP格式的数据,并且客户端需要定义好回调函数名。此外,JSONP请求可能存在一些安全风险,因为返回的数据可以直接执行在客户端。

相关推荐

最新推荐

recommend-type

node-v0.10.9-sunos-x86.tar.gz

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提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
recommend-type

ARL-master-wade.zip

ARL-master-wade.zip
recommend-type

paralleled FLUS_V2.4.zip

paralleled FLUS_V2.4.zip
recommend-type

2121212111111111111111111

212111111111111
recommend-type

wx077企业内部员工管理系统-thinkphp5+vue+uniapp-小程序.zip(可运行源码+sql文件+)

wx077企业内部员工管理系统-thinkphp5+vue+uniapp-小程序.zip 企业内部员工管理系统是一个很好的项目,结合了后端(thinkphp5)、前端(Vue.js)和 uniapp 技术,实现了前后端分离。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SPDK_NVMF_DISCOVERY_NQN是什么 有什么作用

SPDK_NVMF_DISCOVERY_NQN 是 SPDK (Storage Performance Development Kit) 中用于查询 NVMf (Non-Volatile Memory express over Fabrics) 存储设备名称的协议。NVMf 是一种基于网络的存储协议,可用于连接远程非易失性内存存储器。 SPDK_NVMF_DISCOVERY_NQN 的作用是让存储应用程序能够通过 SPDK 查询 NVMf 存储设备的名称,以便能够访问这些存储设备。通过查询 NVMf 存储设备名称,存储应用程序可以获取必要的信息,例如存储设备的IP地址、端口号、名称等,以便能
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。