前言

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



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

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

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



响应数据是结果页面

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

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

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

响应数据是json格式的数据

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

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


代码演示样例
//.jsp代码:发出请求
<s:form action="taskInfoAction!save.action" id="myform" method="post"
cssClass='subForm'>
<s:hidden name='taskinfo.taskid' />
<div id="bodycontent">
<p align="left">
   
<font class="title_little">任务情况表</font>                                                                                
                                                   
         
</p>
<table width="1000" height="" border="1">
<tr>
<td class="clum_title" width="125">
项目编号:
</td>
<td width="125">
<s:hidden name="taskinfo.projectid" id="projectid"></s:hidden>
<s:textfield name="taskinfo.projectcode" maxlength="32" id="projectcode" cssStyle="width:123"/>
</td>
<td width="125">
项目简称:
</td>
<td width="125" colspan="3">
<s:textfield name="taskinfo.projectname" cssClass="required"
maxlength="64" id="projectname" cssStyle="width:325" onclick="selectProjectInfo()"/>
</td>
<!--
<td class="clum_title" width="125">
项目类型
</td>
<td width="125">
<s:select name="taskinfo.tasktype" headerKey="" id="projecttype"
cssClass="required" headerValue="--请选择--"
list="@com.telewave.projectmanagerweb.util.TwUtil@getDict('ProjectType')" onchange="showUnitModel(this)"/>
</td>
<td width="125">所属里程碑</td>
<td width="125" id="milestone_td"></td>
-->
</tr>
<tr>
<td class="clum_title">
工作计划
</td>
<td colspan="7">
<font class="introduction">(有计划必须填写)</font>
<s:hidden name="taskinfo.workplanid" id="workplanid" />
计划名称:
<s:textfield name="planname" cssClass="required"
maxlength="64" id="planname" cssStyle="width:160" /> 计划拟制人:
<s:textfield name="workplanname" cssClass=""
maxlength="64" id="workplanname" cssStyle="width:205" /> <input type="button" value="选择计划信息"
onclick="selectWorkPlanInfo('add')" style="width: 125" /> </td>
</tr>
<tr>
<td class="clum_title">
任务名称
</td>
<td colspan="2">
<s:textfield name="taskinfo.taskname" cssClass="required" cssStyle="width: 100%" maxlength="64" />
</td>
<td>
所属部门
</td>
<td colspan="2">
<s:select list="organs" name="taskinfo.departmentid" listKey="organcode" listValue="organname" headerKey="" headerValue="--请选择--" cssClass="required"/>
</td>
<td>
计划外任务单
</td>
<td>
<s:select list="#{'1':'是','0':'否'}" name="taskinfo.outofplan" headerValue="--请选择--" cssClass="required"/>
</td>
</tr>


//业务控制器类
// 保存或者改动领导批示信息
public void save() {
try {
/* 新增任务单基本信息 */
// 获取自己主动生成的id
String guidid = GuidManager.GetGuid();
taskinfo.setTaskid(guidid);
taskinfo.setLockstate("0");
taskinfo.setTaskcode(this.getTaskcode());// add by hql 20101108
// 新增一条任务单基本信息 if("1".equals(taskinfo.getOutofplan())){
Workplandetail workplandetail=new Workplandetail();
workplandetail.setWorkplandetailid(GuidManager.GetGuid());
workplandetail.setWorkplanid(taskinfo.getWorkplanid());
workplandetail.setPrincipal(taskinfo.getWorkplanname());
workplandetail.setWorkdescription(taskinfo.getTaskname());
workplandetail.setStartdate(taskinfo.getBegindated());
workplandetail.setEnddate(taskinfo.getEnddate());
workplandetail.setPrincipal(taskinfo.getAcceptperson());
workplandetail.setProjectid(taskinfo.getProjectid());
workplandetail.setProjectname(taskinfo.getProjectname());
workplandetail.setPlanresult(taskinfo.getOutputResult());
workplandetail.setWorkcontent(taskinfo.getWorkrequired());
workplandetail.setPlanworkload(taskinfo.getWorkload());
workplandetail.setTaskrelated("是");
plandetailService.save(workplandetail);
taskinfo.setWorkplanid(workplandetail.getWorkplandetailid());
}
taskinfoService.addTaskinfo(taskinfo);
/* 新增任务单方法 */ /* 假设页面中的变更信息不为空,则新增一条变更信息的记录
if (!StringUtils.isNull(changeinfo.getChangecontent())) {
// 设置变更信息的外键
changeinfo.setTaskid(guidid);
// 新增一条变更信息
changeinfoService.save(changeinfo);
} 新增变更信息方法 */ /* 假设页面中的绩效考核信息不为空,则新增一条绩效考核信息的记录 */
if (!isEmpty(evaluateinfo)) {
if (!StringUtils.isNull(evaluateinfo.getEvakuateremark()) || !StringUtils.isNull(evaluateinfo.getEvaluatetotalscore())
|| !StringUtils.isNull(evaluateinfo.getExecutionevaluatscore()) || !StringUtils.isNull(evaluateinfo.getQualityevaluatscore())
|| !StringUtils.isNull(evaluateinfo.getScheduleevaluatscore())) {
// 新增绩效考核信息
evaluateinfo.setTaskid(guidid);
evaluateinfoService.addTaskresultevaluationinfo(evaluateinfo);
}
}/* 新增绩效考核信息方法 */ // 新增工作产物信息
if (list!=null&&!list.isEmpty()) {
for (int i = 0; i < list.size(); i++) {
Taskworkproductinfo workproductentity = new Taskworkproductinfo();
workproductentity = list.get(i);
if (!isEmpty(workproductentity)) {
if (!isNullWorkProductEntity(workproductentity)) {
workproductentity.setTaskid(guidid);
String productid = GuidManager.GetGuid();
workproductentity.setId(productid);
workproductService.addTaskworkproductinfo(workproductentity);
} else {
if (!isEmpty(workproductentity.getId())) {
workproductService.deleteTaskworkproductinfo(workproductentity.getId());
}
}
}
}
}
super.printSuccssMsg("新增信息成功", guidid);
} catch (Exception e) {
super.printFaitureMsg("新增信息失败");
log.error(e.getMessage(), e);
}
}
//业务控制器类的父类
/**
* 响应数据-成功
* @param successMessage
* @param id
*/
protected void printSuccssMsg(String successMessage, String id) {
try {
if (isEmpty(id))
getResponse().getWriter().print(
"{success:true,tip:'成功提示',msg:'" + successMessage
+ "',Data:''}");
else
getResponse().getWriter().print(
"{success:true,id:'" + id + "',tip:'成功提示',msg:'"
+ successMessage + "',Data:''}");
} catch (Exception localException) {
}
}

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


