关于提交表单的提交及异步问题
关于提交表单的提交及异步问题
帅的不像男的 发表于2年前
关于提交表单的提交及异步问题
  • 发表于 2年前
  • 阅读 42
  • 收藏 1
  • 点赞 1
  • 评论 0

【腾讯云】如何购买服务器最划算?>>>   

//输出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)中用到,所以要用转发。

共有 人打赏支持
粉丝 9
博文 79
码字总数 45547
×
帅的不像男的
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: