Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSP/SpringMVC应用程序_Java_Jsp_Jakarta Ee_Web Applications_Spring Mvc - Fatal编程技术网

Java JSP/SpringMVC应用程序

Java JSP/SpringMVC应用程序,java,jsp,jakarta-ee,web-applications,spring-mvc,Java,Jsp,Jakarta Ee,Web Applications,Spring Mvc,我正在使用JSP/SpringMVC编写一个web应用程序,需要根据使用它的客户定制UI。我需要隐藏/显示屏幕的某些部分,隐藏/显示某些标签及其文本框,还需要根据不同的客户修改标签。目前,我们根据登录的客户,通过元素和div控制JSP中的隐藏/显示。例如: if (customer= "A") show this else hide this 随着我们添加更多的客户,代码变得混乱,JSP将变得臃肿。 我认为的另一种选择是将页面拆分为多个部分,并以相同的方式控制这些部分,但最终可能会在J

我正在使用JSP/SpringMVC编写一个web应用程序,需要根据使用它的客户定制UI。我需要隐藏/显示屏幕的某些部分,隐藏/显示某些标签及其文本框,还需要根据不同的客户修改标签。目前,我们根据登录的客户,通过元素和div控制JSP中的隐藏/显示。例如:

if (customer= "A")

show this

else 

hide this
随着我们添加更多的客户,代码变得混乱,JSP将变得臃肿。 我认为的另一种选择是将页面拆分为多个部分,并以相同的方式控制这些部分,但最终可能会在JSP中出现代码重复

比如说

if (customer = "A")

jsp:include headerA.jsp

else

jsp:include genericheader.jsp
另一种选择是基于客户端编写不同的JSP和路由

有没有更好的方法来处理这种情况。有人能提出实施这种解决方案的最佳实践吗


谢谢。

为每个用户选择操作的UI不可能扩展到用户A和B之外。您需要基于角色的身份验证和授权系统

既然您已经在使用Spring,我建议您看看Spring安全性及其基于角色的功能。有一些标签可以帮助您

从另一个角度来看,这样基于角色的逻辑不属于标记。我建议将它放在控制器中,让它们为您组装页面

另一种可能是SiteMesh,它允许您创建复合视图


还有一点:jQuery是为了操纵DOM而诞生的。与CSS一起使用。

首先,它应该基于角色,而不是基于客户,每个客户都有特定的角色。许多客户可能具有相同的角色和屏幕访问权限以及UI

根据角色,您可以使用Spring安全机制进行身份验证和授权

如果您需要根据客户角色使用不同的布局,最好使用一些布局管理器,如瓷砖、SiteMesh等


或者对不同的客户使用不同的登录视图的portlet

您刚才说明了人员A是从一个商店登录的,而人员B是从另一个商店登录的。我不想这么说,但这是一个角色,无论你想如何旋转它,这都与用户授权有关

就如何实现它而言,您可以做很多事情,您可以截取登录请求并设置一个会话变量,该变量在字符串前加上前缀以确定正确的视图(即,当用户a登录时,您获得customerA,vs customerB,因此在呈现视图时,您将检索值并呈现“customerA/index”vs。“客户/索引”等

您还可以确定人员在控制器中的角色,并呈现适当的视图,尽管这会将您的用户角色与控制器逻辑相结合,我认为这是不推荐的

如果这个应用程序将有很多不同的后端,我建议您使用Portlet,这样您就可以为每个应用程序编写一个新的后端,而不是使用每个新的商店后端来膨胀您的web应用程序


这些只是一些方法,希望能有所帮助。

+1到Sitemesh。我使用它在标题中显示有关已登录用户的信息或显示登录链接(如果未登录)。这些不是角色,我需要根据客户机进行区分,例如,如果ABC客户机登录,这是一个页面,页面上显示的特定元素带有一些隐藏或可见的div,如果DEF客户机登录,则是不同的内容。这些不是角色。然后,它们是授权,您可以查找此人所在的组-更多关于Spring安全性的原因。请参阅我上面的编辑。谢谢duffymo。同样,这不是基于安全性或角色的。另一个例子是…我正在为两个商店创建一个web应用程序来登录。如果一个商店的人在他们的视图中登录了一些字段和一些附加部分以及他们商店的标签,例如,与另一个商店相比从另一个商店打开时,会看到不同的UI。我是否应该维护单独的JSP并基于该商店显示/隐藏。同样,这不是要逐个控制。