深入Ajax代理的Java Servlet的实现详解
深入Ajax代理的Java Servlet的实现详解
发布时间:2016-12-28 来源:查字典编辑
摘要:代码如下所示:复制代码代码如下:importjava.io.IOException;importjava.io.InputStream;im...

代码如下所示:

复制代码 代码如下:

import java.io.IOException;

import java.io.InputStream;

import java.net.URL;

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* Take any request and proxy it to the given REDIRECT_BASE.

* For example, if this servlet lives at

*

* http://foo.com/forward

*

* and is inititialized with the REDIRECT_BASE

*

* http://bar.com/some/path

*

* then a GET request like

*

* http://foo.com/forward?quux=mumbley

*

* will return the results of a GET from

*

* http://bar.com/some/path?quux=mumbley

*

* This is not robust and generalized; it's simple and quick.

*

* @author jdf

*

*/

public class ProxyServlet extends HttpServlet

{

private final static String COPYRIGHT = com.ibm.dogear.Copyright.SHORT;

public static final String REDIRECT_BASE = "com.ibm.bl.servlet.RedirectServlet.redirect_base";

private String redirectBase;

@Override

public void init(ServletConfig config) throws ServletException

{

super.init(config);

redirectBase = getRequiredParam(REDIRECT_BASE);

}

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException

{

String queryString = req.getQueryString();

URL url = new URL(redirectBase + (queryString != null ? "?" + queryString : ""));

copyInputStreamToOutputStream(url.openStream(), resp.getOutputStream());

}

private void copyInputStreamToOutputStream(InputStream in, ServletOutputStream out)

throws IOException

{

try

{

try

{

byte[] buffer = new byte[1024];

int n;

while ((n = in.read(buffer)) != -1)

out.write(buffer, 0, n);

}

finally

{

out.close();

}

}

finally

{

in.close();

}

}

protected String getRequiredParam(String param) throws ServletException

{

String result = getServletConfig().getInitParameter(param);

if (result == null) {

throw new ServletException(getClass() + " requires " + param + " param");

}

return result;

}

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Java学习
热门Java学习
编程开发子分类