前言

如果使用了MVC框架(比方,struts2)。



server的响应数据。分3种情况

1、响应数据是结果页面
2、响应数据是json格式的数据
3、响应数据是json格式的数据,然后再又一次发出一次请求

注:响应数据要么是结果页面,要么是json格式的数据,否则。结果页面会覆盖掉json格式的数据——从而导致jquery的post的回调函数没有运行,导致struts2没有跳转到结果页面。



响应数据是结果页面

1.响应数据是结果页面,表示跳转到结果页面。

2.业务的应用场景通常是,查(询)数据就是跳转到结果页面。

代码演示样例
  1. //业务控制器类
  2. //查看任务单反馈信息(注:通常是查数据的时候。就是跳转到结果页面)
  3. public String view() {
  4. try {
  5. feedbacklist = feedbackService
  6. .getTaskFeedbackInfoListByTaskId(taskinfo.getTaskid());
  7. } catch (Exception e) {
  8. e.printStackTrace();
  9. }
  10. return "view";
  11.  
  12. }

响应数据是json格式的数据

1.响应数据是json格式的数据的话,那么肯定不是依据struts2配置文件的结果页面进行跳转——实际上,这个时候也没有配置结果页面。否则会覆盖掉json格式的数据。

2.业务的应用场景是。
1)对数据库进行增、删、改的操作。
2)刷新当前页面的部分数据。


