servlet解决浏览器的跨域
来源:互联网 发布:京东联盟网站源码 编辑:程序博客网 时间:2024/06/05 06:27
概述:
在做一些web请求时,会涉及到很麻烦的浏览器跨域问题,因此,一般都会通过后台处理再给前台。本文讲述通过servlet解决浏览器的跨域问题。
实现:
在工程下新建一个servlet,实现代码如下:
package lzugis.web.agent;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.net.URL;import java.net.URLConnection;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class WebAgent */@WebServlet(name="WebAgent",urlPatterns="/web/agent")public class WebAgent extends HttpServlet {private static final long serialVersionUID = 1L;private String debug = "false"; /** * Default constructor. */ public WebAgent() { // TODO Auto-generated constructor stub }/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubString encoding = getInitParameter("encoding"); if ((encoding != null) && (!"".equals(encoding))) { request.setCharacterEncoding(encoding); } String url = request.getParameter("url"); if (!"".equals(url)) { responseFile(request, response, url); return; }}/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubString encoding = getInitParameter("encoding"); if ((encoding != null) && (!"".equals(encoding))) { request.setCharacterEncoding(encoding); } String url = request.getParameter("url"); if (!"".equals(url)) { responseFile(request, response, url); return; } if ("true".equals(this.debug)) { String data = readXMLFromRequestBody(request); System.out.println(data); }}public void responseFile(HttpServletRequest req, HttpServletResponse resp, String url) { try { URL u = new URL(url); URLConnection urlc = u.openConnection(); urlc.setConnectTimeout(3000); urlc.setReadTimeout(100000); resp.setContentType(urlc.getContentType()); ServletOutputStream out = null; BufferedInputStream input = null; byte[] data = new byte[1024]; int length = -1; input = new BufferedInputStream(urlc.getInputStream()); out = resp.getOutputStream(); while ((length = input.read(data)) != -1) { out.write(data, 0, length); } input.close(); out.flush(); out.close(); } catch (IOException localIOException) { } } private String readXMLFromRequestBody(HttpServletRequest request) { StringBuffer strBuf = new StringBuffer(); try { BufferedReader reader = request.getReader(); String line = null; while ((line = reader.readLine()) != null) strBuf.append(line).append("\n"); } catch (IOException e) { e.printStackTrace(); } return strBuf.toString(); }}说明:
servlet是通过注解的方式配的,访问路径为:localhost:8080/lzugis/web/agent?url=http://localhost:6080/arcgis/rest/services/?f=pjson。
0 0
- servlet解决浏览器的跨域
- Servlet请求之浏览器响应乱码的解决
- 解决Google浏览器和IE浏览器跨域的问题
- Servlet的生命周期与浏览器访问Servlet
- 解决浏览器,servlet,jsp页面之间传值出现乱码的情况
- Ajax跨域问题浏览器兼容性的模拟和解决
- 与seajs结合解决所有浏览器的跨域问题
- 解决百度鹰眼服务浏览器的跨域访问题
- 解决浏览器跨域的几种方式
- 用NPAPI开发跨浏览器的插件,解决浏览器兼容问题
- 解决跨浏览器的事件问题
- 浏览器兼容问题的解决
- 解决ajax跨域请求浏览器兼容问题
- chrome浏览器解决ajax跨域问题
- 解决Ionic2浏览器跨域问题
- chrome浏览器解决跨域问题
- ajax浏览器跨域访问解决
- SpringBoot后台解决浏览器跨域问题
- [LeetCode186]Reverse Words in a String II
- [LeetCode243]Shortest Word Distance
- [LeetCode244]Shortest Word Distance II
- [LeetCode245] Shortest Word Distance III
- [Web前端]梳理-JavaScript.5.函数,6.作用域
- servlet解决浏览器的跨域
- [Rman]Rman增量备份level012的区别
- 不要走上技术分析之路
- 425 Unable to build data connection: Connection refused
- 07-渲染流程-4-Sprite渲染-渲染命令分析
- ShareSDK快速集成
- Java进阶(十八)Java实现定时器(Timer)
- http几种请求方式调用
- Check out this cheat sheet for technical interviews