Java EE - 基于内部业务逻辑显示页面

时间:2015-01-18 22:21:50

标签: java java-ee servlets glassfish facesservlet

我在Glassfish服务器上使用Java EE实现企业应用程序。我需要在我的应用程序中执行一些逻辑来显示特定URL子集的正确输出。

问题描述:

我的网页文件夹具有以下结构:

Web Pages
  Protected
    - CorrectPage.xhtml
    - A.xhtml
    - B.xhtml
  - Index.xhtml

我希望用户访问该网址:

/Protected/CorrectPage.xhtml

但是用户必须无法访问以下网址:

/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页面。

我还考虑过使用响应PrintWriter解决最后一个问题。

PrintWriter pw = response.getWriter();

但是,这并不能解决我的问题,因为我不知道如何打印xhtml文件,同时还要评估其中包含的表达式语言。

结论

非常感谢任何帮助。即使这意味着改变我提出的结构中的某些东西。当然,如果servlet的创建不是我的问题的正确解决方案,我将离开那条轨道。

我只对用户体验的结果感兴趣。

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以使用request.getRequestDispatcher("/protected/page[A|B]").forward(request, response)