ajax的json传值方式在jsp页面中的应用

jsp页面:

复制代码 代码如下:

$(document).ready(function() {

setInterval(function myTimer()

{

//alert('a');

getViews();

},1000);

});

//播放

function getViews(){

$.ajax({

'url':"${pageContext.request.contextPath}/video/getVideos.action?r="+Math.random()+"&open=1",

'data': '',

'dataType': 'json',

'type': 'get',

'error': function(data){

alert("error");

return false;

},

'success': function(data) {

if(null != data && '' != data){

//alert(data.updateFlag);

if(data.updateFlag==0){//如果data.updateFlag=0 不刷新

//alert("data.updateFlag=0");

}

else{

if(data.videoIds != null && data.videoIds != ""){

var listIds=data.videoIds;

var i=0;

for(;i<listIds.length;++i){

//alert("show:"+i+"id=:"+listIds[i]);

showView(listIds[i],i);//播放

}

for(var j=listIds.length;j<9;++j){

//alert("Stop:"+j);

StopPlayVideo(j);

}

}

}

}

}

});

}

此处由于此代码实现的功能是通过ajax定时访问后台Hashtable,所以为了是系统区别url不同、ajax返回值不同,特意在url后加上r=+Math.random()

java后台处理方法:

复制代码 代码如下:

/**

* 双服务器九宫格显示

*

* @return

*/

@Action(value = "getVideos" ,results={

@Result(name = SUCCESS,location="videos2.jsp")

})

