aJax提交——服务端不能用request存储数据,session存数据客户端可以接收到
aJax提交与普通提交是两种迥异的提交方式,这两种提交方式决定了客户端与服务端交互时存储、传输数据的方式也不同。
aJax提交,客户端的请求数据存储在data中,服务端用request.getParameter("xxx");接收;服务端调用PrintWriter的write或print方法写出数据至aJax请求的回调函数,回调函数有一个参数data接收服务端写出的数据。
而普通提交一般是将请求数据存储在表单中或在请求路径中,服务端用request.getParameter("xxx");接收;服务端用request、session、application的setAttribute方法存储数据,然后返回客户端,客户端调用request、session、application的getAttribute方法或用EL表达式接收服务端存储在request、session、application中的数据。
示例:
客户端:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
<script type="text/javascript" src="/demo/js/jquery-1.11.2.js"></script>
<script type="text/javascript">
function ajaxTest(){
$.ajax({
type: "POST",
url: "/mytest/test",
data: "name=John&location=Boston",
success: function(data){
alert( "Data Saved: " + data );//获取服务端写出的数据
}
});
} </script>
</head>
<body>
<a href="/mytest/test" >test</a>
reqArrt:<%=request.getAttribute("tttt")%> sessionAttr:<%=session.getAttribute("tttt")%>
EL:${tttt}
<br>
<input id="test" value="testname" > <input value="ajax" type="button" onclick="ajaxTest();">
</body>
</html>
服务端:注:采用springMVC
package com.shyy.web.controller.anntation; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map; /**
* Created by Administrator on 15-12-6.
* 测试:1.控制器的方法用request、map、model存储数据,客户端页面用EL/request.getAttribute("tttt")均可获取。
* 2.前台用ajax提交,控制器的方法用request、map、model存储数据,客户端页面用EL/request.getAttribute("tttt")均获取不到数据。
* 用session.getAttribute("tttt")可获取存储在session中的数据。
*/
@Controller
@RequestMapping("/mytest")
public class Test {
@RequestMapping("/test")
public void test(HttpServletRequest request,Map<String,Object> map,Model model,HttpServletResponse response) throws IOException {
// map.put("tttt",8888);//ajax提交--客户端页面不可接受到存储在map中的数据
// model.addAttribute("tttt",7777);//ajax提交--客户端页面不可接受到存储在model中的数据
// request.setAttribute("tttt",9999);//ajax提交--客户端页面不可接受到存储在request中的数据
// request.getSession().setAttribute("tttt",11111);//ajax提交--客户端页面可接受到存储在session中的数据 //获取ajax请求的数据
String name = request.getParameter("name");
String location = request.getParameter("location");
PrintWriter writer = response.getWriter();
writer.print(name+"; "+location); // return "demo/test";//非ajax提交返回客户端页面的方式--该方法的返回值要改成String
}
}
此外,如果客户端用aJax提交,并不能用${pageContext.request.contextPath}获取根路径,应该用js的方法(http://www.cnblogs.com/wql025/p/5022725.html)获取。
aJax提交——服务端不能用request存储数据,session存数据客户端可以接收到的更多相关文章
- Ajax轮询——“定时的通过Ajax查询服务端”
Ajax轮询——"定时的通过Ajax查询服务端". 概念: 轮询(polling):客户端按规定时间定时像服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接. 百闻 ...
- Ajax轮询——定时的通过Ajax查询服务端
概念:轮询(polling):客户端按规定时间定时向服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接. test.html //前端代码 <html> <h ...
- 使用ajax向服务端发送Form中的数据
前端代码: <form action="" id="myFormUpdate"> <p>宠物名称: <input type=&qu ...
- java服务端json结果集传值给前端的数据输出格式
在服务端输出json数据时按照一定的格式输出时间字段,fastjson支持两种方式:1.使用JSON.toJSONStringWithDateFormat方法2.JSON.toJSONString方法 ...
- aps.net 用ajax 读取服务端值
1.Default.aspx 页面内容 实例一: <%@ Page Language="C#" AutoEventWireup="true" Code ...
- Jquery Ajax向服务端传递数组参数值
在使用MVC时,向服务器端发送POST请求时有时需要传递数组作为参数值 下面使用例子说明,首先看一下Action [HttpPost] public ActionResult Test(List< ...
- ajax对服务端发送请求
//兼容处理获取ajax对象 var req = ''; if (window.XMLHttpRequest) req = new XMLHttpRequest(); else req = ...
- JSP通过AJAX获取服务端的时间,在页面上自动更新
1.在页面上引入js <head> <meta http-equiv="Content-Type" content="text/html; charse ...
- 使用jquery的$.ajax向服务端传递中文,避免乱码的解决办法!
在js里,对中文使用下面的方法 encodeURIComponent(var) 函数 就ok了!
随机推荐
- Servlet & JSP - HttpSession
关于 Session 的内容,参考 HTTP - Session 机制 创建和检索 HttpSession 通过 HttpServletRequest.getSession 方法可以获取 HttpSe ...
- Servlet & JSP - UrlRewriteFilter
重写 URL 的好处有很多: 静态化页面,有利于搜索引擎收录. 隐藏真实的 URL,提高安全性. 当网站的结构发生变化时,无需要求用户修改书签. UrlRewriteFilter 的简单应用 1. M ...
- 百练 2973 Skew数 解题报告
思路: 计算出每一个skew数的不同位数表示的权值,然后用该位与权值相乘.用int数组来装权值,用char数组来装skew数. 代码: #include<stdio.h> #include ...
- SQL Server的三种物理连接之Loop Join(一)
Sql Server有三种物理连接Loop Join,Merge Join,Hash Join, 当表之间连接的时候会选择其中之一,不同的连接产生的性能不同,理解这三种物理连接对性能调优有很大帮助. ...
- CentOS6.3系统安装SCP命令
原文:http://www.111cn.net/sys/CentOS/58387.htm CP使用SSH协议在Linux系统中进行文件传输,但我最小安装的CentOS 6.3没有该命令. 代码如下 ...
- linux中vsftpd登陆慢卡问题解决方法
1.修改服务器上的/etc/resolv.conf令其内容只有类似 nameserver 192.81.133.229 nameserver 114.114.114.114 出现问题的机器的resol ...
- Contest1065 - 第四届“图灵杯”NEUQ-ACM程序设计竞赛(个人赛)B一个简单的问题
题目描述 这是一个三层的字母塔. 如何输出一个任意层数的字母塔呢? 输入 一个数字n(1<=n<=26),表示字母塔的层数 注意 此题多组输入 输出 n层的字母塔 样例输入 3 4 样例 ...
- Hadoop fs命令详解
本文非原创,转载自http://www.superwu.cn/2013/07/31/312 另外参考:http://www.blogjava.net/changedi/archive/2013/08/ ...
- 【基于spark IM 的二次开发笔记】第一天 各种配置
[基于spark IM 的二次开发笔记]第一天 各种配置 http://juforg.iteye.com/blog/1870487 http://www.igniterealtime.org/down ...
- .net 页面跳转方式【转】
1 Response.Redirect这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳 转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录 ...