0
我想要解决的问题是,我有一个运行在Tomcat 7上的Web项目,主要是可公开访问的JSP页面,但也有一些JSP页面不打算公开无障碍。这些“私人”页面使用不同的servlet像这样:使JSP可以通过RequestDispatcher访问#仅包括
response.setContentType(...);
request.getRequestDispatcher("/private/example.jsp").include(request, response);
我想私人JSP页面是由RequestDispatchaer#include()
访问,但不如果客户端导航到例如直接使用/private/example.jsp。
的方式,我处理这现在是我从servlet设置一个请求属性:
request.setAttribute("okToAccess", true);
然后在JSP页面中我检查该属性,如果它没有找到返回一个空文件。这两个缺点是:
- 该代码是boiler-platey和恼人的写作。
- 通过
include
分派的Servlet无法修改响应状态/头文件,所以我不能从JSP发回一个403或404,我必须实现稍微复杂的逻辑来让调用的servlet发出错误响应。
我的问题是:是否有一种更简洁的方式来阻止直接访问这些“私人”的JSP,同时仍然让它们与include()
一起使用?东西我可以放在web.xml
什么的?
它将如何在WEB-INF文件夹中编译? –
令人惊叹!我不知道我可以在那里放置任意东西。 –
@TonyBenBrahim我猜它是有效的。我看到有人提到它[这里](https://coderanch.com/t/291403/java/access-jsp-WEB-INF-folder#1332177)。我没有做足够的挖掘来找到官方规格。 –