我正在使用带有Servlet和JSP的Java来创建一个基本的应用程序。
我有这个基本的html文件,我称之为基本布局,它具有基本的页面结构,带有导航菜单,页眉和页脚。
我还有一个register.jsp
页面,用户可以在其中注册。
当用户点击register.jsp
网址时,如何将/register
包含在基本布局中?
目前,我使用PrintWriter
对象从Servlet转储注册页面的html内容,并使用ajax动态呈现基页上的内容。但这确实是一种不好的做法。
答案 0 :(得分:1)
是的确这是不好的做法。
可以轻松完成的更简单的选择是将您的html文件转换为jsp。然后在jsp中,您可以包含您想要的任何其他资源。考虑这个例子:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<jsp:include flush="true" page="/templates/css.jsp"/>
<jsp:include flush="true" page="/templates/scripts.jsp"/>
</head>
<body>
<div id="container">
<div id="header">
<jsp:include flush="true" page="/templates/header.jsp"/>
<jsp:include flush="true" page="/templates/top_menu_visitor.jsp"/>
</div>
<div id="wrapper">
<jsp:include flush="true" page="/templates/top_content_visitors.jsp"/>
</div>
<div id="footer">
<jsp:include flush="true" page="/templates/footer_credits.jsp"/>
</div>
</div>
</body>
</html>
在此示例中,您有一个包含许多组件的模板页面,其中大多数组件在不同页面之间是通用的。这可能是你的index.jsp。对于寄存器jsp,你只需要像这样创建一个新的jsp页面,只需更改几个部分。
这是一种方法。在Java EE中,有许多框架可以自动执行此过程。
答案 1 :(得分:0)
您可以使用<jsp:include>
结合检查当前网址的<c:if>
条件块。
可以使用${pageContext.request.requestURI}
还有Apache Tiles library有助于克服JSP上缺乏可重用性
在Java EE5教程中查看有关<jsp:include>
的更多信息:http://docs.oracle.com/javaee/5/tutorial/doc/bnajb.html