SSH框架下ajax调用action并生成JSON再传递到客户端【以get和post方式提交】

摘要:
date="+num,true);myAjaxObject.onreadystatechange=actionResponse;//看下面函数myAjaxObject.send();}//获取服务器响应/*responseText获得字符串形式的响应数据。还有其他属性,自行查找这里我只测试读取一个数据,多数据可以循环读取*/functionactionResponse(){if{if{varreturnJSONString=myAjaxObject.responseText;varreturnJSON=JSON.parse;varshowString="";/*for{showString=}*/showString=returnJSON[0];alert;}}}structs.xml代码:后台action代码:packageaction;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importjavax.servlet.http.HttpServletRequest;importorg.apache.struts2.ServletActionContext;importcom.opensymphony.xwork2.ActionSupport;importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;publicclasscollectionextendsActionSupport{publicStringcollect()throwsIOException{//发送数据ListlistString=newArrayList();listString.add;JSONArrayjson=JSONArray.fromObject;System.out.println;ServletActionContext.getResponse().setContentType;ServletActionContext.getResponse().setCharacterEncoding;ServletActionContext.getResponse().getWriter().printf;ServletActionContext.getResponse().getWriter().flush();ServletActionContext.getResponse().getWriter().close();//接收数据Stringnum=ServletActionContext.getRequest().getParameter;System.out.println;returnnull;}}以上代码实现了简单的数据接收发送。接下来我要去实现读取cookie数据,判断用户是否处于登录状态,希望对你有帮助,有错误或改进的地方欢迎指正。

需要完成的任务:

主要是把JSP页面上图片ID传给服务器端,服务器读取cookie看是否有username,如果有则根据ID读取MongoDB数据库,读出图片URL,再存放到mysql中的collection数据库中,实现了收藏功能。

第一步:就是使用ajax实现前后台的交互。

jsp页面代码:

<a id="1"class="bsc"onclick="collect(this.id)"></a>

js代码:

<script>
function
collect(id) { //var newwin=window.open() var str=document.getElementById(id).src; var arr=str.split("/"); //切片//alert(arr[5]); var re = /d+/g; //每次匹配至少一个数字 且全局匹配 如果不是全局匹配,当找到数字123,它就会停止了。就只会弹出123.加上全局匹配,就会从开始到结束一直去搜索符合规则的。如果没有加号,匹配的结果就是1,2,3,5,4,3,3,8,7,9并不是我们想要的,有了加号,每次匹配的数字就是至少一个了。 var num = arr[5].match(re); //取图片名称,再用正则表达式匹配数字 num = num[0]; alert(num);
//以上是实现获取图片ID的功能;
//判断浏览器
if(window.ActiveXObject){ myAjaxObject = new ActiveXObject("Microsoft XMLHTP"); }else{ myAjaxObject = newXMLHttpRequest(); }
/*
1.open() 方法的url参数是服务器上文件的地址:该文件可以是任何类型的文件,比如 .txt 和 .xml,或者服务器脚本文件,
比如 .asp 和 .php (在传回响应之前,能够在服务器上执行任务),这里我是请求的是action,并把你想传送的数据放在后面,具体见代码。

2. 与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。

然而,在以下情况中,请使用 POST 请求:

  • 无法使用缓存文件(更新服务器上的文件或数据库)
  • 向服务器发送大量数据(POST 没有数据量限制)
  • 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

3.true还是false,true是表示异步请求,异步请求就是,请求完服务器,可以不用只等待服务器响应,可以去执行其他操作,直到收到服务器响应。

4.send()将请求发送到服务器

*/
myAjaxObject.open("post","collect.action?date="+num,true);
myAjaxObject.onreadystatechange =actionResponse; //看下面函数
myAjaxObject.send();
} 
//获取服务器响应
/*
responseText 获得字符串形式的响应数据。
还有其他属性,自行查找
这里我只测试读取一个数据,多数据可以循环读取
*/
functionactionResponse(){ if(myAjaxObject.readyState==4){ if(myAjaxObject.status==200){ var returnJSONString =myAjaxObject.responseText; var returnJSON =JSON.parse(returnJSONString); var showString = ""; /*for(var i=0;i<returnJSON.length;i++){ showString = }*/showString = returnJSON[0]; alert(showString); } } }
</script>

