Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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
在Java web应用程序中首先调用默认servlet_Java_Servlets - Fatal编程技术网

在Java web应用程序中首先调用默认servlet

在Java web应用程序中首先调用默认servlet,java,servlets,Java,Servlets,我希望在以以下方式访问java web应用程序时,首先调用我的SampleServlet: http://server:8080/appname/ 有什么方法可以实现这一点吗?不确定您的意思,但您需要将servlet映射到“/” 小样本 / 不确定您的目标是什么,但web应用程序初始化可以通过ServletContextListener实现: public class AppListener implements ServletContextListener { public void

我希望在以以下方式访问java web应用程序时,首先调用我的
SampleServlet

http://server:8080/appname/


有什么方法可以实现这一点吗?

不确定您的意思,但您需要将servlet映射到“/”


小样本
/

不确定您的目标是什么,但web应用程序初始化可以通过ServletContextListener实现:

public class AppListener implements ServletContextListener {
    public void contextInitialized(ServletContextEvent event) {
        // place your code here
    }

    public void contextDestroyed(ServletContextEvent event) {
    }
}
稍后在web.xml中:

<web-app>
<listener>
    <listener-class>
        package.AppListener
    </listener-class>
</listener>
...
</web-app> 

package.AppListener
...

使用Servlet调用您的Servlet。

如果您想将Servlet设置为您的主页,那么这对我来说很有用


主页
...
在主页上显示内容
主页Servlet
主页servlet
com.cantorva.gigcalendar.servlets.HomepageServlet
...
主页servlet
/主页
这意味着通过您指定的URL到达您的应用程序的用户将受到servlet的欢迎。它还为位于“/homepage”的主页创建别名,但您不必使用该别名


如果您想在启动时运行一些代码,那么看起来是正确的。

如果您想在启动时运行代码,确实应该可以。如果您有遗留问题,并且必须使用servlet,那么启动时的参数加载可以为您实现以下目的:

<servlet>
    <servlet-name>SampleServlet</servlet-name>
    <display-name>SampleServlet</display-name>
    <description>Sample Servlet</description>
    <servlet-class>...</servlet-class>
    <init-param>...</init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

小样本
小样本
示例Servlet
...
...
1.

load-on-startup标签指定在web应用程序启动时自动加载servlet;数值只是给那些在启动时加载的人一个加载顺序。如果未指定任何值,则当容器决定需要加载servlet时(通常是在第一次访问时)将加载servlet。

在应用程序的生命周期中,这将被调用一次。海报要求每个请求访问一次的内容。imho,这个问题不清楚你是否可以投票否决它。我把这个问题解释为“当用户出现时”,意思是显示servlet生成的页面而不是运行代码。埃里克森:是的,我知道它只会被调用一次,而不是每次请求调用一次。这个问题不清楚,这就是为什么我开始回答“不确定你的目标是什么”。事实上,我在应用程序启动时就理解了这个问题(这是我一直在寻找的),现在我看到它有双重解释。所以答案是正确的,伊姆霍。
<welcome-file-list>
    <welcome-file>homepage</welcome-file>
</welcome-file-list>

...

<servlet>
    <description>Shows stuff on the homepage</description>
    <display-name>Homepage Servlet</display-name>
    <servlet-name>HomepageServlet</servlet-name>        
    <servlet-class>com.cantorva.gigcalendar.servlets.HomepageServlet</servlet-class>
</servlet>

...

<servlet-mapping>
    <servlet-name>HomepageServlet</servlet-name>
    <url-pattern>/homepage</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>SampleServlet</servlet-name>
    <display-name>SampleServlet</display-name>
    <description>Sample Servlet</description>
    <servlet-class>...</servlet-class>
    <init-param>...</init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>