DeM*_*rco 10 servlets homescreen
我有一个小maven(间接通过Netbeans 8.1和tomcat设置)
每当我运行项目时,它会在根目录上打开带有HelloWord的浏览器:
即页面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>
Run Code Online (Sandbox Code Playgroud)
我试图创建一个servlet来替换它:
@WebServlet(name = "HomeServlet", urlPatterns = {"/"}) 但是,它没有按预期工作.
即它仍然表现出同样的问候世界: http://localhost:8084
但它确实搞乱了根目录上的所有文件,即http://localhost:8084/foo.css由这个servlet处理并获得响应.
所以,我的问题是(实际上是两个):
如何将此页面的内容更改为其他内容?
或者,至少(如果前者不可能):我可以在根路径上使用永久重定向来避免用户看到此页面吗?
(即http代码301)将用户移动到 http://localhost:8084/home
Bal*_*usC 18
如何将此页面的内容更改为其他内容?
在文本编辑器中打开基础JSP/HTML/XHTML文件.此页面通过<welcome-file>输入标识web.xml.如果是,例如<welcome-file>index.jsp</welcome-file>,那么您需要/index.jsp在IDE内置文本编辑器中打开项目Web内容中的文件.
或者,至少(如果前者不可能):我可以在根路径上使用永久重定向来避免用户看到此页面吗?
这个问题经过深思熟虑.您不希望一直向前和向后重定向访问者.您希望在webapp根目录上映射您的servlet.为了在根路径上映射servlet,请使用空字符串URL模式,""而不是"/"尝试中的默认servlet URL模式.
@WebServlet("")
Run Code Online (Sandbox Code Playgroud)
或者,如果你还没有使用Servlet 3.0,这是老式的web.xml方式.
<servlet-mapping>
<servlet-name>yourHomeServlet</servlet-name>
<url-pattern></url-pattern> <!-- Yes, empty string! -->
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
如果仍然使用默认的servlet URL模式"/",则必须接管容器内置默认servlet的所有职责,例如提供CSS文件等静态资源,添加浏览器缓存头,支持文件下载简历等.以下是第一个相关链接的详细信息.
至少没有必要滥用<welcome-file>这个.这并不代表许多初学者似乎期待的"主页文件".这表示" 请求任何子文件夹时要提供的文件夹的默认文件".因此,不仅对/,而且对/foo/,/bar/等等.
| 归档时间: |
|
| 查看次数: |
5613 次 |
| 最近记录: |