Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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 web应用程序中包含jsp页面而不复制代码?_Java_Jsp_Include - Fatal编程技术网

如何在Java web应用程序中包含jsp页面而不复制代码?

如何在Java web应用程序中包含jsp页面而不复制代码?,java,jsp,include,Java,Jsp,Include,首先,我要说,我对Java web应用完全陌生,如果这是一个非常基本的问题,我很抱歉 我正在编写一个应用程序,可以让用户登录到一个帐户。每个页面的顶部都包含一个信息栏(有点像GMail中的顶部栏),内容如下: Logged in as <userid> | Settings | Help 作为|设置|帮助登录 由于该部分将出现在每个页面上,所以我有理由将该功能拆分,这样我就不会重复代码 我做了一些搜索,发现我可以用这个: <jsp:include page="userInf

首先,我要说,我对Java web应用完全陌生,如果这是一个非常基本的问题,我很抱歉

我正在编写一个应用程序,可以让用户登录到一个帐户。每个页面的顶部都包含一个信息栏(有点像GMail中的顶部栏),内容如下:

Logged in as <userid> | Settings | Help
作为|设置|帮助登录
由于该部分将出现在每个页面上,所以我有理由将该功能拆分,这样我就不会重复代码

我做了一些搜索,发现我可以用这个:

<jsp:include page="userInfoBar.jsp" flush="true" />

在另一个JSP的中间。但是,我的userSettings.jsp页面遇到了问题,该页面还从数据库获取了一些用户详细信息。我不仅在两个JSP之间复制了一些代码,而且我感觉在呈现web页面的过程中我做了双倍的工作

例如(伪代码):

userInfoBar.jsp:
user=getCurrentUser
如果(用户){
打印作为user.userid |设置|帮助登录
}
userSettings.jsp:
user=getCurrentUser
更改user.userid的设置
所以在这个小例子中,getCurrentUser会被调用两次(我想,除非Java以某种方式优化)

如何避免这种重复工作,但仍然保持userInfoBar与每个JSP之间的某种独立性

提前谢谢


Brian

问题在于JSP中有java代码。大多数邪恶的事情都是在你这么做的时候发生的。您应该在google上查找MVC模式

无论如何,这样做的好方法是使用MVC模式,并在控制器中执行重载,在重载完成后,您可以传递字符串/列表以显示视图,而视图只显示它们

此外,如果您开始将MVC与JSTL结合使用,将有更多的人能够帮助您,因为每个人都知道如何做这件事,希望没有多少人仍然在JSP中使用内联java。这使得MVC易于实现

您可以将两个前端指向同一会话范围的bean以获取用户信息。

您还可以使用jspf(JSP片段文件)来存储JSP的块

jsp:include是包含jsp的一种方式

另一种方法是使用JSTL库中的c:include

此处介绍了这些差异: *


希望有帮助。我确信有一些特定于框架的方法,但这是我所知道的两种JSP方法。

好吧,对于一个只有几页的小项目,我认为使用简单的JSP是可以的,掌握它并不是一个坏主意

我可以向您保证,任何框架都会添加更多被反复调用的“不必要”代码,但您不会注意到,因为它隐藏在抽象背后


(我不能真正推荐一个适合java的html框架,但也许GWT是最有前途的,或者至少是最不痛苦的。至少我可以在一个合适的编辑器中编写真正的可调试代码…

很酷-我很熟悉MVC,因为Ruby on Rails和Django-我不确定如何在java中实现这一点。我现在正在查找:)正在阅读JSTL-这看起来是一条路要走。看起来很不一样,所以我会研究一会儿。谢谢你的帮助!
userInfoBar.jsp:
user = getCurrentUser
if ( user ) {
  print Logged in as user.userid | Settings | Help
}

userSettings.jsp:
<jsp:include page="userInfoBar.jsp" flush="true" />
user = getCurrentUser
Change settings for user.userid