代码演示样例
  1. //.jsp代码:发出请求
  2. <s:form action="taskInfoAction!save.action" id="myform" method="post"
  3. cssClass='subForm'>
  4. <s:hidden name='taskinfo.taskid' />
  5. <div id="bodycontent">
  6. <p align="left">
  7.    
  8. <font class="title_little">任务情况表</font>                                                                                
  9.                                                    
  10.          
  11. </p>
  12. <table width="1000" height="" border="1">
  13. <tr>
  14. <td class="clum_title" width="125">
  15. 项目编号:
  16. </td>
  17. <td width="125">
  18. <s:hidden name="taskinfo.projectid" id="projectid"></s:hidden>
  19. <s:textfield name="taskinfo.projectcode" maxlength="32" id="projectcode" cssStyle="width:123"/>
  20. </td>
  21. <td width="125">
  22. 项目简称:
  23. </td>
  24. <td width="125" colspan="3">
  25. <s:textfield name="taskinfo.projectname" cssClass="required"
  26. maxlength="64" id="projectname" cssStyle="width:325" onclick="selectProjectInfo()"/>
  27. </td>
  28. <!--
  29. <td class="clum_title" width="125">
  30. 项目类型
  31. </td>
  32. <td width="125">
  33. <s:select name="taskinfo.tasktype" headerKey="" id="projecttype"
  34. cssClass="required" headerValue="--请选择--"
  35. list="@com.telewave.projectmanagerweb.util.TwUtil@getDict('ProjectType')" onchange="showUnitModel(this)"/>
  36. </td>
  37. <td width="125">所属里程碑</td>
  38. <td width="125" id="milestone_td"></td>
  39. -->
  40. </tr>
  41. <tr>
  42. <td class="clum_title">
  43. 工作计划
  44. </td>
  45. <td colspan="7">
  46. <font class="introduction">(有计划必须填写)</font>
  47. <s:hidden name="taskinfo.workplanid" id="workplanid" />
  48. 计划名称:
  49. <s:textfield name="planname" cssClass="required"
  50. maxlength="64" id="planname" cssStyle="width:160" />
  51.  
  52. 计划拟制人:
  53. <s:textfield name="workplanname" cssClass=""
  54. maxlength="64" id="workplanname" cssStyle="width:205" />
  55.  
  56. <input type="button" value="选择计划信息"
  57. onclick="selectWorkPlanInfo('add')" style="width: 125" />
  58.  
  59. </td>
  60. </tr>
  61. <tr>
  62. <td class="clum_title">
  63. 任务名称
  64. </td>
  65. <td colspan="2">
  66. <s:textfield name="taskinfo.taskname" cssClass="required" cssStyle="width: 100%" maxlength="64" />
  67. </td>
  68. <td>
  69. 所属部门
  70. </td>
  71. <td colspan="2">
  72. <s:select list="organs" name="taskinfo.departmentid" listKey="organcode" listValue="organname" headerKey="" headerValue="--请选择--" cssClass="required"/>
  73. </td>
  74. <td>
  75. 计划外任务单
  76. </td>
  77. <td>
  78. <s:select list="#{'1':'是','0':'否'}" name="taskinfo.outofplan" headerValue="--请选择--" cssClass="required"/>
  79. </td>
  80. </tr>


  1. //业务控制器类
  2. // 保存或者改动领导批示信息
  3. public void save() {
  4. try {
  5. /* 新增任务单基本信息 */
  6. // 获取自己主动生成的id
  7. String guidid = GuidManager.GetGuid();
  8. taskinfo.setTaskid(guidid);
  9. taskinfo.setLockstate("0");
  10. taskinfo.setTaskcode(this.getTaskcode());// add by hql 20101108
  11. // 新增一条任务单基本信息
  12.  
  13. if("1".equals(taskinfo.getOutofplan())){
  14. Workplandetail workplandetail=new Workplandetail();
  15. workplandetail.setWorkplandetailid(GuidManager.GetGuid());
  16. workplandetail.setWorkplanid(taskinfo.getWorkplanid());
  17. workplandetail.setPrincipal(taskinfo.getWorkplanname());
  18. workplandetail.setWorkdescription(taskinfo.getTaskname());
  19. workplandetail.setStartdate(taskinfo.getBegindated());
  20. workplandetail.setEnddate(taskinfo.getEnddate());
  21. workplandetail.setPrincipal(taskinfo.getAcceptperson());
  22. workplandetail.setProjectid(taskinfo.getProjectid());
  23. workplandetail.setProjectname(taskinfo.getProjectname());
  24. workplandetail.setPlanresult(taskinfo.getOutputResult());
  25. workplandetail.setWorkcontent(taskinfo.getWorkrequired());
  26. workplandetail.setPlanworkload(taskinfo.getWorkload());
  27. workplandetail.setTaskrelated("是");
  28. plandetailService.save(workplandetail);
  29. taskinfo.setWorkplanid(workplandetail.getWorkplandetailid());
  30. }
  31. taskinfoService.addTaskinfo(taskinfo);
  32. /* 新增任务单方法 */
  33.  
  34. /* 假设页面中的变更信息不为空,则新增一条变更信息的记录
  35. if (!StringUtils.isNull(changeinfo.getChangecontent())) {
  36. // 设置变更信息的外键
  37. changeinfo.setTaskid(guidid);
  38. // 新增一条变更信息
  39. changeinfoService.save(changeinfo);
  40. } 新增变更信息方法 */
  41.  
  42. /* 假设页面中的绩效考核信息不为空,则新增一条绩效考核信息的记录 */
  43. if (!isEmpty(evaluateinfo)) {
  44. if (!StringUtils.isNull(evaluateinfo.getEvakuateremark()) || !StringUtils.isNull(evaluateinfo.getEvaluatetotalscore())
  45. || !StringUtils.isNull(evaluateinfo.getExecutionevaluatscore()) || !StringUtils.isNull(evaluateinfo.getQualityevaluatscore())
  46. || !StringUtils.isNull(evaluateinfo.getScheduleevaluatscore())) {
  47. // 新增绩效考核信息
  48. evaluateinfo.setTaskid(guidid);
  49. evaluateinfoService.addTaskresultevaluationinfo(evaluateinfo);
  50. }
  51. }/* 新增绩效考核信息方法 */
  52.  
  53. // 新增工作产物信息
  54. if (list!=null&&!list.isEmpty()) {
  55. for (int i = 0; i < list.size(); i++) {
  56. Taskworkproductinfo workproductentity = new Taskworkproductinfo();
  57. workproductentity = list.get(i);
  58. if (!isEmpty(workproductentity)) {
  59. if (!isNullWorkProductEntity(workproductentity)) {
  60. workproductentity.setTaskid(guidid);
  61. String productid = GuidManager.GetGuid();
  62. workproductentity.setId(productid);
  63. workproductService.addTaskworkproductinfo(workproductentity);
  64. } else {
  65. if (!isEmpty(workproductentity.getId())) {
  66. workproductService.deleteTaskworkproductinfo(workproductentity.getId());
  67. }
  68. }
  69. }
  70. }
  71. }
  72. super.printSuccssMsg("新增信息成功", guidid);
  73. } catch (Exception e) {
  74. super.printFaitureMsg("新增信息失败");
  75. log.error(e.getMessage(), e);
  76. }
  77. }
  1. //业务控制器类的父类
  2. /**
  3. * 响应数据-成功
  4. * @param successMessage
  5. * @param id
  6. */
  7. protected void printSuccssMsg(String successMessage, String id) {
  8. try {
  9. if (isEmpty(id))
  10. getResponse().getWriter().print(
  11. "{success:true,tip:'成功提示',msg:'" + successMessage
  12. + "',Data:''}");
  13. else
  14. getResponse().getWriter().print(
  15. "{success:true,id:'" + id + "',tip:'成功提示',msg:'"
  16. + successMessage + "',Data:''}");
  17. } catch (Exception localException) {
  18. }
  19. }

响应数据是json格式的数据,然后在jquery post的回调函数里再又一次发出一次请求


