Servlets 使用doGet将根路径中的默认主页更改为servlet

Servlets 使用doGet将根路径中的默认主页更改为servlet,servlets,homescreen,Servlets,Homescreen,我有一个小型maven(通过Netbeans 8.1和tomcat设置间接实现) 每当我运行项目时,它都会打开根目录下带有HelloWord的浏览器: i、 在http://localhost:8084/是: <html> <head> <title>Start Page</title> <meta http-equiv="Content-Type" content="text/html; charse

我有一个小型maven(通过Netbeans 8.1和tomcat设置间接实现)

每当我运行项目时,它都会打开根目录下带有HelloWord的浏览器:

i、 在
http://localhost:8084/
是:

<html>
    <head>
        <title>Start Page</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <h1>Hello World!</h1>
    </body>
</html>


起始页
你好,世界!
我尝试创建一个servlet来替换它,方法是:

@WebServlet(name=“HomeServlet”,urlPatterns={”/“})
但是,它没有按预期工作

也就是说,在:
http://localhost:8084

但它确实弄乱了根目录上的所有文件,即
http://localhost:8084/foo.css
也被这个servlet处理并得到响应

所以,我的问题是(实际上有两个):

如何将此页面的内容更改为其他内容?

或者,至少(如果前者不可能):我可以在根路径上使用永久重定向来避免用户看到此页面吗?

(即http代码301)将用户移动到
http://localhost:8084/home

如何将此页面的内容更改为其他内容

在文本编辑器中打开底层JSP/HTML/XHTML文件。此页面由
web.xml
中的
条目标识。如果是
index.jsp
,则需要在IDE内置文本编辑器中打开项目web内容中的
/index.jsp
文件


或者,至少(如果前者不可能):我可以在根路径上使用永久重定向来避免用户看到此页面吗

这个问题考虑得很糟糕。你不想让访问者在任何时候都来回移动。您希望将servlet映射到webapp根目录。为了在根路径上映射servlet,请使用空字符串URL模式
”,而不是尝试使用默认的servlet URL模式
“/”

@WebServlet("")
或者,如果您还没有打开,下面是老式的
web.xml
方式

<servlet-mapping>
    <servlet-name>yourHomeServlet</servlet-name>
    <url-pattern></url-pattern> <!-- Yes, empty string! -->
</servlet-mapping>

你的家庭服务车
如果您仍然使用默认的servlet URL模式
“/”
,那么您必须接管容器内置的默认servlet的所有职责,例如提供静态资源(如CSS文件)、添加浏览器缓存头、支持文件下载简历等。有关详细信息,请参阅下面的第一个相关链接

至少没有必要为此滥用
。这并不代表许多初学者所期望的“主页文件”。这表示“当请求任何子文件夹时,文件夹的默认文件将提供服务”。因此,不仅在
/
上,而且在
/foo/
/bar/
等上

另见:

无论何时在web.xml中定义
index.jsp
,启动应用程序时,登录页都将是index.jsp页面,即默认情况下,servlet路径将是“/index.jsp”()。但是,在浏览器中,将不会显示。在servlet类中,您可以匹配此模式,并根据需要重定向到其他页面