Java EE - Show page based on internal business logic

风流意气都作罢 提交于 2019-12-13 04:47:30

问题


I'm implementing an enterprise application with Java EE on Glassfish server. I need to my application to execute some logic to show the proper output for a specific subset of URLs.

Problem description:

My web pages folder has this structure:

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

I want the user to access the URL:

/Protected/CorrectPage.xhtml

But the user must not be able to access the following URLs:

/Protected/A.xhtml
/Protected/B.xhtml

When the URL /Protected/CorrectPage.xhtml is entered I want to execute some logic and depending on the outcome of this logic I want to show either A.xhtml, or B.xhtml, without any visible URL changes (redirects).

Solutions tried so far:

I thought about using a servlet mapped to /Protected/*.xhtml while leaving the Faces Servlet deal with any other URL in my application.

and having :

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*

My issue is that I don't know how to implement the Show A.xhtml. I basically want to print to the client my xhtml page.

I also thought about solving this last issue by using the response PrintWriter.

PrintWriter pw = response.getWriter();

But than again this doesn't solve my issue since I don't know how to print the xhtml file while also having the evaluation of the expression language contained in it.

Conclusion

Any help is extremely appreciated. Even if that means changing something in the structure I proposed. Naturally if the creation of a servlet isn't the correct solution for my issues I will leave that track.

I'm interested only in the outcome the user will experience.

Thanks in advance


回答1:


You may use request.getRequestDispatcher("/protected/page[A|B]").forward(request, response)



来源:https://stackoverflow.com/questions/28015491/java-ee-show-page-based-on-internal-business-logic

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!