反正知道java中的服务器文件目录结构吗?

时间:2014-02-17 08:19:55

标签: java security remote-access

我正在尝试访问服务器上的远程文件,仅用于学习目的。

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

  1. 这是一个基本的SpringMVC项目
  2. 它显示了一个index.html,它打印“HelloWorld”和当前服务器时间
  3. 我想做的是在下面:

    1. 访问网址(例如,http://192.168.0.1:8080/test
    2. 查找index.html的绝对路径,它位于服务器上的某个位置(远程文件)
    3. 打开并编辑“HelloWorld”为“嗨,约翰!”
    4. 我已经尝试过使用HttpUrlConnection,但该类的方法与我的目的不符。 第二次尝试使用File类。我将URI实例放在File中,但URI只对待“file://”协议。

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

2 个答案:

答案 0 :(得分:1)

基本上我可以向您展示 3 可能的方式,其中2个没有使用代码:

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

    您似乎想要在没有此远程服务器的任何“交互”的情况下更改远程文件,例如REST接口或其他任何内容。如果这很容易实现,那么它将给系统带来很大的安全漏洞。因此,您始终需要服务器的交互,例如通过REST - 界面等。您不能只输入一些Java代码并神奇地修改远程文件。您可以使用Java执行的唯一操作是通过sshHTTP访问服务器,并利用远程服务器为您提供的功能。这意味着您将始终必须在服务器端进行一些工作才能进行此类修改。

答案 1 :(得分:0)

我希望,以下几点可以帮助你实现你想要的目标:

  • 您不应修改应用程序中的服务器资源文件。
  • 相反,请使用模板化(请参阅Freemarker)生成index.html文件的不同版本。
  • 您要显示的内容(“Hello world”或“Hi,John”)应该从数据库(MySQL,PostgreSQL,MongoDB或其他)中读取。
  • 如果调用者必须修改服务器内容,则应将POST请求中的内容传递给远程服务器,远程服务器将其保存在数据库中或通过模板直接显示。

但是,如果由于某些原因(我不知道您的要求),必须访问文件资源,您可以在(远程)控制器类中使用servlet API方法:

getServletContext().getRealPath("/index.html")!

这将为您提供索引文件的引用(如果您的应用程序未打包为WAR!)。同样,请记住,不建议使用服务器资源文件。

修改

如果您无法更改远程服务器应用程序并且必须使用客户端Java,请考虑使用FTP或FTPS客户端:Commons net