- 浏览: 198749 次
- 性别:
- 来自: 哈尔滨
文章分类
- 全部博客 (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 558问题:JSON数据处理 描述:接收JS传值:JSON串,先用 ... -
HttpServletRequest常用获取URL的方法
2015-07-16 10:28 1045概念: 1、request.getRequestURL() ... -
log4j.properties
2015-07-08 10:00 359代码: log4j.rootLogger=W ... -
java中classpath路径
2015-07-07 16:05 3172问题: 1.服务化程序启动程序,start.java,利用I ... -
表单重复提交问题
2015-07-04 10:13 646问题: 表单提交页面 ... -
HTTP常见响应状态码
2015-05-20 08:26 381问题:程序调试过程中 ... -
生成验证码
2015-05-14 09:02 306生成验证码 1.页面 <p class=" ... -
图片存储添加展示
2015-05-11 20:35 4051.数据表设计 picture字段使用varchar类型存放 ...
相关推荐
最近工作中为了赶进度,在项目中使用了WebView组件,用到了html与java的数据交互,也就是javascript与java的数据交互,本文即介绍了在应用中添加WebView,以及js如何与java进行数据的交互。
ajaxRPC java与javaScript交互
Android 客户端实现 Java与js 进行交互,互相调用传参等等!
java与js交互讲解
实现android中的webview,java与js的交互。代码条理清晰,注释详细,运行流畅。
本文通过一个小例子演示了如何通过js与JavaApplet的交互来获取IE端的IP地址,体现了交互和调用。
Android开发java和js交互,在java中调用js的代码,通过js函数为java变量赋值
webview中java与js安全交互 webview中java与js安全交互 webview中java与js安全交互 webview中java与js安全交互
在android的开发过程中,有很多时候需要用到本地java代码和javascript进行交互。android对交互进行了很好的封装,在开发中我们可以很简单的用java代码调用webview中的js,也可以用webview中的js来调用本地的java代码...
WebView使用及在WebView中Java和JS交互
最近项目开发,遇到了一个问题,就是要实现js和Android交互的问题,我以前以为这个事情实现不了,最后发现Android中已经有很好的封装了所以写了一个例子上传到这里和大家交流学习
Java 和 Javascript Bridge 封装。
Android js与java交互改进最终版,支持android4.2以下,和android4.2以上版本
wpf 加载ChromiumWebBrowser 浏览器 与js交互 发消息同信
JavaApplet与JavaScript交互方法的探讨
java 和 javascript的交互方式 1.java有参数调用 2.java无参数调用 3.javascript无参调用 4.javascript有参调用
DWR js框架 javascript框架 web与java交互 Direct Web Remoting Ajax开源框架 即有java源码又有dwr.jar包 有实现步骤及演示源码
JSP与JS交互问题 值传递
svg与javascript交互简单的文字路径特效