很惭愧,我不懂JSP。虚心向各位JSP版的XDJM们请教。我用ASP写了一个网页,返回结果只是字符串的“1”或者“0”,连HTML标签也没有。
如果用客户端的AJAX访问就简单了。可是我希望用JSP写的网页在它的服务器端能够使用XMLHttpRequest或其他方式访问我的ASP网页,将ASP返回的字符串(1或0)保存在JSP的Session里。要求:
1、最好写1个函数,名称是CheckAJAX,参数是访问的ASP的URL。函数内部用XMLHttpRequest或其他方式访问URL,返回ASP网页的结果,不使用异步访问。
如果用XMLHttpRequest,open方法的三个参数是"GET"、URL、false。2、这个JSP文件也需要代入两个参数:MyID和MyCode。这两个参数是提交到这个JSP文件的表单中文本框的名称。
用JSP实现类似下面代码的功能(我的是ASP代码):/****开始****//*表单中名称为MyCode的文本框中输入了文字,asp代码*/
<%
If Request.Form("MyCode") <>"" Then /*执行CheckAJAX函数,代入URL参数,将返回内容存入Session变量"Result"中。
/*需要加入时间戳,使不能使用缓存。ASP的Timer可以返回从半夜零点开始到现在的毫秒数
Session("Result") = CheckAJAX("http://www.AAAAA/Check.asp?TimeStamp=" & Timer & _
"&ID=" & Request.Form("MyID") & _
"&Code=" & Request.Form("MyCode"))
End If
%><p>这是HTML代码。URL返回结果是:<%=Session("Result")%></p>
/*ASP代码*/
<%
If Session("Result") = "1" Then
Response.Write("<p>是1</p>")
Else
Response.Write("<p>不是1</p>")
End If
%>/****结束****/3、请写出完整的包括HTML的代码。就是包括:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head><body>
</body>
</html>非常感激!
如果用客户端的AJAX访问就简单了。可是我希望用JSP写的网页在它的服务器端能够使用XMLHttpRequest或其他方式访问我的ASP网页,将ASP返回的字符串(1或0)保存在JSP的Session里。要求:
1、最好写1个函数,名称是CheckAJAX,参数是访问的ASP的URL。函数内部用XMLHttpRequest或其他方式访问URL,返回ASP网页的结果,不使用异步访问。
如果用XMLHttpRequest,open方法的三个参数是"GET"、URL、false。2、这个JSP文件也需要代入两个参数:MyID和MyCode。这两个参数是提交到这个JSP文件的表单中文本框的名称。
用JSP实现类似下面代码的功能(我的是ASP代码):/****开始****//*表单中名称为MyCode的文本框中输入了文字,asp代码*/
<%
If Request.Form("MyCode") <>"" Then /*执行CheckAJAX函数,代入URL参数,将返回内容存入Session变量"Result"中。
/*需要加入时间戳,使不能使用缓存。ASP的Timer可以返回从半夜零点开始到现在的毫秒数
Session("Result") = CheckAJAX("http://www.AAAAA/Check.asp?TimeStamp=" & Timer & _
"&ID=" & Request.Form("MyID") & _
"&Code=" & Request.Form("MyCode"))
End If
%><p>这是HTML代码。URL返回结果是:<%=Session("Result")%></p>
/*ASP代码*/
<%
If Session("Result") = "1" Then
Response.Write("<p>是1</p>")
Else
Response.Write("<p>不是1</p>")
End If
%>/****结束****/3、请写出完整的包括HTML的代码。就是包括:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head><body>
</body>
</html>非常感激!
解决方案 »
- 知道文件名字怎么获取它的绝对路径?
- JSF编程问题
- 关于rs.last()执行出错...大家帮忙解释下
- struts上传图片
- 我的毕业设计(在线考试系统)是用基于struts写的。在上传文件时,是用一个Bean,有个问题,bean里面可以建立文件,用request.getInputSt
- 请高手传授一下如何从零开始学习JAVA的方法…………
- 如果利用JSP获取用户当前使用的操作系统等。
- 请教写组件的问题:代码保护,参数提示
- JavaWebStudio问题
- 在textarea中,使用javascript限制字节数如何实现?
- 想请教一下j2ee项目的开发步骤是怎么样的?
- 各位专家帮帮忙!!在线等!!
楼上可能理解错了。ASP是我写的提供一种服务的网页。我希望其他语言的网页能够在它的服务器访问我的ASP,更新它的Session。就像AJAX一样,据我了解,只要在Javascript中使用AJAX,不管访问的URL是什么语言,都能得到结果。
我只是想把这个过程放在使用我的服务的其他语言的服务器中。
我记得以前配置公司产品的sso的时候,可以将第3方的系统如asp系统配置到统一账户管理系统过来,统一账户管理系统是java的,中间通过vc进行通信。配置都很复杂,更不用说实现了。
本人愚见
随手写个函数 楼主参考啦 public String CheckAJAX(String strUrl){
try{
URL url=new URL(strUrl);
HttpURLConnection con = (HttpURLConnection)url.openConnection();
DataInputStream in = new DataInputStream(new BufferedInputStream(con.getInputStream()));
InputStreamReader isr=new InputStreamReader(in);
BufferedReader bs=new BufferedReader(isr);
StringBuffer strBf=new StringBuffer();
while(bs.ready()){
strBf.append(bs.readLine());
}
return strBf.toString();
}catch(Exception e){
System.out.println("error:"+e);
return "";
}
}
真的很惭愧,50分是我有史以来给的最高分啦!
把这个函数的返回值存入session该怎么写?我不会JSP。
/***开始***/
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Check Validate Code By WFSVI service</title>
</head>
<body><%
Function CheckAJAX(praURL)
Dim myXMLHttpObj
Set myXMLHttpObj = Server.CreateObject("Msxml2.XMLHTTP.5.0")myXMLHttpObj.open "GET",praURL,false
myXMLHttpObj.sendCheckVCByAJAX = myXMLHttpObj.responseBodySet myXMLHttpObj = Nothing
End functionIf Request.Form("MyCode") <>"" Then
Session("Result") = CheckAJAX("http://www.AAAAA.com/Check.asp?TimeStamp=" & Timer & _
"&ID=" & Request.Form("myID") & _
"&Code=" & Request.Form("myCode"))
End If
%><p>这是HTML代码。URL返回结果是:<%=Session("Result")%></p><%
If Session("Result") = "1" Then
Response.Write("<p>是1</p>")
Else
Response.Write("<p>不是1</p>")
End If
%></body>
</html>
/***结束***/其中,假设www.AAAAA.com是我的网站,我用ASP写了一个网页 Check.asp,需要带入2个参数:ID和Code。这个网页提供了一个服务,咱们姑且不需要知道是什么服务,这样会使问题复杂化。只需要知道,通过带入的2个参数经过处理,最终Check.asp返回的结果只是字符串“1”或“0”。“1”代表成功。另外一个网站,假设是www.BBBBB.com,是别人的网站。这个网站可能是asp.net,也可能是PHP或JSP。
这个网站的访问者打开一个动态网页,输入表单中名称是MyID和MyCode的文本框,提交到他的服务器(也就是www.BBBBB.com。会有人问为什么吗?请再看看上两行字。)。提交到www.BBBBB.com服务器的动态网页在他自己的服务器端访问我的 www.AAAAA.com/Check.asp,带入三个参数:第一个是时间戳,单位是毫秒,保证每次访问都不重复,不使用缓存。第二个和第三个是表单中名称是MyID和MyCode文本框的内容。在www.BBBBB.com访问了我的ASP之后,我需要它能将Check.asp返回的结果存入它自己的Seesion变量中。这样它就可以知道自己的每个访问者执行了我的服务之后的结果。这是我琢磨出来的Seesion跨域共享的方法。在两个都是ASP写的网站中已经可以成功“共享”Session。
但是我需要其他的动态语言编写的www.BBBBB.com也能使用这个方法。所以来此请教。分不是问题,还可以加。
建议楼主查询连接加入数字签名md5或SHA1码防止恶意访问
<%@ page import="java.net.*,java.io.*;"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Check Validate Code By WFSVI service</title>
</head>
<body><%!
public String CheckAJAX(String strUrl){
try{
URL url=new URL(strUrl);
HttpURLConnection con = (HttpURLConnection)url.openConnection();
DataInputStream in = new DataInputStream(new BufferedInputStream(con.getInputStream()));
InputStreamReader isr=new InputStreamReader(in);
BufferedReader bs=new BufferedReader(isr);
StringBuffer strBf=new StringBuffer();
while(bs.ready()){
strBf.append(bs.readLine());
}
return strBf.toString();
}catch(Exception e){
System.out.println("error:"+e);
return "error:"+e;
}
}
%><%
if(!"".equals(request.getParameter("MyCode"))){
session.setAttribute("Resule",CheckAJAX("http://oatest:9080/test.jsp?TimeStamp=" + new java.util.Date().getTime()+"&ID="+request.getParameter("myID")+"&Code="+request.getParameter("myCode")));
}
String resule=(String)session.getAttribute("Resule");
%>
<p>这是HTML代码。URL返回结果是:<%=resule%></p><%
if("1".equals(resule)){
out.println("<p>是1</p>");
}else{
out.println("<p>不是1</p>");
}
%></body>
</html>
URL url=new URL(strUrl);/*建立URL的连接*/
HttpURLConnection con = (HttpURLConnection)url.openConnection();/*得到URL返回的数据流,实例化数据流对象*/
DataInputStream in = new DataInputStream(new BufferedInputStream(con.getInputStream()));/*将数据流转换为输入的数据流 ?不太懂*/
InputStreamReader isr=new InputStreamReader(in);/*将数据流存入缓存*/
BufferedReader bs=new BufferedReader(isr);/*创建字符串缓存*/
StringBuffer strBf=new StringBuffer();/*当数据流缓存准备好后,相当于AJAX的状态4和200*/
while(bs.ready()){/*数据流缓存按照行的单位添加到字符串缓存*/
strBf.append(bs.readLine());/*函数返回字符串*/
return strBf.toString();/*错误处理*/
}catch(Exception e){
System.out.println("error:"+e);
return "error:"+e;
}
没有理解错吧?在此请教,那么说JSP不需要XMLHttpRequest对象,直接用自己的HttpURLConnection 对象就可以实现访问其他网页的内容吗?太方便了!另外,JSP中使用session是不是这样使用?: /*设定名称为Result的session的内容为 123*/
session.setAttribute("Result","123"); /*将名称为Result的session的内容存入字符串变量 myResult */
String myResult=(String)session.getAttribute("Result");还有,System.out.println 和 out.println 是一码事吧?感谢感谢!
您的代码
<%!
public String CheckAJAX(String strUrl){
中用了<%!(有感叹号) 。
其他地方是和ASP一样的<%,没有感叹号。这有什么区别吗?
System.out.println 是在系统后台输出,在web服务器和日志文件里可以查到
out.println 是在网页上写 奏是Response.Write
<%! 是声明定义
我再加30分吧。别嫌少了,这是自盘古开天辟地以来,我在CSDN给的最高分了。