我目前正在用 Java 编写一个小的动态 Web 应用程序。该应用程序应该是一个事件平台,您可以在其中创建用户帐户,登录,然后您可以查看所有打开的事件(在以后的迭代中,用户可以创建/参与这些事件)。
现在,网络应用程序的结构可以(简化)如下描述:
Register-Servlet -> Register.jsp
|
V
Login-Servlet -> Login.jsp
|
V
Main-page-Servlet -> Main.jsp
所以现在,用户可以访问 Login.jsp,他的登录信息将被发送到 Login-Servlet,Login-Servlet 将对其进行验证,然后将其发送到 Main-Page-Servlet。Main-Page-Servlet 然后(在再次验证登录后)从数据库中获取所有当前事件,将其附加到请求中,并将其转发到 Main.jsp,后者将其显示以供用户查看。
现在,如果用户想要直接访问 Main.jsp(而不是来自 Main-Page-Servlet),它显然无法显示可用的事件。我目前使用的解决方法是进行空检查以查看事件是否存在,如果不存在,则重定向到 Main-Page-Servlet。
像这样解决我的问题让我很困扰,因为我认为这不是最佳实践,而且我认为随着我的应用程序变得越来越大,它只会产生很多其他问题。
我对此的第一个想法是,如果我可以简单地对用户“隐藏”所有 .jsp 文件,这可能会很有用,这样用户就只能登陆 servlet 并且不能以不同的方式访问 .jsp 文件。
有没有办法做到这一点?或者,如果不是,如果我要编写专业的企业级应用程序,最佳实践解决方案是什么?