我应该如何正确地在jsp页面中包含其他jsp页面?

时间:2012-10-19 13:36:55

标签: jsp include

我现在正在尝试使用jsp创建一个小型网站,就像大多数索引页一样,我网站的索引页面将包含一些部分:顶部(包含徽标和菜单),主要部分,底部部分。为了避免过多的html标签填写索引页面,可能包括页面将是一个好主意。

搜索之后,我知道有两种方法可以包含jsp页面:使用<%@ include file=""%><jsp:include page="">我知道它们之间存在一些差异,但我仍然遇到包含页面的一些问题。

如果我有index.jsptop.jsp,我想在top.jsp中加入index.jsp

这样index.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>title</title>
<style type="text/css">
  body {background-color:black;margin:0px;padding:0px;}
  #left,#right {width:10%;margin:0px;padding:0px;}
  #left,#center,#right {float:left;}
  #center {width:80%;}
  #top {height:150px;}
  #main {height:600px;background-color:white;}
</style>
</head>

<body>
<div id="left">&nbsp;</div>
<div id="center">
  <div id="top"><jsp:include page="top.jsp"/></div>
  <div id="main"></div>
  <div id="bottom"></div>
</div>
<div id="right">&nbsp;</div>
</body>
</html>
像这样的

top.jsp

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>  
<div id="logo"><img width="80px" height="65px" src="images/logo.jpg"></div>
<div id="menu">
<p>
  <a href="">hello</a>
  <a href="">work</a>
  <a href="">contact me</a>
</p>
</div>
</body>
</html>

我的问题如下:

1.无论我使用哪种方法,在浏览器中单击“查看源代码”,我都会这样:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>title</title>
<style type="text/css">
  body {background-color:black;margin:0px;padding:0px;}
  #left,#right {width:10%;margin:0px;padding:0px;}
  #left,#center,#right {float:left;}
  #center {width:80%;}
  #top {height:150px;}
  #main {height:600px;background-color:white;}
</style>
</head>

<body>
<div id="left">&nbsp;</div>
<div id="center">
  <div id="top"><html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>  
<div id="logo"><img width="80px" height="65px" src="images/logo.jpg"></div>
<div id="menu">
<p>
  <a href="">hello</a>
  <a href="">work</a>
  <a href="">contact me</a>
</p>
</div>
</body>
</html>
</div>
  <div id="main"></div>
  <div id="bottom"></div>
</div>
<div id="right">&nbsp;</div>
</body>
</html>

top.jsp中的代码包括头部中的内容出现在index.jsp中,我想也许我犯了一些错误,它应该是这样的。

2.如果我只写这样的一些lebels:

<div id="logo"><img width="80px" height="65px" src="images/logo.jpg"></div>
<div id="menu">
<p>
  <a href="">hello</a>
  <a href="">work</a>
  <a href="">contact me</a>
</p>
</div>

然后,如果代码包含“ISO-8859-1”不支持的某些字符,myeclipse将报告错误的信息对话框。 那么我应该如何正确包含jsp页面呢? 谢谢!

刘鹏

2 个答案:

答案 0 :(得分:2)

<html><head><body>期间,JSP不会为您删除<jsp:include>。它只包括未经修改的所有输出。如果您需要自动删除不相关的HTML元素,您应该使用具有模板功能的视图技术,例如JSP的后继Facelets,或者某些第三方库,如Velocity,Freemarker等。

您的top.jsp确实需要包含您真正需要在最终HTML产品中确定<jsp:include>的位置的内容。父页面。只需将<html><head><body>top.jsp保持一致。

对于字符编码问题,这是一个不同的问题,无关是否包含JSP。您只需要在每个JSP的顶部添加<%@page pageEncoding="UTF-8" %>以告诉容器它应该使用给定的字符编码来处理JSP。 UTF-8是事实上的标准,它涵盖了人类所知道的每一个角色。为防止在每个JSP上重复相同的行,请将其添加到web.xml

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <page-encoding>UTF-8</page-encoding>
    </jsp-property-group>
</jsp-config>

答案 1 :(得分:0)

试试这个:这就像复制和粘贴一样。

在所有页面中添加:

<%@page contentType="text/html" pageEncoding="UTF-8"%>

在顶部和底部是页眉和页脚页面jsut,身体内容就足够了。不要只输入html标签就足够了。

要在主页面中导入页眉和页脚,请执行以下代码:

<html>
<head>
</head>
<body>
<jsp:include page="/head.jsp" />
my body content
<jsp:include page="/foot.jsp" />
</body>
</html>

你也可以在头部导入css和js。