Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 除了web.xml之外,我自己的个人环境配置文件。可能的_Jsp_Web Applications_Tomcat_Servlets - Fatal编程技术网

Jsp 除了web.xml之外,我自己的个人环境配置文件。可能的

Jsp 除了web.xml之外,我自己的个人环境配置文件。可能的,jsp,web-applications,tomcat,servlets,Jsp,Web Applications,Tomcat,Servlets,这个问题真的很简单。webapp是否可以访问我定义的配置文件,并将其放在Tomcat->Conf级别,或者仅限于web.xml环境变量 我怀疑答案是否定的,因为对于一个webapp来说,访问webapp目录之外的任何内容都可能相当危险 我不想使用web.xml,因为我不希望此配置进入生产环境。它应该完全驻留在我的devtomcat实例中。(这只是一个标志,允许我绕过某些功能,在dev中,这些功能非常慢,不需要包含) 这是一个java/jsp webapp,顺便说一句。您可以在web.xml中使用

这个问题真的很简单。webapp是否可以访问我定义的配置文件,并将其放在Tomcat->Conf级别,或者仅限于web.xml环境变量

我怀疑答案是否定的,因为对于一个webapp来说,访问webapp目录之外的任何内容都可能相当危险

我不想使用web.xml,因为我不希望此配置进入生产环境。它应该完全驻留在我的devtomcat实例中。(这只是一个标志,允许我绕过某些功能,在dev中,这些功能非常慢,不需要包含)


这是一个java/jsp webapp,顺便说一句。

您可以在web.xml中使用一个初始化参数来指定另一个文件的位置,该文件将由web应用程序用于部分初始化,并从servlet代码的
init()
方法中加载该文件并用于部分配置。通过跳过额外的初始化,可以对该方法进行编码以处理文件不存在的情况,并且该文件可以位于应用程序外部


这是配置第三方软件(如Spring或Hibernate)以及为每个环境定义备用数据库的常用策略。

servlet可以在webapp目录外打开文件(但它们仍受文件系统权限的约束)

对于您的问题,可以使用上下文初始化参数。您可以在此处阅读有关它们的信息:。您可以使用servlet类中的
getServletContext().getInitParameter()
访问它们

另一个选项是在dev机器上设置一个环境变量,并使用
System.getenv()
访问其值

webapp是否可以访问我定义的配置文件,并将其放在Tomcat->Conf级别,或者仅限于web.xml环境变量

你可以把配置文件放在任何你想要的地方。您只需要知道它的确切位置,然后就可以使用Java中的无数方法之一来读取资源。规范的方法是将其放入类路径中,或者将其路径添加到类路径中,这样您就可以通过类装入器从类路径中读取它。有关更多详细信息,请参见


我怀疑答案是否定的,因为对于一个webapp来说,访问webapp目录之外的任何内容都可能相当危险

只有当客户端可以通过相应地操纵HTTP请求来控制/更改这种行为时,才是危险的。对于设计正确的servlet,这应该是不可能的


我不想使用web.xml,因为我不希望此配置进入生产环境

我不知道我是否理解你的担心。默认情况下,客户端将无法查看
web.xml
文件(实际上,整个
/web-INF
/META-INF
文件夹被客户端限制直接访问)。只有当您的默认servlet配置/编写不当时,客户端才有可能下载并查看
web.xml
文件


它应该完全驻留在我的devtomcat实例中。(这只是一个标志,允许我绕过某些功能,在dev中,这些功能非常慢,不需要包含)


我认为从远程位置下载配置文件是个坏主意。这样其他人都可以看到您的配置文件。您需要通过HTTPS提供服务,并对其设置基于登录的访问限制。这一切都非常笨拙。

我不希望它出现在web.xml中,因为我不是部署到生产环境中的人,因此,无论多么遥远,负责部署的人都有可能忘记删除我的变量。哦,这样,然后只需在本地环境上设置一个VM参数,或者只在本地环境的类路径上设置一个配置文件。更多细节请参见链接答案。是的……只是看了一下。谢谢这正是我需要知道的:-)