AJAX跨域访问通信代理在网上也说的很多,大多都是用asp.net或php写的
俺没用过DWR不知道有没有实现跨域通信的实例,所以自己在网上查资料写了个这个,也算解了当前的燃眉之急
里面的编码是为JAVA工程和网站数据交换设置的,具体的编码应看情况设置
应用连接:
package
com.stone.common;
import
java.io.
*
;
import
java.net.
*
;
import
java.util.
*
;
import
javax.servlet.
*
;
import
javax.servlet.http.
*
;

public
class
AJAXProxy
extends
HttpServlet
...
{
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException ...{
doGet(req, res);
}

protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException ...{
req.setCharacterEncoding("UTF-8");
res.setCharacterEncoding("gb2312");
res.setContentType("text/html");
PrintWriter out=res.getWriter();
String mac;
String url=null;
StringBuffer params=new StringBuffer();
Enumeration enu = req.getParameterNames();
int total = 0;

while (enu.hasMoreElements()) ...{
// 取得参数名称列表
String paramName=(String)enu.nextElement();
// 处理本请求参数以及发送给第三方服务器的参数
if(paramName.equals("url"))...{
// 第三方服务器地址
url=req.getParameter(paramName);
}else...{
if(total==0)...{
params.append(paramName).append("=").append(URLEncoder.encode(req.getParameter(paramName), "UTF-8"));
} else ...{
params.append("&").append(paramName).append("=").append(URLEncoder.encode(req.getParameter(paramName), "UTF-8"));
}
++total;
}
}

if(url != null)...{
// 使用POST方式向目的服务器发送请求
URL connect = new URL(url.toString());
URLConnection connection = connect.openConnection();
connection.setDoOutput(true);
OutputStreamWriter paramout = new OutputStreamWriter(connection.getOutputStream());
paramout.write(params.toString());
paramout.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "gb2312"));
String line;
StringBuffer dataSend=new StringBuffer();
while((line = reader.readLine()) != null)...{
out.println(line);
dataSend.append(line);
}
paramout.close();
reader.close();
}
}
}
本文介绍了一种通过创建AJAX Proxy服务器解决跨域问题的方法。该服务器接收来自客户端的请求参数,然后将这些参数转发到指定的目标服务器,并将响应结果返回给客户端。此方案适用于需要跨域获取数据的场景。

939

被折叠的 条评论
为什么被折叠?



