在java中,是否有必要了解服务器文件目录结构?

在java中,是否有必要了解服务器文件目录结构?,java,security,remote-access,Java,Security,Remote Access,我试图访问服务器上的远程文件只是为了学习 我的服务器很简单,如下所示: 这是一个基本的SpringMVC项目 它显示一个index.html,其中打印“HelloWorld”和当前服务器时间 我想做的是: 访问URL(例如,http://192.168.0.1:8080/test) 查找服务器上某个位置的index.html的绝对路径(远程文件) 打开并编辑“HelloWorld”至“嗨,John!” 我已经尝试使用HttpUrlConnection,但该类的方法与我的目的不匹配。 第二次尝试是

我试图访问服务器上的远程文件只是为了学习

我的服务器很简单,如下所示:

  • 这是一个基本的SpringMVC项目
  • 它显示一个index.html,其中打印“HelloWorld”和当前服务器时间
  • 我想做的是:

  • 访问URL(例如,
    http://192.168.0.1:8080/test
  • 查找服务器上某个位置的index.html的绝对路径(远程文件)
  • 打开并编辑“HelloWorld”至“嗨,John!”
  • 我已经尝试使用HttpUrlConnection,但该类的方法与我的目的不匹配。 第二次尝试是使用File类。我将URI实例放在文件中,但URI只处理“File://”协议


    如何更改远程服务器计算机上的文本?

    基本上,我可以向您展示3种可能的方法,其中2种方法不使用代码:

  • 使用SSH访问服务器,并使用您的收藏夹shell文本编辑器(例如vi、nano等)更改
    index.html
  • 使用SFTP访问服务器的文件系统,并使用包含新字符串的新版本覆盖
    index.html
  • 在服务器上创建一个
    REST
    -界面,允许您更改文件内容。这一个需要编码,我不知道工作量是否真的符合您的目的
  • 编辑:


    您似乎希望在不与远程服务器进行任何“交互”的情况下更改远程文件,如REST接口或其他。如果这是如此容易做到的话,它将对系统造成巨大的安全漏洞。因此,您始终需要服务器的交互,例如通过
    REST
    -接口等。您不能只是键入一些
    Java
    代码,然后神奇地修改远程文件。使用
    Java
    可以做的唯一一件事就是通过
    ssh
    HTTP
    访问服务器,并利用远程服务器提供的功能。这意味着您必须始终在服务器端做一些工作,才能进行这样的修改。

    我希望,以下几点将为您提供一些帮助,以实现您的目标:

    • 不应修改应用程序中的服务器资源文件
    • 相反,使用模板(请参阅)生成index.html文件的不同版本
    • 您要显示的内容(“Hello world”或“Hi,John”)应该从数据库(MySQL、PostgreSQL、MongoDB或其他任何数据库)读取
    • 如果调用方必须修改服务器内容,则应将POST请求中的内容传递给远程服务器,远程服务器将其保存在DB中或直接通过模板显示
    但是,如果出于某些原因(我不知道您的要求),您必须访问文件资源,则可以在(远程)控制器类中使用servlet API方法:

    getServletContext().getRealPath("/index.html")!
    
    这将为您提供索引文件的引用(如果您的应用程序未打包为WAR!)。同样,请记住,不建议随意处理服务器资源文件

    编辑


    如果不能更改远程服务器应用程序,必须使用客户端java,请考虑使用FTP或FTPS客户端:./P>我的目的是只使用java来控制事情。1、#2可以是一个解决方案,但它需要服务器ID/PW#3需要额外的工作在服务器端,我不想。有没有办法只用java就可以做到这一点?谢谢你的回答和编辑:我认为你至少要做以下1项中的一项。向服务器进行身份验证(使用ID/PW,即使您是否使用Java进行身份验证)以写入文件2。编写一些额外的代码,让服务器为您编写文件。所以@nvrmnd回答所有可能的问题solutions@Wittaya好啊但那样的话,我的目的就有点无用了。我之所以尝试这一点,是因为我想知道黑客是如何进行重定向攻击的,并准备对此进行防御。我想这样,因为我所有的服务都不考虑这样的攻击。无论如何,谢谢你的意见。