需要完成的任务:

主要是把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 = new XMLHttpRequest();
}
/*
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 获得字符串形式的响应数据。
还有其他属性,自行查找
这里我只测试读取一个数据,多数据可以循环读取
*/
function actionResponse(){
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代码:

package action;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; public class collection extends ActionSupport{
public String collect() throws IOException{
     //发送数据
List listString = new ArrayList();
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方式提交】的更多相关文章

  1. SSH框架下单元测试的实现

    SSH框架下单元测试的实现 实现的功能 实现了部门的增删改查 对Action进行了单元测试 对Service 进行了单元测试,通过mock的方式实现. 实现的步骤 一.对Action层的单元测试实现 ...

  2. java自定义注解知识实例及SSH框架下,拦截器中无法获得java注解属性值的问题

    一.java自定义注解相关知识 注解这东西是java语言本身就带有的功能特点,于struts,hibernate,spring这三个框架无关.使用得当特别方便.基于注解的xml文件配置方式也受到人们的 ...

  3. SSH框架下的表单重复提交

    前几天做了一个功能,是在某个操作后,刷新父页面的,刷新时弹出了下面图的框: 网上查了之后发现这个框是表单重复提交时出现的.分析后发现,这个页面的上一个动作是form submit(在ssh框架下),这 ...

  4. MVC 下 ajax调用 日期差值计算

    背景: 服务项目已有服务期起止时间From-To 现在要根据用户输入的新的起始时间, 和该服务期的原有区间值, 计算出新的服务期截止时间 即 NewServiceToDateTime = NewSer ...

  5. java ssh 框架下 利用junit4 spring-test进行单元测试

    ssh框架下  由于bean实列 都交给spring 管理,要做单元测试就比较苦难,junit4 引入注解方便很多: 1. 加入依赖包 使用Spring的测试框架需要加入以下依赖包: JUnit 4 ...

  6. SSH框架下的多表增删改查

    下载地址:SSH框架下的多表增删改查 点击进入码云Git下载 点击进入CSDN下载 项目结构: 项目代码就不全部贴出来了,只贴下核心代码.需要项目的自己可以去下载. package com.atgui ...

  7. 初识TypeScript:查找指定路径下的文件按类型生成json

    如果开发过node.js的话应该对js(javascript)非常熟悉,TypeScript(以下简称ts)是js的超集. 下面是ts的官网: https://www.tslang.cn/ 1.环境配 ...

  8. Java之基于Eclipse搭建SSH框架(下)

    在上篇博客里,我简介了Tomcat滴配置与Struts2滴搭建,假设对这个还不会滴童鞋去看一下我滴上篇博客<Java之基于Eclipse搭建SSH框架(上)>.今天我们接着上篇博客滴内容. ...

  9. 详解SSH 框架中对象调用流程

    摘要:SSH=Struts+Spring+Hibernate SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用 ...

随机推荐

  1. 十一、ASP.NET Boilerplate

    一.ASP.NET Boilerplate 实体是 DDD(领域驱动设计)的核心概念之一.Eric Evans 是这样描述的“很多对象不是通过它们的属性定义的,而是通过一连串的连续性事件和标识定义的” ...

  2. captive portal

    刷好lineageos后默认浏览器无法上网,实际上并不是没有连上网,而是captive portal即网关设置错误,设置一下即可上网. adb shell "settings put glo ...

  3. B-树 B+树复习总结

    一.B-树的定义 一棵m阶的B-树或为空树,或为具有以下特性的m叉树 1.树中每个结点至多有m棵子树 (m-1个关键字) 2.根结点至少有两棵子树 (至少有一个关键字) 3.除根节点的分支结点至少有f ...

  4. 【C/C++】实现数据结构广义表

    1. 广义表的定义     每个元素可以为Atom,原子,也可以为线性表.      线性表的推广.线性表元素有唯一的前驱和后继,为线性表,而广义表是多层次的线性表      表头:第一个元素,可能是 ...

  5. Qt QLabel的使用

    QLabel类主要用来文本和图像的显示,没有提供用户交互功能.QLabel对象的视觉外观可以由用户自定义配置. 它还可以为另外一个可获得焦点的控件作为焦点助力器. QLabel可以显示下列的所有类型: ...

  6. Python测试Post请求

    原有: #coding:utf-8 import requests def request(title, content): datas = {"title":title,&quo ...

  7. BZOJ2428[HAOI2006]均分数据——模拟退火

    题目描述 已知N个正整数:A1.A2.…….An .今要将它们分成M组,使得各组数据的数值和最平均,即各组的均方差最小.均方差公式如下: ,其中σ为均方差,是各组数据和的平均值,xi为第i组数据的数值 ...

  8. BZOJ3224普通平衡树——旋转treap

    题目: 此为平衡树系列第一道:普通平衡树您需要写一种数据结构,来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数, ...

  9. ZOJ 1403 解密

    参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6412212.htmlSafecracker Time Limit: 2 Seconds       ...

  10. Modelsimse10.4如何编译altera库文件以支持IP仿真

    前言 se版本默认没有ip之类的库支持,如果你用到了pll之类的ip,仿真前就得把库编译好. 版本:Modelsim10.4se 流程 readme:实现有版本两个,任选.理论都是一样的,把v文件编译 ...