Web applications Vaadin:禁用Vaadin V14 webapp中的图像文件夹列表
我已经重建了vaadin webapp并删除了所有Spring功能。 My webapp现在是非spring应用程序的GreetService入门版下载 应用程序在tomcat 9.0应用服务器上运行,目录列表的配置如下:tomcat_HOME/conf/web.xmlWeb applications Vaadin:禁用Vaadin V14 webapp中的图像文件夹列表,web-applications,vaadin,Web Applications,Vaadin,我已经重建了vaadin webapp并删除了所有Spring功能。 My webapp现在是非spring应用程序的GreetService入门版下载 应用程序在tomcat 9.0应用服务器上运行,目录列表的配置如下:tomcat_HOME/conf/web.xml <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
注册了三个servlet——默认的一个、jsp的一个和my的一个,这是带有注释的my AgentServlet类
我的问题是:-
@WebServlet(value = { "/*"}, initParams=
{@WebInitParam(name="listings", value="false")}, asyncSupported =true)
public class AgentServlet extends VaadinServlet {
/** the logger. */
private static final Logger MLOGGER = LogManager.getLogger(AgentServlet.class);
@Override
protected void servletInitialized() throws ServletException {
super.servletInitialized();
MLOGGER.info("In AgentServlet ... servletInitialized()");
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) {
MLOGGER.info("In AgentServlet ... service()");
MLOGGER.info("Request: Context Path = " + request.getContextPath()
+ "\n, Request URI = " + request.getRequestURI()
+ "\n, Request URL = " + request.getRequestURL()
+ "\n, Servlet Context Path = " + request.getServletContext().getContextPath()
+ "\n, Servlet Context Name = " + request.getServletContext().getServletContextName()
+ "\n, Servlet Mapping = " + request.getHttpServletMapping().getPattern()
+ "\n, Servlet Mapping Match Value = " + request.getHttpServletMapping().getMatchValue()
+ "\n, Servlet Mapping Match Name = " + request.getHttpServletMapping().getMappingMatch().name()
);
String ListingsSetting = getServletConfig().getInitParameter("listings");
MLOGGER.info("In AgentServlet ... service().. Listings Setting = " + ListingsSetting);
request.getServletContext().getServletRegistrations().forEach((key, value) -> MLOGGER.info(key + ":" + value.getClassName()));
try {
super.service(request, response);
} catch (ServletException se) {
MLOGGER.error("In AgentServlet ... service() caught Servlet Exception " + se.getMessage());
} catch (IOException ie) {
MLOGGER.error("In AgentServlet ... service() caught IO Exception " + ie.getMessage());
}
}
}
通过在TOMCAT_HOME\conf\web.xml文件中将以下值更改为
false
,可以禁用服务器的目录列表:
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
列表
真的
也许你也可以尝试将一个空的index.html文件添加到目录中。我猜你把问题中的
改为false
。问题仍然存在吗?如果是,请通过编辑您的问题或在答案下进行评论来详细说明。如果没有,您可以接受@Alejandro Duarte的答案,这有助于其他人了解此问题的答案。在TOMCAT_HOME/conf/web.xml的web.xml中,listings值已设置为“false”,但images文件夹的内容仍在列出。这是我的问题-是否在其他地方重置。我已重新编写了问题,并删除了与问题无关的任何内容。我希望这更清楚。为什么要将init param设置为DefaultSerlvet,而不是AgentServlet?我的理解是,我两者都在做。DefaultServlet的init参数在tomcat主目录的web.xml中设置。这是Tomcat的“开箱即用”配置。因为我在我的Vaadin项目中使用了带有“/*”值的@WebServlet注释,所以我在这里的理解是,对我的webapp上下文的任何请求(无论是否用于静态资源)都将由AgentServlet处理,我正试图确保AgentServlet在目录列表中的行为,与DefaultServlet相同。
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>