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

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

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

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

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

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

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

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

然后,您可以编写一个filter以include/forward到jsp

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