有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我可以将网站的欢迎文件设置为servlet吗?如果是,怎么做?我试着说:

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

<!-- FilterForwarded is a servlet -->

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

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

编辑:

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

这是web中定义的映射。xml。当我在欢迎文件中使用/FilterForwarded时,我在尝试部署时收到以下消息:错误配置:欢迎文件必须是相对路径:/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)

共 (1) 个答案

  1. # 1 楼答案

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

    或者您的要求是只记录登录页面的客户端IP

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

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

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