`
goto0917
  • 浏览: 47946 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论
  • take: 这是POI方式,不是JXLS方式. JXLS包路径都是net ...
    jxls

通过url发送的json内容,转换为新闻图片切换控件

 
阅读更多
最近需要做一个通过第三方系统url返回的json内容,展示位门户首页新闻图片轮播的控件,整理代码如下,备查


import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.JSONTokener;

//省略

 @ResponseBody
	@RequestMapping(params = "method=initpic")
	public String initpic(HttpServletRequest request, HttpServletResponse response) {
    	final String NULL_IMAGE_PATH = "http://www.baidu.com/img/bd_logo1.png";
    	String result="";
    	StringBuffer html = new StringBuffer();
    	BufferedReader reader = null;
		try{
			String orgurl = request.getParameter("url");
			URL connect = new URL(orgurl.toString());
			URLConnection connection = connect.openConnection();
			connection.connect();
			reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8"));
			String line;//循环读取
             while ((line = reader.readLine()) != null) {
                 result += line;
             }
        if(!result.equals("")){
        	JsonConfig jsonConfig = new JsonConfig();
			Map<String, Class> classMap = new HashMap<String, Class>();
			classMap.put("result", String.class);
			classMap.put("Page", Integer.class);
			classMap.put("Pages", Integer.class);
			classMap.put("Total", Integer.class);
			classMap.put("Pagesize", Integer.class);
			classMap.put("Items", HashMap.class);
			jsonConfig.setClassMap(classMap);
			jsonConfig.setRootClass(HashMap.class);
			JSONTokener jt = new JSONTokener(result);
			Object obj = jt.nextValue(jsonConfig);
			JSONObject ja = JSONObject.fromObject(obj);
			Map<String, List<Map>> map = (Map<String, List<Map>>) JSONObject.toBean(ja, jsonConfig);
			List itemlist = map.get("Items");
			html.append("<div style=\"width:500px;margin:0px auto;\">")
			.append("<div class=\"roll-news-keleyi-com\">").append("<div class=\"roll-news-image\">");
			for (int i = 0; i < itemlist.size(); i++) {
				Map<String,Object> imgmap = (Map<String, Object>) itemlist.get(i);
				html.append("<img src=\"");
				if(imgmap.get("thumb")!=null && !"".equals(imgmap.get("thumb").toString())){
					html.append(imgmap.get("thumb"));
				}else{
					html.append(NULL_IMAGE_PATH);
				}
				if(i!=0){
					html.append("\" style=\"display:none\" >");
				}else{
					html.append("\">");
				}
			}
			html.append("</div>");
			html.append("<div class=\"roll-news-index\">");
			html.append("<ul>");
			for (int i = 0; i < itemlist.size(); i++) {
				html.append("<li");
				if(i == 0){
					html.append(" class=\"roll-news-index-hover\"");
				}
				html.append(">").append(i+1).append("</li>");
			}
			html.append("</ul>");
			html.append("</div>");
			html.append("<div class=\"roll-news-title\">");
			for (int i = 0; i < itemlist.size(); i++) {
				Map<String,Object> imgmap = (Map<String, Object>) itemlist.get(i);
				html.append("<a href=\"").append(imgmap.get("thumb"));
				html.append("\" ");
				if(i!=0){
					html.append("style=\"display:none\"");
				}
				html.append(" >");
				html.append(imgmap.get("title"));
				html.append("</a>");
			}
			html.append("</div></div></div>");
			System.out.println(html.toString());
        }    
             
		}catch(Exception e){
			e.printStackTrace();
		}finally{
    	    if(reader!=null){//关闭流
       	     try {
       	      reader.close();
       	     } catch (IOException e) {
       	      e.printStackTrace();
       	     }
       	    }
       	   }
		 return html.toString();
}


页面
<%@page import="java.util.ListResourceBundle"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<HEAD>
<TITLE> </TITLE>
<META content="text/html; charset=utf-8" http-equiv=Content-Type>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="res/js/json2.js" type="text/javascript" charset="UTF-8"></script>
<script src="res/js/jquery-1.8.0.min.js" type="text/javascript" charset="UTF-8"></script>
<style type="text/css"> 
* { 
padding:0px; 
margin:0px; 
} 
.roll-news-keleyi-com { 
width:480px; 
height:300px; 
border:solid 1px #c1c1c1; 
} 
.roll-news-index-hover { 
background-color:white; 
} 
.roll-news-image img { 
width:480px; 
height:300px; 
} 
.roll-news-index { 
position:relative; 
top:-50px; 
margin-right:5px; 
float:right; 
} 
.roll-news-index { 
} 
.roll-news-index li { 
list-style:none; 
float:left; 
font-size:12px; 
font-weight:600; 
width:18px; 
height:16px; 
line-height:16px; 
cursor:pointer; 
margin:0 3px; 
background-image:url(opacity_50.png); 
text-align:center; 
} 
.roll-news-title { 
position:relative; 
top:-25px; 
padding-left:10px; 
height:22px; 
line-height:20px; 
background:url(opacity_50.png); 
} 
.roll-news-title a { 
font-size:12px; 
text-decoration:none; 
color:white;
background-color:gray 
} 
.roll-news-title a:hover { 
color:red; 
} 
</style> 
</HEAD>
<body>
<div id="imgdiv">
</div>
</body>


<script type="text/javascript">
$(document).ready(function () {
	$.ajax({
		type : "post",
		url : "login.go?method=initpic&url=http://www.xinhuamed.com.cn/getnews.aspx?action=list&page=1&pagesize=10",
		contentType : "application/text; charset=utf-8",
		success : function(data) {
			document.getElementById("imgdiv").innerHTML=data;
		},
		error : function(msg) {
			
		}
	}); 
	
	 setTimeout(function(){
		 var index = 0;
			var slideFlag = true;
			var length = $(".roll-news-image img").length;
			
			function showImg(i) {
			$(".roll-news-image img")
			.eq(i).stop(true, true).fadeIn(800)
			.siblings("img").hide();
			
			$(".roll-news-index li").removeClass("roll-news-index-hover");
			$(".roll-news-index li").eq(i).addClass("roll-news-index-hover");
			
			$(".roll-news-title a")
			.eq(i).stop(true, true).fadeIn(800)
			.siblings("a").hide();
			}
			showImg(index);
			
			$(".roll-news-index li").click(function () {
			index = $(".roll-news-index li").index(this);
			showImg(index);
			slideFlag = false;
			});
			
			function autoSlide() {
			setInterval(function () {
			if (slideFlag) {
			showImg((index + 1) % length);
			index = (index + 1) % length;
			}
			slideFlag = true;
			}, 3000);
			}
			
			autoSlide();                           
     },500);
}); 

</script> 

</html>


分享到:
评论

相关推荐

    iOS 仿网易新闻客户端

    在这个项目中,你需要替换原有的数据源URL,实现向新的API接口发送请求,获取新闻数据。 3. **解析类**:数据获取后,需要进行解析,转换为应用程序可理解的格式。JSON是常见的数据交换格式,可以使用系统的`...

    viewpager头部广告轮播

    解析JSON通常需要使用`org.json`库或Gson库,将接收到的字符串转换为Java对象,然后提取出图片链接。 对于网络请求和图片加载,这个项目可能使用了如`HttpURLConnection`、`OkHttp`或者`Volley`等网络库来获取图片...

    天气展示窗体

    - JSON解析:使用Json.NET库,可以方便地将JSON字符串转换为C#对象。解析后的数据可以直接绑定到窗体控件上。 - XML解析:如果返回的是XML,可以使用System.Xml命名空间的类,如XmlDocument或XDocument进行解析。 ...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -为容器控件(比如Panel,Region,Tab等)增加AJAX属性IFrameUrl(feedback:BluesT)。 -重新设计模拟树的下拉列表的实现,避免选中某项后的闪烁。 +2009-11-21 v2.1.5 +Tree优化。 -修正Expanded项和Checked...

    ExtAspNet_v2.3.2_dll

    -为容器控件(比如Panel,Region,Tab等)增加AJAX属性IFrameUrl(feedback:BluesT)。 -重新设计模拟树的下拉列表的实现,避免选中某项后的闪烁。 +2009-11-21 v2.1.5 +Tree优化。 -修正Expanded项和Checked...

    超实用的jQuery代码段

    超实用的jQuery代码段精选近350个jQuery代码段,涵盖页面开发中绝大多数要点、技巧与方法,堪称史上最实用的jQuery代码参考书,可以视为网页设计与网站建设人员的好帮手。《超实用的jQuery代码段》的代码跨平台、跨...

    Android 动漫阅读器源码.rar

    然后,通过JSON解析库如Gson或Jackson将数据转换为Java对象。展示时,源码会根据漫画的分页结构,调整图片大小以适应屏幕,并支持横竖屏切换。 四、手势操作与动画 为了让用户更好地交互,源码可能实现了手势识别...

    Qt加载百度离线地图

    然后,根据当前地图的缩放级别和瓦片坐标系统,转换这个像素坐标为经纬度坐标。这些坐标可以显示在Qt界面的其他控件中。 步骤8:优化性能 由于离线地图的数据量可能非常大,为了提高性能,可以采用缓存策略,将最近...

    IOS开发文档

    - **请求构建**: 使用`requestWithPath:parameters:`方法构建请求,之后将请求转换为JSON格式的Operation并加入队列执行,设置回调处理成功或失败的情况。 - **参数传递**: 参数通过字典形式传递,利用`...

    JAVA上百实例源码以及开源项目源代码

    设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...

    pdf预览上传放大缩小分页

    `package-lock.json`和`package.json`是npm管理依赖的文件,`.gitignore`定义了Git忽略的文件或目录,`babel.config.js`是Babel的配置文件,用于转换ES6+语法到浏览器可识别的版本,`README.md`则是项目说明文档。...

    卡管理器

    6. **JSON序列化与反序列化**:Swift的标准库提供了`JSONDecoder`和`JSONEncoder`,用于将JSON数据转换为Swift对象和反之。这对于从服务器获取和发送卡片数据非常有用。 7. **动画效果**:为了提升用户体验,卡管理...

    KODExplorer 芒果云-资源管理器

    - 文件编辑器,文件树目录 上下左右键盘切换 快捷键加入 - 树目录去掉库,改为个人目录等多处文案修改 - 默认打开用户目录 ####fix bug:(bug解决和程序优化) - 桌面任务栏点不中bug - 部分文案问题 - 众多...

    安卓面试题

    - **布局设计**:使用LinearLayout或ConstraintLayout等布局控件来划分聊天界面为左右两部分。 - **视图重用**:为了提高性能,可以使用ViewHolder模式来重用已加载的视图元素,避免频繁地创建和销毁视图。 - **错位...

Global site tag (gtag.js) - Google Analytics