比如说获取的内容页面文件名:text.jsp
我想在get.jsp文件里获得text.jsp文件执行结果并赋值给string变量。谢谢
[b]问题补充:[/b]
ajax只是提交表单再返回,我是想在text.jsp页面代码直接获得jsp页面执行结果,然后对执行结果进行变量替换处理并生成页面,生成页面自己能做但怎么返回jsp代码执行后的结果
像php中可以用
ob_start();
include('text.php');
$string=ob_get_contents();
ob_end_clean();
这样$string就是text.php执行结果的内容
[b]问题补充:[/b]
回复:lovewhzlq
首页感谢你的解答,但用ajax返回的数据怎么赋值给java变量?并且做为生成页面不可能每条信息的页都ajax去提交表单并返回数据,速度效率上不可行,而且频繁ajax提交不一定每次都成功,也会出现问题
[b]问题补充:[/b]
多谢lovewhzlq,我目前采用的就是读取远程页面这个方法,但效率不太高,所以才到javaeye高手如云的论坛发问,看能不能在get.jsp代码中直接获取text.jsp执行结果,像include包含进来并赋值但不输出结果
那用java代码去得到jsp页面的返回结果
URL url = new URL("http://xxx/test.jsp");
InputStream is = url.openStream();//这里就得到jsp的响应流
页面通过ajax获得另一个页面,将其中的内容赋值给一个变量?
[code="java"]$.ajax({
type:'post',
url: url,
success:function(data,staus){
var b = $(data).text();
}
});[/code]
jquery实现
jsp页面的执行结果也就是生成的html页面嘛
你用ajax得到去请求这个jsp页面就能返回了,
谁说ajax只有提交表单,你理解是错的
<br> var req; //定义变量,用来创建xmlhttprequest对象<br> var str;//用于得到jsp返回的结果<br> function creatReq() // 创建xmlhttprequest,ajax开始<br> {<br> var url="ajaxServer.aspx"; //要请求的服务端地址<br> if(window.XMLHttpRequest) //非IE浏览器及IE7(7.0及以上版本),用xmlhttprequest对象创建<br> {<br> req=new XMLHttpRequest();<br> }<br> else if(window.ActiveXObject) //IE(6.0及以下版本)浏览器用activexobject对象创建,如果用户浏览器禁用了ActiveX,可能会失败.<br> {<br> req=new ActiveXObject("Microsoft.XMLHttp");<br> }</p> <pre><code> if(req) //成功创建xmlhttprequest { req.open("GET",url,true); //与服务端建立连接(请求方式post或get,地址,true表示异步) req.onreadystatechange = callback; //指定回调函数 req.send(null); //发送请求 } } function callback() //回调函数,对服务端的响应处理,监视response状态 { if(req.readystate==4) //请求状态为4表示成功 { if(req.status==200) //http状态200表示OK { [color=red]str = req.responseText;[/color] //所有状态成功,执行此函数,显示数据 } else //http返回状态失败 { alert("服务端返回状态" + req.statusText); } } } } </code></pre>
这个是使用HttpURLConnection拿到页面内容,然后就随你处理了
[code="java"]java.net.URL l_url = new java.net.URL(sURL);
java.net.HttpURLConnection l_connection = (java.net.HttpURLConnection) l_url.openConnection();
l_connection.connect();
l_urlStream = l_connection.getInputStream();
java.io.BufferedReader l_reader = new java.io.BufferedReader(new java.io.InputStreamReader(l_urlStream));
String sCurrentLine = "";
String sTotalString = "";
while ((sCurrentLine = l_reader.readLine()) != null)
{
sTotalString+=sCurrentLine;
}[/code]
没有直接可用的jsp标签啦,除非自己写一个jsp标签做这种事,
其实也算是个通用的功能,你可以考虑把这部分代码封装成一个jsp标签