基于内部业务逻辑的JavaEE-Show页面
我正在Glassfish服务器上用JavaEE实现一个企业应用程序。我需要让我的应用程序执行一些逻辑来显示特定URL子集的正确输出 问题描述: “我的网页”文件夹具有以下结构:基于内部业务逻辑的JavaEE-Show页面,java,jakarta-ee,servlets,glassfish,facesservlet,Java,Jakarta Ee,Servlets,Glassfish,Facesservlet,我正在Glassfish服务器上用JavaEE实现一个企业应用程序。我需要让我的应用程序执行一些逻辑来显示特定URL子集的正确输出 问题描述: “我的网页”文件夹具有以下结构: Web Pages Protected - CorrectPage.xhtml - A.xhtml - B.xhtml - Index.xhtml 我希望用户访问URL: /Protected/CorrectPage.xhtml 但用户必须不能访问以下URL: /Protected/A
Web Pages
Protected
- CorrectPage.xhtml
- A.xhtml
- B.xhtml
- Index.xhtml
我希望用户访问URL:
/Protected/CorrectPage.xhtml
但用户必须不能访问以下URL:
/Protected/A.xhtml
/Protected/B.xhtml
当输入URL/Protected/CorrectPage.xhtml时,我希望执行一些逻辑,并根据此逻辑的结果显示A.xhtml或B.xhtml,而不显示任何可见的URL更改(重定向) 迄今为止尝试的解决方案: 我考虑使用映射到/Protected/*.xhtml的servlet,同时让Faces servlet处理应用程序中的任何其他URL 并具有:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if(*Requested URL is /Protected/CorrectPage.xhtml*) {
if(logic())
*Show A.xhtml*
else
*Show B.xhtml*
} else
*Show 404*
我的问题是我不知道如何实现Show A.xhtml。我基本上想向客户端打印我的xhtml页面
我还考虑使用response PrintWriter解决最后一个问题
PrintWriter pw = response.getWriter();
但这并不能解决我的问题,因为我不知道如何打印xhtml文件,同时还要对其中包含的表达式语言进行求值
结论
非常感谢您的帮助。即使这意味着改变我提议的结构。当然,如果servlet的创建不是解决我的问题的正确方法,我会离开这条轨道
我只对用户将体验到的结果感兴趣
提前感谢您可以使用
request.getRequestDispatcher(“/protected/page[A | B]”)。转发(请求,响应)
请注意,page[A | B]
应作为正则表达式读取,即pageA
或pageB
感谢您的回答,但我认为这会递归调用我的servlet。我的servlet也被映射到“/protected/A.xhtml”以避免从URL直接访问这些页面。我认为您可以简单地在页面中包含一些代码以防止直接调用。您可以指定一些吗?我不知道你具体说的是什么代码,但我认为这会解决我的问题。我目前来自平板电脑,因此包含代码很困难,但是:在WEB-INF
下提供这些资源(XHTML文件-a.XHTML,B.XHTML…),并根据此转发请求,“根据此逻辑的结果,我希望显示A.xhtml或B.xhtml,而不显示任何可见的URL更改”。(使关联的操作方法返回适当的导航案例结果,例如return”/WEB-INF/pages/A.xhtml;
)。我希望显示A.xhtml或B.xhtml,而不显示任何可见的URL更改(重定向)“,你想让用户在不更改url的情况下看到不同的页面,这怎么可能呢?我会试试这个解决方案。”。我没有想到这一点。@Tiny我能够按照你的建议去做,并且我能够使用servlet的逻辑访问这些文件。我遇到的问题是,由于某种原因,我放在WEB-INF中的那些文件中包含的表达式语言根本没有得到评估。我在实际应用程序中尝试了这种方法。我能正确地看到一切发生。EL、
等的评估均正确进行。我只是使用与
或
相关联的操作方法,例如返回/WEB-INF/pages/a.xhtml”,将请求转发给相关资源代码>。