【发布时间】:2009-03-21 10:42:58
【问题描述】:
我希望我的SampleServlet 在以这种方式访问我的 Java Web 应用程序时首先被调用:
http://server:8080/appname/
有什么方法可以实现吗?
【问题讨论】:
我希望我的SampleServlet 在以这种方式访问我的 Java Web 应用程序时首先被调用:
http://server:8080/appname/
有什么方法可以实现吗?
【问题讨论】:
使用Servlet filter 调用您的Servlet。
【讨论】:
如果您想将 servlet 作为您的主页,那么这在 http://feelitlive.com/ 上对我有用
<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>
这意味着通过您指定的 URL 到达您的应用程序的用户将受到您的 servlet 的欢迎。它还在“/homepage”处为主页创建别名,但您不必使用它。
如果你想在启动时运行一些代码,那么asalamon74's answer 看起来不错。
【讨论】:
不确定您的意思,但您需要将您的 servlet 映射到“/”
<servlet-mapping>
<servlet-name>SampleServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
【讨论】:
不知道你的目的是什么,但是 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>
【讨论】:
如果你想在启动时运行代码,asalamon74's answer 应该没问题。如果您有遗留情况并且必须使用 servlet,则参数 load-on-startup 可以为您解决问题:
<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>
load-on-startup 标记指定 servlet 应在 Web 应用程序启动时自动加载;数值只是给那些在启动时加载的加载顺序。如果未指定任何值,则 servlet 将在容器决定需要加载时加载 - 通常是在首次访问时。
【讨论】: