2

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

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

我敢打赌我可以编写一个过滤器来提取映射到 *.jsp 的所有非 FORWARD 指令(包括请求等)并为它们发送 404,但我认为必须有更简单的方法?有人有什么建议吗?

4

3 回答 3

6

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

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

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

于 2012-06-01T17:00:19.463 回答
2

默认情况下,Web Containers 不允许WEB-INF直接访问文件夹下的资源。你可以把jsp的里面的WEB-INF文件夹。

然后,您可以将过滤器写入include/forwardjsp

于 2012-06-01T17:03:25.360 回答
0

将代码放入检测是否满足必要条件并采取适当行动的 JSP 中,例如转发到控制器 servlet 或将用户引导到适当的地方,如果不满足必要条件,则不会尝试渲染“正确”的 JSP .

于 2012-06-01T17:00:26.110 回答