阻止用户访问.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 。