拒绝访问放置在WEB-INF中的servlet

时间:2013-05-25 02:56:55

标签: java-ee servlets

我正在尝试阻止访问其.class文件位于WEB-INF / classes中的servlet。我正在使用注释来映射servlet。实际上我无法直接访问WEB-INF中的jsp文件,但我仍然可以通过在url栏中进行挖掘来访问所有的servlet。我不希望这样,因为如果像这样访问它们会弹出很多错误(如果正确访问它们将不会,而不是通过url访问)。另外我在互联网上找不到任何东西来解决这个问题,期望使用web.xml中的路径来阻止网址。

P.S。抱歉我的英语不好。

修改

我没有使用web.xml进行映射,而是使用注释@WebServlet。例如,我有一个带有此注释@WebServlet("/searchServlet")的servlet。如果我输入url“localhost / searchServlet”,则调用它而不是像jsp一样向WEB-INF显示错误“resource not found”。这可能是部署问题吗?我所做的就是将我的src java类的Java Build Path定义为WEB-INF / classes(所以它实际上是编译源的输出):也许这与部署不同?

我希望只能通过获取/发布/重定向/转发...

来访问它们

1 个答案:

答案 0 :(得分:0)

您可以使用Filter拦截Web应用程序中的所有(或子集)请求,例如执行重定向到过滤器中的某个预定义错误页面。

您需要在web.xml中添加过滤器映射(您还可以使用相关的Servlet 3.0注释来注释过滤器),并且您不必触摸使用注释映射的servlet。

更新:您可以查看有关如何使用注释定义过滤器的here。您可以在doFilter中执行以下操作:

HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.sendRedirect("/index.jsp");

...如果你想阻止当前请求。

希望这会有所帮助。