2

我是 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>

在 head-section.jsp 我有一些 html 导入 jquery 和我的 css 表,然后是一个 jsp 代码块,它依赖于上面索引页面上的 UserBean 导入,然后是一些 javascript

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

所以我的问题是,我包含的这些单独的 jsp 不能单独工作,但是当包含时应该与页面一起工作,这减少了我拥有的重复代码的数量。这是最好的方法吗?我听说过标签文件,但我不确定如何实现它。

在此先感谢您的帮助!

4

2 回答 2

2

标记文件绝对是一个不错的选择,而且它们非常易于使用。很好的是,您可以向它们发送参数以提高可重用性。

这是基本步骤(来自教程):假设您将标签存储在 /WEB-INF/tags 中(作为 .tag 文件),您需要在 jsp 中包含以下行

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

标签文件(我们称之为response.tag)可能看起来像

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

这意味着它需要一个名为 name 的参数。之后,您将其称为

<h:response name="world"/>

这将扩展到

<h2>Hello, world!</h2>

在输出中。

于 2012-11-15T12:07:30.717 回答
1

您可以使用include指令:

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

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

<%@ include file="filename" %>
于 2012-11-15T11:56:10.113 回答