代码演示样例
//.js代码:发出请求
// 遮罩层-注冊
function register1(){
// 提交表单
var form = document.getElementById("register");
var param = $("#register").serialize();
$.post(form.action,
param,
function(json){
if(json.success){
$.unblockUI(); // 退出遮罩层
window.location = "registerSuccess.jsp"; //发起一次新的请求
}else{
alert("注冊失败! ");
}
},
"json");
}

//配置文件
<struts>
<package name="loginPackage" extends="struts-default"
namespace="/login">
<action name="register" class="loginControllerBean" method="register"></action>
</package>
</struts>

//业务控制器类
public void register(){
//
loginBusiness.register(user); //
try {
response.getWriter().print("{\"success\":\"true\",\"data\":\"\"}");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

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. Windows系统盘瘦身指南

    [本文出自天外归云的博客园] Windows系统的C盘空间越来越小,按以下四步进行清理,还你6个G: 1.开启腾讯管家之类的软件进行第一轮垃圾清理: 2.删除以下文件夹,"C:\Progra ...

  2. Pandas Dataframe增、删、改、查、去重、抽样基本操作

    总括 pandas的索引函数主要有三种: loc 标签索引,行和列的名称 iloc 整型索引(绝对位置索引),绝对意义上的几行几列,起始索引为0 ix 是 iloc 和 loc的合体 at是loc的快 ...

  3. 4. EM算法-高斯混合模型GMM详细代码实现

    1. EM算法-数学基础 2. EM算法-原理详解 3. EM算法-高斯混合模型GMM 4. EM算法-高斯混合模型GMM详细代码实现 5. EM算法-高斯混合模型GMM+Lasso 1. 前言 EM ...

  4. iOS 检测网络状态 自动判断 认为提示网络改变

    检测网络状态 在网络应用中,需要对用户设备的网络状态进行实时监控,目的是让用户了解自己的网络状态,防止一些误会(比如怪应用无能)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验WIFI\3G ...

  5. [转]Oracle SQL函数pivot、unpivot转置函数实现行转列、列转行

    原文地址:http://blog.csdn.net/seandba/article/details/72730657 函数PIVOT.UNPIVOT转置函数实现行转列.列转行,效果如下图所示: 1.P ...

  6. python 普通方法,@classmethod,@staticmethod

    普通方法 实例化一个类,然后通过类的实例化去调用方法: class method1: def __init__(self): self.items = [1,2,3,] def getvalue(se ...

  7. Redis提供的持久化机制(二)

    1.前言 Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集 ...

  8. 【转】26张PPT让你告别拖延症

    不论你如何富有,你都赚不到更多的时间,你也回不到过去.没有那么多的假如,只有指针滴答的时光飞逝和你应该好好把握的现在. 可能的话,请仔细读读PPT原件而不要只是看翻译吧. 1.时间常有,时间优先. 2 ...

  9. 软件开发常用的linux命令心得

    软件开发过程中难免要经常对主机进行配置或者部署等操作,想到一些就写一些了,以后再更新 解压命令: a.如果是tar文件,则直接用 “tar zxvf 文件名”: b.如果是zip文件,用 “unzip ...

  10. hbase源码系列(四)数据模型-表定义和列族定义的具体含义

    hbase是一个KeyValue型的数据库,在<hbase实战>描述它的逻辑模型[行键,列族,列限定符,时间版本],物理模型是基于列族的.但实际情况是啥?还是上点代码吧. HTableDe ...