在本地开发时,如果上下文是'/'或'/ appname /',它会有所不同吗?

时间:2010-02-24 23:06:11

标签: java servlets

在本地开发时,如果上下文是'/'或'/ appname /'会有所不同吗?

假设您将部署到http://www.example.com

当我的本地网址为:

时,我喜欢它

http://localhost:8080/

但只是想知道网址是否

http://localhost:8080/appname/

如果有任何区别?

4 个答案:

答案 0 :(得分:2)

您可以使用HttpServletRequest.getContextPath()来确定应用在运行时的部署位置,因此理论上 是可能的。

在实践中,没有人这样做,并且在链接,图像,表单操作等中假定了上下文路径。

答案 1 :(得分:1)

如果您在根目录上进行部署,则HttpServletRequest#getContextPath()将始终解析为/

您的兴趣是 pathinfo 。在过滤器中,您可以HttpServletRequest#getRequestURI()显示它,也可以通过HttpServletRequest#getPathInfo()在Servlet中显示它。

答案 2 :(得分:1)

我想说如果您计划在应用服务器(tomcat?)前部署Apache(或处理初始HTTP请求的其他东西),那没关系:Apache配置将排除该方面

如果您计划在生产中使用您的应用服务器,前面没有HTTP服务器,我会说确实很重要,因为您要确保您的应用可在www上找到。 example.com,而不是example.com/appname。

通过“确实无关紧要”我的意思是将本地服务器配置与生产服务器配置相同具有一定的价值,以减少未来令人讨厌的意外情况;你当然可以用不同的方式配置生产。

您还需要牢记:您是否会在单个应用服务器下运行多个Java Web应用?如果是这样,请计划如何在生产中部署这些。

答案 3 :(得分:1)

您需要小心使用根上下文,因为在编码时可能会假设您处于根上下文中并导致仅在根上下文中运行的webapp。 通过使用命名上下文,您可以避免这种可能性。