文档章节

关于提交表单的提交及异步问题

帅的不像男的
 帅的不像男的
发布于 2016/03/28 11:50
字数 547
阅读 68
收藏 1
//输出json类型的字符流(自定义函数)
protected void writeAjaxResult(JSONObject jsonData, ServletResponse response) {
try {
 OutputStream os = response.getOutputStream();
 os.write(jsonData.toString().getBytes("UTF-8"));
 os.flush();
 os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//调用输出流 MessageCallBack自定义实体类(有) 
MessageCallBack callback = new MessageCallBack(Message,Status等属性);
        callback.setMessage("您提交的相关表单数据字符含有非法字符!");
        callback.setStatus("403");
            JSONObject json = JSONObject.fromObject(callback);
            this.writeAjaxResult(json, response);
//获取当前路径
String last_url = request.getHeader("Referer");

当不为ajax请求时可以用重定向或是转发:

request.转发

getRequestDispatcher是服务器内部跳转,转发,地址栏信息不变,只能跳转到web应用内的网页,以前的request中存放的变量不会失效,就像把两个页面拼到了一起。 

<jsp:forward page="d.jsp"/>

运 行程序,你会发现c页面中的内容没有显示出来,因为forward是自动执行的,地址栏中虽然是c.jsp但实际上,但浏览器中显示的已经是d.jsp的 内容了,而且看到了从b.jsp传过来的参数。

重定向

sendRedirect是页面重定向,地址栏信息改变,可以跳转到任意网页,以前的request中存放的变量全部失效,并进入一个新的request作用域。

<a href="c.jsp?age=23">
为ajax请求时:需异步跳转
protected void writeAjaxResult(JSONObject jsonData, HttpServletResponse response) {
try {
 OutputStream os = response.getOutputStream();
 os.write(jsonData.toString().getBytes("UTF-8"));
 os.flush();
 os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
messageCallBack.setStatus("200");
messageCallBack.setMessage("申请成功!");
messageCallBack.setUrl(GoodsConstant.getPendingAuditGoods);
JSONObject jsonData = JSONObject.fromObject(messageCallBack);
this.writeAjaxResult(jsonData, response);
return null;

重定向的速度比转发慢,因为浏览器还得发出一个新的请求。同时,由于重定向方式产生了一个新的请求,所以经过一次重 定向后,request内的对象将无法使用。

转发,就是延长了requestB-C的作用 域,<jsp:forwardpage="d.jsp"/>,这一句话实际上是把c.jsp和d.jsp粘到了一起,他们就像是在一个页面 中。 

如果你用过struts,那么你就知道为什么在Action中,最后一句几乎总是mapping.findForward("xxx");了。因为我们在这个Action中设置的请求作用域的变量都将会在下一个页面(也许是另一个Action)中用到,所以要用转发。

© 著作权归作者所有

共有 人打赏支持
帅的不像男的
粉丝 10
博文 88
码字总数 47054
作品 0
深圳
程序员
关于form表单的异步提交问题

关于form表单的异步提交问题 form表单中有 怎么提交??

chinadong
2012/08/30
2.4K
5
yii2 modal弹窗之ActiveForm ajax表单异步验证

作者:白狼 出处:http://www.manks.top/yii2modalactiveform_ajax.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责...

白狼栈
2016/06/19
121
0
JQuery中使用ajax提交表单遇到的问题

今天在做维护时,遇到一段JQuery旧代码,看得很纠结,大致结构如下: html代码 <form id="myForm" method="post" action="abc.action"> </form>javascript代码 $("#mySubmit").click(functio......

hy86
2013/05/14
0
0
爱上MVC3系列~当Ajax.Beform不能满足我们的要求时...

mvc架构中提供了Html.BeginForm与Ajax.BeginForm,主要实现同步提交表单与异步提交表单,对于同步提交与传统的方式没有区别,而异步表单MVC自己进行了封装(可以看我的文章了解两种方式的表单...

mcy247
2017/12/06
0
0
通过Ajax方式上传文件,使用FormData进行Ajax请求

通过传统的form表单提交的方式上传文件: Html代码 不过传统的form表单提交会导致页面刷新,但是在有些情况下,我们不希望页面被刷新,这种时候我们都是使用Ajax的方式进行请求的: Js代码 ...

文文1
2016/06/22
51
0

没有更多内容

加载失败,请刷新页面

加载更多

sqlserver 2008 r2 直接下载地址(百度云)

之前下载的sqlserver2008发现不能附加,就卸载了,重新找到了sqlserver2008R2的百度云资源 卸载sqlserver2008还是有点麻烦,不过就是需要删除注册表中的信息 自己来回卸载了3次终于重装sqlse...

dillonxiao
32分钟前
1
0
[Java]JVM调优总结 -Xms -Xmx -Xmn -Xss

JVM调优总结 -Xms -Xmx -Xmn -Xss 博客分类: Java General JVM应用服务器电信CMS算法 堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可...

morpheusWB
42分钟前
1
0
C++ std::function 和 std::bind

C++11提供了std::function和std::bind两个工具,用于引用可调用对象。这些可调用对象包括 普通函数,Lambda表达式,类的静态成员函数,非静态成员函数以及仿函数等。引用可调用对象,可以用于...

yepanl
今天
2
0
python:可迭代对象的索引

关于 python的range的用法: 注意是[ 开始,结束)的半开区间,不包括结束 http://www.runoob.com/python/python-func-range.html import collectionsfrom collections import Iterable字符串......

Oh_really
今天
3
0
docker-compose ,docker-stack

1.例子 version: "3"services: php: image: registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5 ports: - "38080:80" networks: - my_php_mysql volum......

chenbaojun
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部