structs.xml代码:

<action name="collect"class="action.collection"method="collect">

后台action代码:

packageaction;

importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;

importjavax.servlet.http.HttpServletRequest;

importorg.apache.struts2.ServletActionContext;

importcom.opensymphony.xwork2.ActionSupport;

importnet.sf.json.JSONArray;
importnet.sf.json.JSONObject;

public class collection extendsActionSupport{
    public String collect() throwsIOException{
//发送数据 List listString
= newArrayList(); listString.add("zx"); JSONArray json =JSONArray.fromObject(listString); System.out.println(json.toString()); ServletActionContext.getResponse().setContentType("text/html"); ServletActionContext.getResponse().setCharacterEncoding("utf-8"); ServletActionContext.getResponse().getWriter().printf(json.toString()); ServletActionContext.getResponse().getWriter().flush(); ServletActionContext.getResponse().getWriter().close();
//接收数据 String num
= ServletActionContext.getRequest().getParameter("date"); System.out.println(num); return null; } }

以上代码实现了简单的数据接收发送。以上的后台发送的数据类型是list中存放String,根据自己需要。可以list中存放Bean,Map中存放字符串或Bean发送。

同理,前台传送数据类型也可以根据需要改变类型

例如:

var info={

num:"data1",

num2:"data2",

}

完事了。接下来我要去实现读取cookie数据,判断用户是否处于登录状态,希望对你有帮助,有错误或改进的地方欢迎指正。

免责声明:文章转载自《SSH框架下ajax调用action并生成JSON再传递到客户端【以get和post方式提交】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【转】把VS的智能提示快捷键改成Eclipse的习惯03 flask数据库操作、flask-session、蓝图下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

apache

全局配置:生效于整个apache服务,带### Section 1:Global Environment,表示下面的部分都是全局配置 主服务配置:默认站点配置 3.虚拟主机配置 第一部分: ServerToken: OS 服务器返回的我们关于服务器的一些相关信息,ServerToken就是影响我们关于返回信息的详细程度。 Apache2.2.15...

搭建我的世界服务器(史上最详细) java环境配置 ,免费内网穿透,家庭用电脑也欧克

服务器部署 周末想要和好基友联机?你是萌新却想要当腐竹? 什么?!你还不会开服?这里有最简单的开服教程! Tip:本篇所有内容基于人数不多的原版生存服务器 服务器安装java环境 下载java选择你的系统版本(去系统属性里看) :https://www.oracle.com/java/technologies/javase-jdk16-downloads....

浅析AnyCast网络技术

什么是BGP AnyCast? BGP anycast就是利用一个(多个) as号码在不同的地区广播相同的一个ip段。利用bgp的寻路原则,短的as path 会选成最优路径(bgp寻路原则之n),从而优化了访问速度。 其实bgp anycast是不同服务器用了相同的ip地址。 阿里的DNS 就是使用了BGP AnyCast “其实bgp anycast是...

Tomcat学习总结(2)——Tomcat使用详解

一、Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件。 如果想修改Tomcat服务器的启动端口,则可以在server.xml配置文件中的Connector节点进行的端口修改 例如:将Tomcat服务器的启动端口由默认的8080改成8081端口 Tomcat服务器启动端口默认配置 1...

跨域的另一种解决方案——CORS(Cross-Origin Resource Sharing)跨域资源共享

  在我们日常的项目开发时使用AJAX,传统的Ajax请求只能获取在同一个域名下面的资源,但是HTML5打破了这个限制,允许Ajax发起跨域的请求。浏览器是可以发起跨域请求的,比如你可以外链一个外域的图片或者脚本。但是Javascript脚本是不能获取这些资源的内容的,它只能被浏览器执行或渲染。主要原因还是出于安全考虑,浏览器会限制脚本中发起的跨站请求。(...

嵌入式web服务

:boa、thttpd、mini_httpd、shttpd、lighttpd、goaheand、appweb和apache等。 Boa 1.介绍 Boa诞生于1991年,作者Paul Philips。是开源的,应用很广泛,特别适合于嵌入式设备,网上流行程度很广。它的官方网站说boa是最受人喜爱的嵌入式web服务器。功能较为强大,支持认证,cgi等。B...