public String getVideos() {

if (open == 301) {

return SUCCESS;

} else {

try {

VideoHashTable videoHashTable = VideoHashTable.getInstance();

Hashtable<Long, Long> hashTable = videoHashTable.getRht();

Map map = new HashMap<String, List<Long>>();

if (videoHashTable.isUpdateFlag() == true) {

Enumeration en = hashTable.keys();

videoIds = new ArrayList<Long>();

while (en.hasMoreElements()) {

Long key = (Long) en.nextElement();

// vth.get(key);

videoIds.add(key);

}

map.put("videoIds", videoIds);

map.put("updateFlag", 1L);

videoHashTable.setUpdateFlag(false);

System.out.println("getVideos:" + videoIds);

SendMessage.sendObject(map);

} else {

map.put("updateFlag", 0L);

SendMessage.sendObject(map);

}

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}

关键要把传到jsp的页面存到map中,在通过json传值。

SendMessage.sendObject(map)方法所在类及方法:

复制代码 代码如下:

package com.supcon.honcomb.utils;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletResponse;

import org.apache.http.HttpResponse;

import org.apache.struts2.ServletActionContext;

public class SendMessage {

public static void sendMessage(String responseText){

try {

PrintWriter out = ServletActionContext.getResponse().getWriter();

out.print(responseText);

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

public static void sendObject(Object obj) throws Exception {

PrintWriter pw;

String rtn = "";

HttpServletResponse response = ServletActionContext.getResponse();

response.setContentType("text/html");

response.setCharacterEncoding("UTF-8");

rtn = JsonUtil.JsonFromObject(obj);

pw = response.getWriter();

pw.write(rtn);

pw.flush();

pw.close();

}

}

时间: 2024-10-26 21:33:39

ajax的json传值方式在jsp页面中的应用的相关文章

ajax的json传值方式在jsp页面中的应用_AJAX相关

jsp页面: 复制代码 代码如下: $(document).ready(function() { setInterval(function myTimer() { //alert('a'); getViews(); },1000); }); //播放 function getViews(){ $.ajax({ 'url':"${pageContext.request.contextPath}/video/getVideos.action?r="+Math.random()+"

请问如何操作可以使不同的action获取同一个jsp页面中的数据

问题描述 我用struts2开发并运用了它对Ajax技术的支持,在一个jsp页面中分成了四个div(<s:divtheme="ajax"href={%}updateFreq="1000">)分别为div1,div2,div3,div4.div1由action1处理,处理完成后返回jsp1页面显示在div1区域内.div2中应用了<s:tabbedPanel>标签,其中包含四个tab页,在这个标签下,每一个tab页就是一个单独的div.(可以写

jsp页面传值,第一个页面中的内容不固定,如何在第二个页面中显示

问题描述 jsp页面传值,第一个页面中的内容不固定,如何在第二个页面中显示 要写个jsp页面之间传值的功能.第二个页面展示第一个页面中某一个记录的详情,但是详情内容不固定,有的详情是一条记录,有的详情是多条记录,不知道该怎么在第二个jsp页面上显示出来. 具体的功能:第一个页面上显示公司类型和每个类型下公司的总数量,当双击公司类型的时候就会跳转到第二个页面,显示该类型下的所有公司,每个公司的详细信息都要列出来,每个公司后面都跟着一个修改按钮,每个公司的部分信息都可以被修改 第一个页面已经做出来了

JSP页面中的自定义标签

js|页面 JSP页面中的自定义标签 JSP页面中的自定义标签 Stephanie Bodoff 用于调用Javaean组件中的操作和执行请求分派的标准JSP标签简化了JSP页面的开发和维护.JSP技术还提供了在自定义标签中封装其他动态功能的机制,这种自定标签是JSP语言的扩展.自定义标签通常是以标签库的形式出现的,它定义了一组相关的自定义标签,并包含实现这些标签的对象. 可以由自定义标签执行的任务包括对隐式对象的操作.处理表单.访问数据库和其他企业级服务,如电子邮件和目录.以及执行流程控制.J

JSP页面中的自定义标签2

js|页面 JSP页面中的自定义标签2 带属性的标签 在标签handler中定义属性对于每一个标签属性,都必须在标签handler中定义一个属性以及符合JavaBean结构规范的get和set方法.例如,logic:present标签的标签handler <logic:present parameter="Clear"> 包含下列声明和方法: protected String parameter = null;public String getParameter() { r

如何在一个JSP页面中调用另一个JSP页面中的变量

在jsp学习中,经常需要在一个jsp页面中调用另一个jsp页面中的变量,下面就这几天的学习,总结一下. jsp页面之间的变量调用有多种方法: 1.通过jsp的内置对象-request对象获取参数: (1)通过超链接传参: 例:把a.jsp中i的值传到b.jsp中: 在a.jsp页面中的核心代码为: <a href="b.jsp?i=1">传参</a>     (说明:给i赋值时也可以用jsp表达式,例如i=<%变量名 %>) 在b.jsp页面中的核心

jsp页面中的代码执行加载顺序介绍

 本篇文章主要是对jsp页面中的代码执行加载顺序进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 1. java是在服务器端运行的代码,jsp在服务器的servlet里运行,而javascript和html都是在浏览器端运行的代码.所以加载执行顺序是是java>jsp>js.   2. js在jsp中的加载顺序   页面上的js代码时html代码的一部分,所以页面加载的时候是由上而下加载.所以js加载的顺序也就是页面中<script>标签出现的顺序.<scrip

jsp页面-如何获取TXT文档中指定的一行数据,并打印到JSP页面中呢?

问题描述 如何获取TXT文档中指定的一行数据,并打印到JSP页面中呢? 如何获取TXT文档中指定的一行数据,并打印到JSP页面中呢? 解决方案 try { String encoding="GBK"; File file=new File(filePath); if(file.isFile() && file.exists()){ //判断文件是否存在 InputStreamReader read = new InputStreamReader( new FileInp

在jsp页面中输入一个值,其他的值就出来了怎么做。

问题描述 在jsp页面中输入一个值,其他的值就出来了怎么做. 比如,在页面可以输入身份证号,姓名,住址,出生年月等.只要身份证号, 其他几项都有值,这个怎么实现的. 解决方案 用ajax做.当身份证输入框的焦点移动后执行,通过身份证查询其他信息返回给页面,然后$("name").text(值)添加. 解决方案二: 联动,,一般三级联动比较多,,再多了数据也处理 解决方案三: 在你输入的那个标签加个事件,然后通过js来操作这个标签对象的邻标签,对属性进行操作即可 解决方案四: ajax将