代码演示样例
  1. //.js代码:发出请求
  2. // 遮罩层-注冊
  3. function register1(){
  4. // 提交表单
  5. var form = document.getElementById("register");
  6. var param = $("#register").serialize();
  7. $.post(form.action,
  8. param,
  9. function(json){
  10. if(json.success){
  11. $.unblockUI(); // 退出遮罩层
  12. window.location = "registerSuccess.jsp"; //发起一次新的请求
  13. }else{
  14. alert("注冊失败!
  15.  
  16. ");
  17. }
  18. },
  19. "json");
  20. }

  1. //配置文件
  2. <struts>
  3. <package name="loginPackage" extends="struts-default"
  4. namespace="/login">
  5. <action name="register" class="loginControllerBean" method="register"></action>
  6. </package>
  7. </struts>

  1. //业务控制器类
  2. public void register(){
  3. //
  4. loginBusiness.register(user);
  5.  
  6. //
  7. try {
  8. response.getWriter().print("{\"success\":\"true\",\"data\":\"\"}");
  9. } catch (IOException e) {
  10. // TODO Auto-generated catch block
  11. e.printStackTrace();
  12. }
  13. }

server的响应数据的更多相关文章

  1. Django 源码小剖: 响应数据 response 的返回

    响应数据的返回 在 WSGIHandler.__call__(self, environ, start_response) 方法调用了 WSGIHandler.get_response() 方法, 由 ...

  2. 对 响应数据写在config文件的再次优化

    之前写过 [基于moco的mock server 简单应用]这篇文章,然后自己这段时间也在做基金的接口测试,逛了一些论坛,然后对 响应数据写在config文件的再次优化,之前是把所有的响应数据都写到c ...

  3. Ocelot简易教程(六)之重写配置文件存储方式并优化响应数据

    本来这篇文章在昨天晚上就能发布的,悲剧的是写了两三千字的文章居然没保存,结果我懵逼了.今天重新来写这篇文章.今天我们就一起来探讨下如何重写Ocelot配置文件的存储方式以及获取方式. 作者:依乐祝 原 ...

  4. 使用Typescript重构axios(六)——实现基础功能:获取响应数据

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  5. 使用Typescript重构axios(十三)——让响应数据支持泛型

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  6. 使用Typescript重构axios(十六)——请求和响应数据配置化

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  7. Java框架之SpringMVC 03-RequestMapping-请求数据-响应数据

    SpringMVC SpringMVC是一种轻量级的.基于MVC的Web层应用框架. 通过一套 MVC 注解,让 POJO 成为处理请求的控制器,而无须实现任何接口. 采用了松散耦合可插拔组件结构,比 ...

  8. 用 jQuery.ajaxSetup 实现对请求和响应数据的过滤

    不知道同学们在做项目的过程中有没有相同的经历呢?在使用 ajax 的时候,需要对请求参数和响应数据进行过滤处理,比如你们觉得就让请求参数和响应信息就这么赤裸裸的在互联网里来回的穿梭,比如这样: 要知道 ...

  9. ASP.NET Core 中文文档 第四章 MVC(2.3)格式化响应数据

    原文:Formatting Response Data 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:许登洋(Seay) ASP.NET Core MVC 内建支持对相应数据( ...

随机推荐

  1. Android 编程下string-array 的使用

    在实际开发中,当数据为固定数据.数据量不是很大.希望很方便的获取到这些数据的时候,可以考虑使用这种低成本的方式来获取预装数据.将想要保存的数据存储到 values 文件夹下的 arrays.xml 文 ...

  2. JAVA实现MD5加密算法(使用MessageDigest)

    http://blog.csdn.net/ymc0329/article/details/6738711 *********************************************** ...

  3. RAID常见问题集锦+底部案例

    磁盘阵列(Redundant Arrays of Inexpensive Disks,RAID),有“价格便宜具有冗余能力的磁盘阵列”之意.原理是利用数组方式来作磁盘组,配合数据分散排列的设计,提升数 ...

  4. 在PL/SQL中调用存储过程--oracle

    在oracle10中写好了存储过程,代码如下: CREATE OR REPLACE Procedure Proc_Insert ( sName in varchar2, sAge in int, sE ...

  5. Lintcode: Sort Colors II 解题报告

    Sort Colors II 原题链接: http://lintcode.com/zh-cn/problem/sort-colors-ii/# Given an array of n objects ...

  6. Django-管理站点重写admin模板

    参考链接:https://blog.csdn.net/u013378306/article/details/79023242 使用Django的admin管理工具,可以快速的构建自己的管理平台,使用D ...

  7. linux磁盘 分区 物理卷 卷组 逻辑卷 文件系统加载点操作案例

    转自:truemylife.linux磁盘 分区 物理卷 卷组 逻辑卷 文件系统加载点操作案例 基本概念: 磁盘.分区.物理卷[物理部分] 卷组[中间部分] 逻辑卷.文件系统[虚拟化后可控制部分] 磁 ...

  8. ios 根据scrollview滑动的偏移计算滑动到第几页算法(不同需求不同计算)

    第一种: CGFloat pageWidth = self.scrollView.frame.size.width; int page = floor((self.scrollView.content ...

  9. redis AOF 和RDB

    AOF定义:以日志的形式记录每个操作,将Redis执行过的所有指令全部记录下来(读操作不记录),只许追加文件但不可以修改文件,Redis启动时会读取AOF配置文件重构数据 换句话说,就是Redis重启 ...

  10. linux 重定向 标准错误与标准输出到同一文件

    Linux Shell 环境中的输入输出重定向,用符号<和>来表示.0.1和2分别表示标准输入.标准输出和标准错误. 1.重定向标准输出到文件: cat foo > foo.txt ...