2012-11-15 110 views
2

我是jsp的新手,因此开始使用静态重复代码在每个页面上编写我的项目。例如,在每页的头部我检查是否有当前用户登录,如果有,那么我在正文部分使用他们的名字,如果不是我重定向到登录页面。JSP包括:使用jsp的重复代码模板包含在每个页面

所以我的网页上,我想以下几点:

<%@ page language="java" 
     import="com.ptm.UserBean" 
%> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
<title> this is my title </title> 
<jsp:include page="head-section.jsp" > 
</head> 
<body > 
<jsp:include page="header.jsp" > 
</body> 
</html> 
在头section.jsp

我有一些HTML其中进口jQuery和我的CSS表,然后JSP代码块上的UserBean进口relys在上面的索引页上,然后一些javascript

header.jsp include使用在head-section.jsp代码块中设置的jsp变量。

所以我的问题是,这些单独的jsp的,我包括不自己的工作,但是当包括应该与页面一起工作,这削减了我有重复代码的数量。这是做这件事的最好方法吗?我听说过标签文件,但我不知道如何实现。

在此先感谢您的帮助!

回答

1

您可以使用include指令:

<jsp:include page="..." /> 

对于静态资源,你应该使用:

<%@ include file="filename" %> 
2

标记文件肯定是一个不错的选择,and they're quite easy to use。好的是你可以发送参数来提高可重用性。

这里的基本步骤(从教程):假设您存储标签/ WEB-INF /标签(如.TAG文件),你需要在你的JSP下面一行

<%@ taglib tagdir="/WEB-INF/tags" prefix="h" %> 

在TAGFILE(姑且称之为response.tag)可能看起来像

<%@ attribute name="name" required="true" %> 
<h2>Hello, ${name}!</h2> 

这意味着它需要一个名为名称的一个参数。在这之后,你怎么称呼它为

<h:response name="world"/> 

这将扩大到

<h2>Hello, world!</h2> 

输出。

+0

我相信这是要走的路,但是现在即将使用静态包含的速度,稍后我将通过您提供的教程感谢 – FredoAF

+0

另请参阅Will Hartung对http://的广泛和优秀的答案stackoverflow.com/questions/1296235/jsp-tricks-to-make-templating-easier关于如何快速上手标签的信息 – fvu

+0

是的,我看到这个答案,在第一次阅读时对我感到困惑,但我确信我只需要坐下来解决问题,为答案家伙欢呼! – FredoAF