gpt4 book ai didi

java - 使网站的欢迎页面成为一个servlet

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:22:20 24 4
gpt4 key购买 nike

我可以将网站的欢迎文件做成一个 servlet 吗?如果是,怎么办?我正在尝试类似的东西:

 <welcome-file-list>
<welcome-file>FilterForwarded</welcome-file>
</welcome-file-list>

<!-- FilterForwarded is a servlet -->

部署时我没有看到任何错误,但是当我尝试打开网站 abc.com 时,我从浏览器收到一条消息,提示无法连接到该网站。为什么会这样?

我想当任何人访问该网站时,我应该能够存储客户端的公共(public) IP。为此,我编写了一个过滤器,在获取 IP 后将其传递给 servlet(从那里我可以更新日志)。存储 IP 后,客户端会自动重定向到 index.jsp。有什么办法可以实现吗?

编辑:

    <servlet-mapping>
<servlet-name>FilterForwarded</servlet-name>
<url-pattern>/FilterForwarded</url-pattern>
</servlet-mapping>

这是在 web.xml 中定义的映射。当我在欢迎文件中使用 /FilterForwarded 时,我在尝试部署时收到此消息:Bad configuration: Welcome files must be relative paths:/FilterForwarded

来自日志:

com.google.apphosting.utils.config.AppEngineConfigException: Welcome files must be relative paths: /FilterForwarded
at com.google.apphosting.utils.config.WebXml.validate(WebXml.java:125)
at com.google.appengine.tools.admin.Application.<init>(Application.java:150)
at com.google.appengine.tools.admin.Application.readApplication(Application.java:225)
at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:145)
at com.google.appengine.tools.admin.AppCfg.<init>(AppCfg.java:69)
at com.google.appengine.tools.admin.AppCfg.main(AppCfg.java:65)

最佳答案

如果将过滤器映射到/*,您应该能够拦截所有请求,然后从那里记录 IP。

或者您要求只为着陆页记录客户端 IP?

如果是这样,您可以更改 Servlet 容器的默认 servlet,但请记住,这将更改与您的 web.xml 中的映射不匹配的所有请求的默认 servlet。

<servlet-mapping>
<servlet-name>FilterForwarded</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

一个更复杂但可能更好的解决方案是在您的 Java Web 容器前端放置一个 Web 服务器,并使用重写规则来代理您的后端 Servlet。这种方式意味着您可以控制为您的登录页面访问的 Servlet,而无需覆盖所有不匹配请求的默认 servlet。不过,这对您的问题来说可能有点矫枉过正。

关于java - 使网站的欢迎页面成为一个servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12316956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com