为什么80%的码农都做不了架构师?>>>   

Struts2中在B/S传统应用中使用时需要配置struts.xml文件, 那么Struts2以传统形式 返回json
数据到客户端同样也需要配置 struts.xml文件,只是不同的是首先需要在配置文件中需要配置 如下 几项:1:extends,2:type,3contentType,先贴代码下面详细说说这几项的意思
<package name="json" namespace="/chat" extends="json-default"><action name="*" class="chatAction" method="{1}"><result name="success" type="json"><param name="root">dataMap</param><param name="contentType">text/html</param><!-- 指定是否序列化空的属性 <param name="excludeNullProperties">true</param> -->
<--这里指定将序列化dataMap中的那些属性 --><!-- <param name="includeProperties"> userList.* </param>  -->
<--这里指定将要从dataMap中排除那些属性,这些排除的属性将不被序列化,一般不与上边的参数配置同时出现 --><!-- <param name="excludeProperties"> SUCCESS </param> --></result></action></package><package name="shop" namespace="/plat" extends="json-default"><action name="*" class="platAction" method="{1}"><result name="success" type="json"><param name="root">dataMap</param><param name="contentType">text/html</param></result></action></package>
package中的extends属性在返回json数据时不再继承自struts-default ,而是继承json-default,同时
result里的type类型为json ,并且需要设置param的name属性contentType为text/html (此处 的设置为
了处理个别浏览器访问提示下载问题 ,网上大部分讲的是在Action中设置此项, 但是我只有 在这里设置有
效果不知原因。。。。), action的访问方式我选择的是动态路径即:设置name=“*” method=“{1}” (
该方式作用是指向chatAction中的所有方法), 至于namespce那处至少需要写上“/”,否则会访问失败,
当然这里也可以配置你要访问的路径,到时访问action的 时候只需要在action的name的名字前面+上namespace
的值, 本例中如下:chat/具体方法名即可,package的名字可以 随便写,只需保证不重复即可,不一定要是
具体类的的包路径 ,此举只是为了区分不同的类,至于param的name属性 root为dataMap,此处是依据在
Action中创建的map 等集合参数有关代码如下:
public Map<String, Object> getDataMap() {return dataMap;}public ShopAction() {// 初始化Map对象dataMap = new HashMap<String, Object>();}// 查询地图对应的详细信息public String getShopDetails() throws Exception {// chatAction.getCommonParameters();HttpServletResponse response = ServletActionContext.getResponse();HttpServletRequest request = ServletActionContext.getRequest();request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=utf-8");// String shop_id = URLDecoder.decode(request.getParameter("shop_id"),// "UTF-8");int shop_id = Integer.parseInt(request.getParameter("shop_id"));// 查询商铺的属性shopDetails = shopService.findByshop_id(shop_id);shop_DetailsJSON.setAddress(shopDetails.getAddress());shop_DetailsJSON.setPlace_introduce(shopDetails.getPlace_introduce());shop_DetailsJSON.setBusiness_time(shopDetails.getBusiness_time());shop_DetailsJSON.setPhone_number(shopDetails.getPhone_number());// 查询shop_tag属性JSONArray array = new JSONArray();shop_tag = shopService.findTagById(shopDetails.getId());shop_tagJSON.setTag_icon(shop_tag.getTag_icon());shop_tagJSON.setTag_name(shop_tag.getTag_name());shop_tagJSON.setTag_value(shop_tag.getTag_value());shop_DetailsJSON.getShop_tag().add(shop_tagJSON);// 查询评价属性evaluate = shopService.findEvaluateById(shopDetails.getId());evaluateJSON.setWord(evaluate.getWord());evaluateJSON.setTime(evaluate.getTime());evaluateJSON.setPerson(evaluate.getPerson());shop_DetailsJSON.getEvaluate().add(evaluateJSON);// 查询images的属性List<Images> imagesList = shopService.findImageById(shopDetails.getId());for (Images imageList : imagesList) {System.out.println(imageList.getImage_url());imagesJSON.setImage_url(imageList.getImage_url());array.add(imageList);}// shop_DetailsJSON.getImages().add(imagesJSON);dataMap.put("images", array);dataMap.put("data", shop_DetailsJSON);return SUCCESS;}
需要指出的是,此时的map集合必须有get方法,否则显示json数据为null ,如果想要返回的json数据为
数组类型,只需要用JSONArray等 API把对象或者集合扔进去再放进map即可。 如果想要不序列化
或者序列化某一属性,只需要在struts.xml文件中配置 ,  这两项即可。如不足,欢迎指教!<!-- 指定是否序列化空的属性 <param name="excludeNullProperties">true</param> --><--   这里指定将序列化dataMap中的那些属性 --><!-- <param name="includeProperties"> userList.* </param>  -->
<--这里指定将要从dataMap中排除那些属性,这些排除的属性将不被序列化,一般不与上边的参数配置同时出现 --><!-- <param name="excludeProperties"> SUCCESS </param> -->

转载于:https://my.oschina.net/dyl226/blog/534416

浅谈Struts2的命名空间及以传统形式返回json数据相关推荐

  1. 深入了解Struts2返回JSON数据的原理及具体应用范例

    来源:http://yshjava.iteye.com/blog/1333104 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具体应用了,但苦于一 ...

  2. 浅谈struts2之chain

    前一段时间,有关chain的机制着实困绕了许久.尽管网上有许多关于chain的解说,但要不是只谈大理论,不结合实例:要不就是只有示例,没有挖出示例背后的意义.    先解释下chain吧: Chain ...

  3. ChatGPT:你真的了解网络安全吗?浅谈攻击防御进行时之传统的网络安全

    ChatGPT:你真的了解网络安全吗?浅谈网络安全攻击防御进行时 传统的网络安全 总结 ChatGPT(全名:Chat Generative Pre-trained Transformer),美国Op ...

  4. Struts2返回JSON数据的具体应用范…

    Struts2返回JSON数据的具体应用范例 博客分类: Struts2 Struts2JSON  早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...

  5. Struts2里的Action返回Json数据

    hibernateTemplate和hibernateDaoSupport的注意问题! 正则表达式入门30分钟 Struts2里的Action返回Json数据 2010-08-03 22:46:46| ...

  6. 从源代码角度看Struts2返回JSON数据的原理

    2019独角兽企业重金招聘Python工程师标准>>> 前面一篇文章其实只是介绍了如何在Struts2中返回JSON数据到客户端的具体范例而无关其原理,内容与标题不符惹来标题党嫌疑确 ...

  7. Struts2返回Json数据(使用Struts2插件)

    这篇我将介绍如何使用Struts2的struts2-json-plugin.jar插件返回JSON数据. 一.其中主要步骤有: 1.将struts2-json-plugin.jar插件拷贝到项目的&q ...

  8. ajax请求Struts2返回JSON数据方法

    如果是作为客户端的HTTP+JSON接口工程,没有JSP等view视图的情况下,使用Jersery框架开发绝对是第一选择.而在基于Spring3 MVC的架构下,对HTTP+JSON的返回类型也有很好 ...

  9. 浅谈Python3函数命名空间与作用域

    日期:2020年1月23日 作者:Commas 注释:前一章节讲述了命名空间和作用域的知识,现在我们来谈一谈Python3函数的命名空间吧. 如果您想了解更多有关Python的知识,那么请点<我 ...

最新文章

  1. 【Python】Python简单入门
  2. 深入理解HTML表格
  3. python在线包安装mysql_python安装mysql的依赖包mysql-python操作
  4. [转载]Web 研发模式演变
  5. 【Python】Python库之图形用户界面
  6. 2016-2017-20155329 《Java程序设计》第7周学习总结
  7. 闲谈IPv6-尴尬的IPv4
  8. day19异常File类
  9. sts bug SpringJUnit4ClassRunner
  10. 如何制作动态桌面(视频版)
  11. Chrome 页面呈现原理与性能优化(内附分享 ppt)
  12. .net分流抢票助手
  13. index.php g wap,代码阅读--wap端入口文件index.php
  14. 使用OFBIZ的理由和不使用OFBIZ的理由
  15. Nim 游戏和 SG 函数
  16. SmartZoneOCR识别控件免费下载地址
  17. c语言万能搜索器,非索引搜索工具(CSearcher)
  18. MySQL事务原理总结
  19. 【域名】域名解析优先级以及其他玩法
  20. ajax远程调用,jquery中的ajax方法怎样通过JSONP进行远程调用

热门文章

  1. visual studio 怎么生成coredump文件_coredump详解
  2. python爬虫基本知识_爬虫 (十三) 学习 python 基础知识点的正确姿势 (六)
  3. 计算机三级网络操作题,计算机等级考试三级网络技术考试模拟试题
  4. 怎么配置iptv服务器信息,请配置iptv服务器信息
  5. python可以做哪些东西_自己总结的一些东西
  6. 前端javascripts基础知识点猴子吃桃
  7. 2.3 KNN-采用机器学习库来预测鸢尾花的分类
  8. 重磅:JDK11正式发布!史上最全所有特性完整解读!
  9. python的分支结构
  10. 系统架构设计师证书含金量_计算机专科生不能错过的两个证书,含金量比较高,出社会有益...