急问:在一个带iframe的页面里,刷新主页面时,是否能做到不刷新iframe中的内容???

bisliu 2006-03-14 09:30:52
rt~~
请各位大虾多多指教!!多谢了!
...全文
554 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
bisliu 2006-03-15
  • 打赏
  • 举报
回复
不是我想要刷新整个页面,是如果客户按f5刷新整个页面。。。。
polarman 2006-03-15
  • 打赏
  • 举报
回复
最好不要刷新整个页面,可以用AJAX的方式,刷新部分页面
上面的解决方法,也只是读取别的网站的主页形成的客户端代码,并不能将主页上所图片等内容读出并保存,刷新后,还是要重新在入这些东西,而且还有过期的问题
bisliu 2006-03-15
  • 打赏
  • 举报
回复
不是iframe之间的传参数,各个iframe之间是没关系的
qingyuan18 2006-03-15
  • 打赏
  • 举报
回复
楼主你是指一个iFrame的jsp中算key然后传给另一个iFrame的jsp么?
bisliu 2006-03-14
  • 打赏
  • 举报
回复
好像有个问题啊,new File或者new FileReader的时候,用("http://www.www.ww.html");好像不行啊??
bisliu 2006-03-14
  • 打赏
  • 举报
回复
好,我试试先。。
victor26 2006-03-14
  • 打赏
  • 举报
回复
不复杂,直接用java的文件操作类就可以了,php和jsp只是语法不同而已,功能都是一样的。因为php是我手头现成的,所以举了这个例子,jsp的话,用文件操作类就可以。
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>文件</title>
</head>
<body>
<%
String path=request.getRealPath("");
//out.println(path);
File f=new File(path,"temp.html");

if(f.exists()){//检查temp.html是否存在
f.delete();//删除
}else{
f.createNewFile();//
}
//读出页面内容
FileReader fr = new FileReader("http://www.www.ww.html");
String args = fr.readAll();
//写入文件
FileWriter fw = new FileWriter(path+"temp.html");
fw.write(args);
fw.close();
%>

附:以上代码仅供参考,我很久没写这个了,可能有些类用得不对。大概就是这个意思,具体的你查查java的文件操作类好了。
bisliu 2006-03-14
  • 打赏
  • 举报
回复
然后写成你自己服务器目录的“path/temp.html”文件--------这一段没做过,是不是很复杂?而且我是用jsp写的,跟php的会不会很不同?请指教~~
victor26 2006-03-14
  • 打赏
  • 举报
回复
这样的话,这个办法是可以做到的,现在很多搜索引擎就是这么做的,读出google搜索的页面内容,然后用自己的页面显示。给你一段php的代码:
//第一次访问时从远程获得文件内容:
result=file(“http://www.google.com/search?q=abcd&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr=”);
然后写成你自己服务器目录的“path/temp.html”文件。
刷新后<iframe src="path/temp.html">,这样应该在一次会话期间便不需要再认证了。
bisliu 2006-03-14
  • 打赏
  • 举报
回复
我的iframe里面嵌的是其它站点的内容,就是不想重新去加载这些内容,因为需要重新认证,所以楼上的办法恐怕很难实现了,不过还是多谢了~~!
victor26 2006-03-14
  • 打赏
  • 举报
回复
这个好像比较困难,因为iframe的src属性是指定到别的页面的。不过或许可以有别的变通方法,比如说,在页面刷新前把iframe中子页面的文件内容读出,在你的服务器上新生成一个文件,将内容写入,刷新之后iframe连接到这个页面。当然,这个方法比较笨,不过不清楚你这么做的目的是什么,而我目前只能想到这个。
bisliu 2006-03-14
  • 打赏
  • 举报
回复
其实我的认证就是算出个类似key这样的东西,然后组成一个url,重定向到其它站点去,让那边根据这个key来认证。那每次刷新时都要重新算那个key,这样感觉负载太大,所以。。。
不过目前这样的做法可能是最简单最保险的了。
victor26 2006-03-14
  • 打赏
  • 举报
回复
赫赫,没错。所以能避免的话,最好不要使用iframe。用frame比较好一些,可是客户如果点了ie的刷新按钮,还是没有办法。
不过我不清楚你说的网站认证是什么意思,也许可以在避免认证这方面想想办法呢?只有祝你好运了……
bisliu 2006-03-14
  • 打赏
  • 举报
回复
首先得谢谢楼上了!
可是我试来试去,发现这样风险还是很大的,从网络读文件,而且要保证网页不过期
victor26 2006-03-14
  • 打赏
  • 举报
回复
不好意思,忘了去掉多余信息了。
把<%@include file="header.jsp"%>
和<%@include file="footer.jsp"%>
去掉,那是我本机调试用的……
victor26 2006-03-14
  • 打赏
  • 举报
回复
是的,读取网络文件有些不一样,我给你一个完整的代码吧,存成jsp就可以直接运行的。
<%@include file="header.jsp"%>
<%@ page import="java.io.*"%>
<%@ page import="java.net.*"%>
<%@ page import="java.util.Properties"%>
<%

//?程文件路径
String s1 = "http://www.google.co.jp";
//本地存放路径
String s2 = "C:\\test.html";

URL urlfile = null;
HttpURLConnection httpUrl = null;
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
File f = new File(s2);

//make proxy
String proxy = "192.168.224.12";
String port = "8080";
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost",proxy);
systemProperties.setProperty("http.proxyPort",port);

try{
//?接指定的网??源,?取网??入流
urlfile = new URL(s1);
httpUrl = (HttpURLConnection)urlfile.openConnection();
httpUrl.connect();
bis = new BufferedInputStream(httpUrl.getInputStream());
}catch(Exception e){
System.out.println(e.toString());
}

try{
bos = new BufferedOutputStream(new FileOutputStream(f));;
byte[] b = new byte[1024];
while(bis.read(b)!=-1) {
bos.write(b);
}
}catch(Exception e){
System.out.println(e.toString());
}finally{
try{
bos.flush();
bis.close();
httpUrl.disconnect();
}catch(Exception e){
System.out.println(e.toString());
}
}

%>
<center>
<form name="search" action="results.jsp" method="get">
<p>
<input name="query" size="44"/> Search Criteria
</p>
<p>
<input name="maxresults" size="4" value="100"/> Results Per Page 
<input type="submit" value="Search"/>
</p>
</form>
</center>
<%@include file="footer.jsp"%>
其中
//make proxy
String proxy = "192.168.224.12";//防火墙地址
String port = "8080"; //防火墙端口
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost",proxy);
systemProperties.setProperty("http.proxyPort",port);
这一段是如果你的机器设定了防火墙,需要加上,如果是直接连上网,就不用。
El_Nino 2006-03-14
  • 打赏
  • 举报
回复
关注中,帮忙顶顶

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