在本地应用中访问http的远程服务器上的静态资源时,会遇到一个问题,就是远程页面中的静态资源的引用路径是相对的,这样请求的路径会自动加上本地应用的路径前缀,而不是http服务器的url前缀。
解决方法:
使用Spring的filter拦截对于远程资源的请求,这个请求路径可以任意指定,但最后是请求资源在远程服务器上的相对路径,为了便于filter拦截这样的远程请求路径,可以指定匹配http打头的url,比如filter在web.xml中可以这样配置:
<filter> <filter-name>httpResourcesFilter</filter-name> <filter-class>com.focoon.web.filter.HttpResourcesFilter</filter-class> </filter> <filter-mapping> <filter-name>httpResourcesFilter</filter-name> <url-pattern>/http/*</url-pattern> </filter-mapping>
java代码中可以对路径进行重新处理,并使用httpClient来访问远程的静态资源并在response中输出字节数组。
package com.focoon.web.filter; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.GetMethod; import org.springframework.web.filter.OncePerRequestFilter; public class HttpResourcesFilter extends OncePerRequestFilter{ @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { System.out.println("----------------------------拦截到了远程请求资源路径---------------------------------"); String url = request.getRequestURI(); String prefixRemoteUrl = "http://xxx.xxx.xxx.xxx/sns/unzip/"; String relativeRemoteUrl = url.substring(url.indexOf("http/")+5); String remoteUrl = prefixRemoteUrl + relativeRemoteUrl; HttpClient httpClient = new HttpClient(); GetMethod getMethod = new GetMethod(remoteUrl); int statusCode = httpClient.executeMethod(getMethod); if (statusCode != HttpStatus.SC_OK) { System.err.println("Method failed: " + getMethod.getStatusLine()); } // 读取内容 byte[] responseBody = getMethod.getResponseBody(); // response.setHeader("Content-type","text/html;charset=UTF-8"); //指定消息头以UTF-8码表读数据 response.getOutputStream().write(responseBody); } }
最后是页面上的调用:
<body> <iframe width="560px" height="620px" src="${ctx}/http/20150129190250/父母/index.html"></iframe> </body>
相关推荐
jcifs-1.3.14.jar是jcifs库的一个版本,它提供了Java SMB API,使得开发人员能够在Java程序中实现SMB协议的功能。这个库包含了一系列的类和接口,如NtlmAuthenticator用于NT LAN Manager身份验证,SmbFile用于表示...
在本文中,我们将深入探讨如何使用Visual C++和MFC(Microsoft Foundation Classes)来构建一个简单的HTTP服务器,这个服务器能够处理图片请求以及网站内部页面的访问。MFC是微软为Windows平台开发应用程序提供的...
在Java中实现远程监控可以利用Java的多种内置特性,如JMX(Java Management Extensions)、RMI(Remote Method Invocation)以及网络编程API。下面我们将详细探讨如何使用Java来构建一个简单的远程监控系统。 首先...
通过RDP,用户可以访问远程计算机上的桌面环境、应用程序和资源,而无需实际物理接触那台机器。RDP不仅提供了图形用户界面的远程控制,还支持声音、打印、文件传输等功能,确保了远程工作与本地工作体验的相似性。 ...
### 嵌入式WEB服务器及远程测控应用详解 #### 一、嵌入式WEB服务器概述 **嵌入式WEB服务器**是一种专门为嵌入式系统设计的小型化WEB服务器,用于实现远程监控和管理的功能。它通常运行于资源受限的设备上,如微...
服务器端管理用户访问权限、资源分配以及会话管理,确保多个远程用户能同时访问而不影响彼此的工作。 3. RDP协议: RDP是微软开发的一种网络通信协议,主要用于提供图形用户界面的远程访问。它支持多种特性,包括...
为了能够通过VBA脚本访问远程服务器上的文件,首先需要将远程文件夹映射到本地盘符。这里采用的是`SUBST`命令,这是一个DOS命令,用于将网络路径映射到一个本地驱动器号。 ```vba SUBST Z: \\***.***.***.***\*** `...
在本项目中,我们探索了如何使用Android设备作为客户端,通过Qt应用程序作为服务器端,实现远程控制个人计算机(PC)的功能。这个系统允许用户通过他们的Android手机执行一系列在PC上的操作,增强了移动设备的实用性...
在本文中,我们使用WebService作为中间桥梁,通过Web应用服务器访问数据库,实现了Android跨平台、快速、安全地访问远程服务器端数据。通过使用JSON格式将数据传输到Web服务端,然后由Web服务端访问数据库,实现了...
本教程将深入探讨嵌入式WEB服务器在远程测控应用中的实现与应用。 一、嵌入式WEB服务器的基本原理 嵌入式WEB服务器的工作原理与传统的WEB服务器类似,主要由HTTP服务器、HTML文档、CGI(通用网关接口)以及可能的...
* 节省资源:使用 VS Code 远程连接服务器,可以减少远程服务器上的资源占用,因为不需要在远程服务器上安装编辑器或 IDE。 三、如何使用 VS Code 远程连接服务器? 使用 VS Code 远程连接服务器需要完成以下步骤...
通过安装和使用“Microsoft Remote Desktop 10.3.4.dmg”,Mac用户可以方便地在不离开本地环境的情况下,访问远程服务器上的应用程序、资源和数据,极大地扩展了他们的工作能力。 由于压缩包文件名称列表中只有一个...
总的来说,远程服务器和远控软件是现代信息技术中的重要组成部分,它们极大地扩展了我们工作和协作的能力,使我们能够跨越地理界限,随时随地访问和管理远程资源。AnyDesk作为其中的佼佼者,以其高效、安全和易用性...
客户端应用程序是计算机系统中一种与用户交互的软件,它通常用于访问远程服务器资源或服务。在互联网环境中,客户端应用程序扮演着至关重要的角色,允许用户发送请求、接收响应,并与服务器进行有效的通信。以下是对...
在IT领域,Web应用执行Shell操作服务器资源是一个关键的话题,特别是在系统管理和远程维护中。这样的功能使得管理员能够通过Web界面方便地控制服务器,而无需直接登录到服务器终端。以下是对这个主题的详细解释: 1...
通过以上步骤,你就能在Java Web应用中实现使用pdf.js在线预览远程服务器上的PDF文件了。这不仅可以提供更好的用户体验,也可以减少服务器的压力,因为大部分处理工作都在客户端完成。记得不断更新pdf.js库,以获取...
- **资源分布**:在C/S模式下,资源分布在客户机和服务器之间,使得用户能够访问远程服务器上的资源。 - **职责分离**:客户机主要负责用户界面呈现和用户输入处理,而服务器则专注于处理业务逻辑和数据存储。 - **...
总结起来,`properJavaRDP`提供了一种灵活的方式,让Java开发者能够轻松地在自己的应用中实现远程桌面功能,无论是桌面应用还是Web应用。在使用过程中,理解库的工作原理、正确配置连接参数、处理好安全性问题以及...