`

JAVA与JS交互

阅读更多
问题:JAVA与JS交互,将数据封装成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串的方式传到页面上
分享到:
评论

相关推荐

    Java与JS交互

    最近工作中为了赶进度,在项目中使用了WebView组件,用到了html与java的数据交互,也就是javascript与java的数据交互,本文即介绍了在应用中添加WebView,以及js如何与java进行数据的交互。

    JS与Java交互,Java与JS 交互(参数)

    在Android开发中,JavaScript(JS)与Java的交互是一个常见的需求,特别是在构建混合式移动应用时。本主题将深入探讨如何实现Java与JS之间的通信,包括互相调用函数以及传递参数。以下是一份详细的指南: 1. **...

    android中的webview --实现java与js交互

    总结一下,Android中的WebView提供了Java与JavaScript交互的能力,主要通过以下步骤实现: 1. 初始化WebView,设置JavaScript支持。 2. 使用`addJavascriptInterface`暴露Java对象给JavaScript。 3. 在Java端监听...

    ajaxRPC java与javaScript交互

    这种技术的核心是实现客户端JavaScript与服务器端Java代码的交互,使得无需刷新整个页面就能更新部分网页内容,提高了用户体验。在本文中,我们将深入探讨AjaxRPC的工作原理、实现方式以及其在实际项目中的应用。 1...

    Android开发java和js交互

    总结,Android开发中的Java与JavaScript交互是通过WebView组件、JavaScriptInterface、loadUrl和evaluateJavascript等方法实现的。合理地运用这些技术,可以打造功能丰富的混合式应用程序,充分利用两种语言的优点。...

    java与html交互

    3. **JavaScript交互**: - 使用`document.applets[0]`获取页面中第一个Applet对象的引用。 - 调用`getIpAddress()`和`getHostName()`方法获取相应的信息,并通过`alert()`函数显示给用户。 #### 代码详解 #####...

    java+js交互Demo

    Java和JavaScript交互是一种常见的技术实践,特别是在开发单页应用程序(SPA)或富互联网应用程序时。这两种语言虽然在用途上有所不同,但通过特定的技术手段可以实现跨域通信,从而协同工作。下面将详细介绍Java和...

    Java和JavaScript库进行交互

    Java可以通过`javax.script`包中的接口与JavaScript交互,允许在Java程序中执行JavaScript脚本或者调用JavaScript函数。 3. **Web Services和Ajax**:Java后端可以提供Web服务(如RESTful API),JavaScript通过...

    Android中java和js交互

    在Android应用开发中,有时我们需要实现Java代码与...通过分析这个项目,你应该能更好地理解在Android中实现Java和JavaScript交互的具体步骤和注意事项。记住,安全性和性能优化始终是开发过程中不可忽视的重要方面。

    JavaApplet与JavaScript交互方法的探讨.pdf

    【JavaApplet与JavaScript交互方法的探讨】 JavaApplet是一种早期的Web技术,它允许开发者在浏览器中嵌入可执行的Java代码,从而提供更丰富的交互性和动态功能。JavaApplet通常用于创建复杂的用户界面或者在Web页面...

    android java和js交互

    在android的开发过程中,有很多时候需要用到本地java代码和javascript进行交互。android对交互进行了很好的封装,在开发中我们可以很简单的用java代码调用webview中的js,也可以用webview中的js来调用本地的java代码...

    Android js与java交互改进最终版

    在Android开发中,JavaScript与Java交互是一个常见的需求,特别是在构建混合式移动应用时。这个"Android js与java交互改进最终版"项目旨在提供一个兼容性良好的解决方案,支持Android 4.2以下和4.2及以上版本。在这...

    WebView使用及在WebView中Java和JS交互

    **WebView使用详解** ...理解并熟练运用WebView的使用及Java与JS的交互,将极大地提升应用的功能性和用户体验。在实际开发中,我们需要根据项目需求,合理配置WebView的设置,并注重安全问题,确保应用的稳定运行。

    webview中java与js安全交互

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页内容,并实现Java与JavaScript之间的交互。这种交互能力使得我们可以利用Web技术来增强原生应用的功能,同时保持了良好的用户体验。...

    android中java和js互调

    `WebView`是Java与JavaScript交互的基础。 ### 2. JavaScriptInterface 要实现Java代码调用JavaScript,可以创建一个`@JavascriptInterface`注解标记的接口。这个接口的方法可以在JavaScript中被调用。例如: ```...

    Android java 和javascript交互的四种方式

    以下是四种主要的Java和JavaScript交互方式: 1. **Java有参数调用JavaScript**: 这种方式通常涉及到Android的WebView组件。通过`WebView`的`addJavascriptInterface()`方法,可以创建一个Java对象并暴露给...

    ChromiumWebBrowser 与js 交互类

    wpf 加载ChromiumWebBrowser 浏览器 与js交互 发消息同信

    JSP中java代码与js之间的传值

    这在构建动态网页时尤其重要,因为Java代码通常用于处理服务器端逻辑,而JavaScript则负责客户端交互。这篇博客将探讨如何在JSP中实现Java与JavaScript之间的值传递。 首先,让我们了解JSP的基本结构。JSP页面本质...

    FLASH与JAVA的交互

    - **Flash External Interface (FEI)**:Flash Player允许ActionScript代码通过ExternalInterface API调用JavaScript函数,进而与网页中的Java代码进行交互。这种方式适用于浏览器环境,Java可以通过JavaScript操作...

    Android与JS交互例子

    本文将详细介绍如何实现Android与JavaScript之间的交互,包括Android调用JS的方法(有参和无参)以及JS调用Android的方法。 一、Android调用JS的方法 1. WebChromeClient与WebViewClient Android中的`WebView`...

Global site tag (gtag.js) - Google Analytics