java - 在 Java EE Web 应用程序中创建自定义 URL

标签 java jsp url servlets

我正在编写一个简单的小应用程序,它是一个预订系统。系统中有两种角色:管理员和用户。所有请求都通过唯一的 servlet 进行。 Index.jsp(用户和管理员的登录页面)无需它的帮助即可工作。所以我的起始网址如下所示:

localhost:8080/[AppName]/index.jsp

为了确保安全,我编写了一个过滤器,不允许匿名用户访问除index.jsp之外的任何页面;管理员进入用户页面,用户进入管理页面。但问题是我无法正确映射过滤器,因为我的应用程序中的所有 URL 如下所示:

localhost:8080/[AppName]/servlet?command=[commandName]

正因为如此,这样的映射,就像(当然,在web.xml中过滤器已经在这个映射之前描述过):

<filter-mapping>
    <filter-name>Security</filter-name>
    <url-pattern>/servlet?command=[commandName]</url-pattern>
</filter-mapping>

不起作用,我一点也不喜欢它,因为在这种情况下,有必要规定应用程序的所有命令。 在这方面,我有一个想法,让 smbdy 登录时的 url 如下所示:

localhost:8080/[AppName]/user - 用户

localhost:8080/[AppName]/admin - 用于管理员

在 web-inf 文件夹中,我有内部文件夹“pages”,其中有几个内部文件夹:“error”、“admin”和“user”,它们保存这些角色和错误的 jsp 页面。

如何实现所提出的想法?我怀疑这是相当微不足道的,但我没有找到答案,因为我什至不知道如何命名我的问题。

最佳答案

我想我现在明白了; -首先创建初始 servlet(index.jsp 不是 servlet),一旦用户访问您的页面,他就会被重定向到该页面。例如 localhost:8080/YouWebAppName/IndexServlet。

IndexServlet 检查是否设置了 session ,如果没有,则重定向到可访问的index.jsp,如果设置了 session ,则检查角色,如果角色设置为用户,则重定向到 localhost:8080/YourWebAppName/UserServlet,如果 session 设置为 Admin,它重定向到 localhost:8080/YourWebAppName/AdminServlet。

在 Admin 和 User servlet 中,您首先检查 session 变量是否分别等于 user/admin。

如果您想在两个 servlet 中共享某些方法,请让第三个 servlet 根据需要调用它,然后 UserServlet 和 AdminServlet 应该扩展该 servlet

关于java - 在 Java EE Web 应用程序中创建自定义 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8874539/

相关文章:

java - Spring MVC 应用程序,如何使用依赖 jar 文件中的 jsp View 配置 servlet

javascript - href ="#"在页面 url 末尾附加#

java - 在每个时钟滴答处更改背景颜色

java - hive 模拟 : A counter of a type of bee returns unusually high numbers

Java、多态性、静态类型和 "QueryInterface"模式

jsp - 将JSP参数从一个jsp传递到另一个jsp : code uses HIPPO

javascript - 如何从 MyApp Android 打开网络浏览器应用程序的 URL

python - 使用 BeautifulSoup 抓取 URL 循环

url - 有没有一种方法可以在不刷新页面的情况下更改浏览器的地址栏?

java - WebSphere 服务器未接受 EAR 中的新更改