我现在正在尝试使用jsp创建一个小型网站,就像大多数索引页一样,我网站的索引页面将包含一些部分:顶部(包含徽标和菜单),主要部分,底部部分。为了避免过多的html标签填写索引页面,可能包括页面将是一个好主意。
搜索之后,我知道有两种方法可以包含jsp页面:使用<%@ include file=""%>
或<jsp:include page="">
我知道它们之间存在一些差异,但我仍然遇到包含页面的一些问题。
如果我有index.jsp
和top.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"> </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"> </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"> </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"> </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页面呢? 谢谢!
刘鹏答案 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。