- 浏览: 210036 次
- 性别:
- 来自: 哈尔滨
文章分类
- 全部博客 (267)
- java.lang (8)
- 问题汇总 (21)
- 异常记录 (20)
- 功能实现 (19)
- 面试总结 (25)
- 技巧总结 (8)
- 常用代码 (4)
- 编程习惯 (3)
- 编码规则 (3)
- java.util (10)
- java.io (1)
- JavaWeb (9)
- MySQL (16)
- SVN (3)
- MyBatis (11)
- Velocity (7)
- 其他知识 (10)
- 人生哲理 (1)
- 人生故事 (1)
- 自我感悟 (1)
- shiro (3)
- 基础知识 (0)
- 问题总结 (1)
- Spring 标签 (1)
- Spring (3)
- 点滴生活 (1)
- DOS (1)
- CAS (4)
- Linux (9)
- Storm (6)
- Shell (1)
- regex (1)
- Collection (4)
- poi (1)
- 经典语句 (1)
- NIO (5)
- concurrent (14)
- RPC (1)
- zookeeper (3)
- 待整理 (2)
- Hadoop (9)
- RabbitMq (2)
- flume (1)
- hive (7)
- hbase (4)
- kafka (1)
- scala (1)
- GC (0)
- java.util.concurrent.atomic (1)
- java.lang.ref (6)
- JVM (2)
- algorithm (1)
- conception (1)
- java key word (1)
- sun.misc (1)
最新评论
问题:JAVA与JS交互,将数据封装成JSON形式传递到页面中
一.JSON的概念
参考文献:http://www.w3school.com.cn/json/index.asp
总结:
JSON格式举例:
注意:
1.若web层中的方法使用数据流的方式传递JSON数据,
action中不使用return SUCCESS ;方式跳转页面,应该写成返回值为return null,
否则,报错unable to find resource "该action名称"
2.传递po(persistent object 持久类),字符串等
二、交互方法
1.数据流的方式
1.1.HttpServletResponse
设置key与value的形式,即JS需要通过key接收value
下面是具体实现方式:
说明:
(1)第4行,设置Response的编码方式为UTF-8
(2)第5、6行,no-cache 用于指示请示或响应消息不能缓存
(3)第7行,Expires实体报头域给出响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)的页面,使用Expires实体报头域指定页面过期时间。例:Expires:Thu,15 Sep 2006 16:23:12 GMT,HTTP1.1的客户端和缓存必须将其他非法的日期格式(包括0)看作已经过期。如:为了让浏览器不要缓存页面,也可以利用Expires实体报关域,设置为0
(4)第8行,功能:向前台页面显示一段信息,当在普通的url方式中,会生成一个新的页面来显示内容。当在ajax的方式中,会在alert中显示内容。
(5)第9行,容器的实现会认为你要输出的内容无法确定大小
参考文献:
(1)http://zhidao.baidu.com/link?url=snuVaBckoUyMxyu2v9QT3gJBBx3PLwPY0MiYTI3b2cNvDystM-0jaFL-2QkM1DYQ2t_3jaiJC0yZcozaS6B7Hq
(2)http://zhidao.baidu.com/link?url=-oCv-j5KoBvnd1-aRyn1S3QvUdKN_6m93cfu8YYJOMVjqXflKR5c1g_eRyCd3j9K1TGBn4oRGe5554-jT6SW7CzbwT6EZsh5tQJ2HDajeQu
应用举例:
说明:
(1)key是JS中接收数据的属性名名称
(2)value是JAVA要传到JS中的数据
1.2.PrintWriter
直接向JS传递JSON,JS需要通过key接收value
应用举例:
说明:通过response向页面中输出Json,即respose是将处理结果反馈给页面
2.类属性添加set get 方法,action 返回值为JSON
返回值类型为JSON,会将类中所有成员属性以JSON串的方式传到页面上
一.JSON的概念
参考文献:http://www.w3school.com.cn/json/index.asp
总结:
- JSON:JavaScript 对象表示法(JavaScript Object Notation)
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
JSON格式举例:
{ "employees": [ { "firstName":"John" , "lastName":"Doe" }, { "firstName":"Anna" , "lastName":"Smith" }, { "firstName":"Peter" , "lastName":"Jones" } ] }
注意:
1.若web层中的方法使用数据流的方式传递JSON数据,
action中不使用return SUCCESS ;方式跳转页面,应该写成返回值为return null,
否则,报错unable to find resource "该action名称"
2.传递po(persistent object 持久类),字符串等
二、交互方法
1.数据流的方式
1.1.HttpServletResponse
设置key与value的形式,即JS需要通过key接收value
下面是具体实现方式:
public void output(JSONObject json) { try { HttpServletResponse response = getResponse(); response.setContentType("text/json;charset=UTF-8"); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.getWriter().write(json.toString()); response.getWriter().flush(); } catch (IOException e) { e.printStackTrace(); } }
说明:
(1)第4行,设置Response的编码方式为UTF-8
(2)第5、6行,no-cache 用于指示请示或响应消息不能缓存
(3)第7行,Expires实体报头域给出响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)的页面,使用Expires实体报头域指定页面过期时间。例:Expires:Thu,15 Sep 2006 16:23:12 GMT,HTTP1.1的客户端和缓存必须将其他非法的日期格式(包括0)看作已经过期。如:为了让浏览器不要缓存页面,也可以利用Expires实体报关域,设置为0
(4)第8行,功能:向前台页面显示一段信息,当在普通的url方式中,会生成一个新的页面来显示内容。当在ajax的方式中,会在alert中显示内容。
(5)第9行,容器的实现会认为你要输出的内容无法确定大小
参考文献:
(1)http://zhidao.baidu.com/link?url=snuVaBckoUyMxyu2v9QT3gJBBx3PLwPY0MiYTI3b2cNvDystM-0jaFL-2QkM1DYQ2t_3jaiJC0yZcozaS6B7Hq
(2)http://zhidao.baidu.com/link?url=-oCv-j5KoBvnd1-aRyn1S3QvUdKN_6m93cfu8YYJOMVjqXflKR5c1g_eRyCd3j9K1TGBn4oRGe5554-jT6SW7CzbwT6EZsh5tQJ2HDajeQu
应用举例:
public void sendJsonMessage(String key ,String value){ JSONObject json = new JSONObject(); json.put(key, value); output(json); }
说明:
(1)key是JS中接收数据的属性名名称
(2)value是JAVA要传到JS中的数据
1.2.PrintWriter
直接向JS传递JSON,JS需要通过key接收value
public class PrintUtil { //向response中输出Json public static void printJson(HttpServletResponse response,String json){ if(json == null || "".equals(json)){ return; } PrintWriter writer = null; try { //向浏览器发送一个响应头,设置浏览器的解码方式为UTF-8 response.setContentType("application/json; charset=UTF-8"); writer = response.getWriter(); writer.print(json); } catch (Exception e) { e.printStackTrace(); } finally { if (writer != null) { writer.flush(); writer.close(); } } } }
应用举例:
PrintUtil.printJson(this.response, "0");
说明:通过response向页面中输出Json,即respose是将处理结果反馈给页面
@Action(value = "orderDeleteForever") public void orderDeleteForever() throws Exception{ String orderId = request.getParameter("orderId"); if(StringUtils.isBlank(orderId)){ return; } JSONObject jsonObject = new JSONObject(); try{ orderService.orderDeleteForever(Long.parseLong(orderId)); }catch(Exception e){ jsonObject.accumulate("msg", "err");//封装key与value } jsonObject.accumulate("msg", "ok"); PrintUtil.printJson(this.response,jsonObject.toString()); }
JSONArray jsonObjectFromMap = JSONArray.fromObject(permissions); PrintUtil.print(response ,jsonObjectFromMap.toString()); PrintUtil.print(response ,jsonObjectFromMap.toString()); JSONObject jsonObjectFromMap = JSONObject.fromObject(cartTotalByInventory); request.setAttribute("jsonMap", jsonObjectFromMap);
2.类属性添加set get 方法,action 返回值为JSON
private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } @Action(value = "delMerchantMessage", results = { @Result(name = SUCCESS, type = ResultTypeConstants.JSON) }) public String delMerchantMessage() { int result = ServiceUtil.businessInfoService.delBusinessInfoHistoryByMId(merchant.getId()); message = "删除成功!"; return SUCCESS; }
返回值类型为JSON,会将类中所有成员属性以JSON串的方式传到页面上
发表评论
-
JSON数据处理
2015-08-12 20:09 596问题:JSON数据处理 描述:接收JS传值:JSON串,先用 ... -
HttpServletRequest常用获取URL的方法
2015-07-16 10:28 1106概念: 1、request.getRequestURL() ... -
log4j.properties
2015-07-08 10:00 391代码: log4j.rootLogger=W ... -
java中classpath路径
2015-07-07 16:05 3228问题: 1.服务化程序启动程序,start.java,利用I ... -
表单重复提交问题
2015-07-04 10:13 686问题: 表单提交页面 ... -
HTTP常见响应状态码
2015-05-20 08:26 417问题:程序调试过程中 ... -
生成验证码
2015-05-14 09:02 339生成验证码 1.页面 <p class=" ... -
图片存储添加展示
2015-05-11 20:35 4411.数据表设计 picture字段使用varchar类型存放 ...
相关推荐
最近工作中为了赶进度,在项目中使用了WebView组件,用到了html与java的数据交互,也就是javascript与java的数据交互,本文即介绍了在应用中添加WebView,以及js如何与java进行数据的交互。
在Android开发中,JavaScript(JS)与Java的交互是一个常见的需求,特别是在构建混合式移动应用时。本主题将深入探讨如何实现Java与JS之间的通信,包括互相调用函数以及传递参数。以下是一份详细的指南: 1. **...
总结一下,Android中的WebView提供了Java与JavaScript交互的能力,主要通过以下步骤实现: 1. 初始化WebView,设置JavaScript支持。 2. 使用`addJavascriptInterface`暴露Java对象给JavaScript。 3. 在Java端监听...
这种技术的核心是实现客户端JavaScript与服务器端Java代码的交互,使得无需刷新整个页面就能更新部分网页内容,提高了用户体验。在本文中,我们将深入探讨AjaxRPC的工作原理、实现方式以及其在实际项目中的应用。 1...
总结,Android开发中的Java与JavaScript交互是通过WebView组件、JavaScriptInterface、loadUrl和evaluateJavascript等方法实现的。合理地运用这些技术,可以打造功能丰富的混合式应用程序,充分利用两种语言的优点。...
3. **JavaScript交互**: - 使用`document.applets[0]`获取页面中第一个Applet对象的引用。 - 调用`getIpAddress()`和`getHostName()`方法获取相应的信息,并通过`alert()`函数显示给用户。 #### 代码详解 #####...
Java和JavaScript交互是一种常见的技术实践,特别是在开发单页应用程序(SPA)或富互联网应用程序时。这两种语言虽然在用途上有所不同,但通过特定的技术手段可以实现跨域通信,从而协同工作。下面将详细介绍Java和...
Java可以通过`javax.script`包中的接口与JavaScript交互,允许在Java程序中执行JavaScript脚本或者调用JavaScript函数。 3. **Web Services和Ajax**:Java后端可以提供Web服务(如RESTful API),JavaScript通过...
在Android应用开发中,有时我们需要实现Java代码与...通过分析这个项目,你应该能更好地理解在Android中实现Java和JavaScript交互的具体步骤和注意事项。记住,安全性和性能优化始终是开发过程中不可忽视的重要方面。
【JavaApplet与JavaScript交互方法的探讨】 JavaApplet是一种早期的Web技术,它允许开发者在浏览器中嵌入可执行的Java代码,从而提供更丰富的交互性和动态功能。JavaApplet通常用于创建复杂的用户界面或者在Web页面...
在android的开发过程中,有很多时候需要用到本地java代码和javascript进行交互。android对交互进行了很好的封装,在开发中我们可以很简单的用java代码调用webview中的js,也可以用webview中的js来调用本地的java代码...
在Android开发中,JavaScript与Java交互是一个常见的需求,特别是在构建混合式移动应用时。这个"Android js与java交互改进最终版"项目旨在提供一个兼容性良好的解决方案,支持Android 4.2以下和4.2及以上版本。在这...
**WebView使用详解** ...理解并熟练运用WebView的使用及Java与JS的交互,将极大地提升应用的功能性和用户体验。在实际开发中,我们需要根据项目需求,合理配置WebView的设置,并注重安全问题,确保应用的稳定运行。
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,并实现Java与JavaScript之间的交互。这种交互能力使得我们可以利用Web技术来增强原生应用的功能,同时保持了良好的用户体验。...
`WebView`是Java与JavaScript交互的基础。 ### 2. JavaScriptInterface 要实现Java代码调用JavaScript,可以创建一个`@JavascriptInterface`注解标记的接口。这个接口的方法可以在JavaScript中被调用。例如: ```...
以下是四种主要的Java和JavaScript交互方式: 1. **Java有参数调用JavaScript**: 这种方式通常涉及到Android的WebView组件。通过`WebView`的`addJavascriptInterface()`方法,可以创建一个Java对象并暴露给...
这在构建动态网页时尤其重要,因为Java代码通常用于处理服务器端逻辑,而JavaScript则负责客户端交互。这篇博客将探讨如何在JSP中实现Java与JavaScript之间的值传递。 首先,让我们了解JSP的基本结构。JSP页面本质...
- **Flash External Interface (FEI)**:Flash Player允许ActionScript代码通过ExternalInterface API调用JavaScript函数,进而与网页中的Java代码进行交互。这种方式适用于浏览器环境,Java可以通过JavaScript操作...
本文将详细介绍如何实现Android与JavaScript之间的交互,包括Android调用JS的方法(有参和无参)以及JS调用Android的方法。 一、Android调用JS的方法 1. WebChromeClient与WebViewClient Android中的`WebView`...
总的来说,这个“webview与js交互demo”主要展示了如何在WebView中嵌入网页,并通过JavaScript调用Android的原生功能。通过这种方式,开发者可以构建更加丰富和动态的混合式应用程序,结合Web技术的灵活性和Android...