阻止用户访问.jsp,除非转发

时间:2012-06-01 16:55:13

标签: java servlets

我有一个使用java技术的MVC网站。我有一些.jsp,当通过适当的servlet路由到正常工作,但直接访问似乎不起作用。我想阻止我的用户直接寻址.jsps。

即他们可以使用www.url.com/Website/MyServlet,然后将其转发至www.url.com/Website/MyServlet.jsp,但我希望阻止他们直接发送到www.url.com/Website/MyServlet.jsp,因为HttpServletRequest将是缺少属性,无法正确显示。当然这必须是常见的做法?我如何帮助这个,我可以编写一个映射,将所有* .jsp重定向到未找到的,除非它是一个转发器吗?

我打赌我可以编写一个过滤器来获取映射到* .jsp的所有非FORWARD指令(INCLUDE REQUEST等)并为它们发送404但是我认为必须有一个更有效的方法吗?有人有什么建议吗?

3 个答案:

答案 0 :(得分:6)

将它们放在/WEB-INF文件夹中,并相应地更改前向路径。

request.getRequestDispatcher("/WEB-INF/MyServlet.jsp").forward(request, response);

/WEB-INF(和/META-INF)文件夹中的文件无法公开访问。

答案 1 :(得分:2)

默认情况下,Web容器不允许直接访问WEB-INF文件夹下的资源。你可以将jsp放在WEB-INF文件夹中。

然后,您可以将include/forward的过滤器写入jsp

答案 2 :(得分:0)

将代码放入JSP中,检测是否满足必要条件并采取适当的操作,例如转发到控制器servlet或将用户定向到适当的位置,并且在必要条件下不尝试呈现“正确的”JSP不满足。