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了!
随机推荐
- Linux 命令 - wget: 非交互式网络下载器
命令格式 wget [option]... [URL]... 命令参数 启动选项 -V, --version 打印版本信息 -h, --help 打印帮助信息 日志和输入文件选项 -o logfile ...
- HDOJ2001计算两点间的距离
计算两点间的距离 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- Editplus中使用正则表达式压缩代码
快捷键ctrl+H打开查找与替换窗口,勾上使用正则表达式选项,查找项输入\t|^( )+,替换范围选当前文档,选择全部替换按钮,然后查找项在输入\n,再选择全部替换按钮. 大功告成!
- Caching和Purgeable Memory (译)
Caching和Purgeable Memory对于开发者来说是一个至关重要的资源,尤其是当我们需要处理那些需要超大内存以及计算时间的对象或者是当计算机向磁盘写入数据时导致应用程序陷入停滞时特别有用处 ...
- 接口(interface)
接口(interface) 接口(interface)定义了一个可由类和结构实现的协定.接口可以包含方法.属性.事件和索引器.接口不提供它所定义的成员的实现-它仅指定实现该接口的类或结构必须提供的成员 ...
- java集合 collection-list-ArrayList 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。
import java.util.*; /* 将自定义对象作为元素存到ArrayList集合中,并去除重复元素. 比如:存人对象.同姓名同年龄,视为同一个人.为重复元素. 思路: 1,对人描述,将数据 ...
- bzoj1018:[SHOI2008]堵塞的交通traffic
思路:线段树好题,用线段树维护连通性. 区间[l,r]表示左端点为l,右端点为r,宽度为2的矩形,那么线段树区间维护的就是该区间内的四个角的连通情况,注意是该区间内的连通情况,也就是说只能通过该区间内 ...
- Shell 循环读取文件
使用Shell将Windows环境下的文件拷贝到Linux下面的用法. 在linux下,将dos文件格式转换成linux文件格式的用法,vi打开,然后转到命令格式,执行,然后保存,就可以转换成linu ...
- MFC中获取指针的方法
1.获取应用程序指针 CMyApp* pApp=(CMyApp*)AfxGetApp(); 2.获取主框架指针 CWinApp 中的公有成员变量 m_pMainWnd 就是主框架的指针 CMainFr ...
- 非常不错的KPTimePicker效果源码
非常不错的KPTimePicker效果源码,实现特殊设计的时间选择器.用户选择时间是通过滑动一个圆环,并且屏幕的颜色会随着时间点的推移变暗或者变亮,喜欢的朋友可以下载研究一下吧. 源码大家可以到源码天 ...