AJAX跨域访问通信代理,java中的实现

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

应用连接:

http://192.168.1.8:8888/servlet/com.stone.common.AJAXProxy?x=a&y=b&url=http://www.xxx.com/pagesild/testpage.asp

 

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();
        }

    }

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值