首页 > 其他分享 >web开发----jsp中通用模版的引用 include的用法

web开发----jsp中通用模版的引用 include的用法

时间:2023-08-08 11:02:03浏览次数:39  
标签:web color ---- width jsp nav div 页面



web开发中常常会有一些代码需要多个页面使用,比如 banner   nav导航  还有 footer等.


ASP.NET开发中 有母版页的说法,也就是写一些通用的模版页,然后其他页面可以引用。 


jsp中  当然也有这样的用法  也就是 include的用法 


两种用法


一种是说明标签<%@ include  file="xxx.jsp"%>,一种是动作标签<jsp:include  page="xxx.jsp"/>

说明标签是静态引入,动作标签是动态

静态引入是把b.jsp的源码拼接到a.jsp中,在一块编译,这样两者代码是加到一起的

而动态引入则是分开编译两个jsp,把行成的html再加到一起

比如 我们jsp页面中经常都会有 path的定义

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>




如果 a.jsp页面中 定义了path, b.jsp页面中也定义了path 

在a.jsp页面中<%@ include  file="b.jsp"%>  这时候 a.jsp静态引入 b.jsp页面 就会报错  path重复定义 

因为 静态引入是把 a.jsp和b.jsp页面融合后再编译  这样就有两个path了 


但是 动态引入则不会报错

在a.jsp中 <jsp:include  page="b.jsp"/>  是ok的 因为它们是分开编译后 再融合起来



静态引入的示例


通过对两种用法的了解之后  我们现在 使用静态引入 

因为上述原因  我的模版页中 只有div  不会有 path等定义  也不会有html标签 如下:

我的header.jsp 全部内容如下:


<div id="banner">
   <img src="img/logo.jpg"></img>
  <img src="img/contactTitle.png"></img><img src="img/contactContent.gif" /> 
  </div>
<table width="910" border="0" cellspacing="0" cellpadding="0">
<tr>
  <td width="92" class="nav" ><a href="#">HOME</a></td>

    <td width="111" class="nav">Hair De Vera</td>

    <td width="128" class="nav">About us</td>

    <td width="135" class="nav">Contact Us</td>
    <td  width="350"><div style="position:relative;" class="search_back"><div id="123">
	
    <div class="bar">
        <div>Search:
            <input  type="text" /> 
            <input type="image" src="img/dyimage.png" style="border-width:0px;" />
        </div>
    </div>
   </div>
    </div>

</td>
  </tr>
</table>



header中用到的样式 我们也独立出来 这样在引用页面 同时引用即可

新建已经header.css

#banner {
width: 100%;
left: 0;
right: 0;
top: 0;
height: 100px;
}
.nav{
 background:#0E0D0D;
width:92px;   
 text-align: center;     
 white-space:nowrap;
color:#ffffff;
cursor:pointer;
line-height:37px;
}
.nav a {
        display:block; /* 把行内元素 变成 块级元素 */
        width:92px; /* 盒子 宽度 */
        height:37px; /* 盒子 高度 */
        text-decoration: none;
        vertical-align: middle;
        
    }
 .nav    a:link {color: #ffffff}		/* 未访问的链接 */
 .nav  a:visited {color: #ffffff}	/* 已访问的链接 */
  .nav  a:hover {color: #CC00FF}
.nav:hover{
	background:#ffffff;
	color:#CC00FF;
}
div.bar { /* styles for horizontal top bar */
	height: 37px;
	font-size: 110%;
	color:#ffffff;
	 text-align: center;     
}
div.bar div {
	padding:  7px 20px 3px 20px;
}
a.bar {
    text-decoration: none;
}

a.bar:hover {
    text-decoration: underline;
}
.search_back { background:#0E0D0D; height:37px;}

input {
vertical-align: middle;
}



如果使用到js的话 也独立新建 这里就不记录了


我依次建了 header.jsp    left.jsp footer.jsp三个模版 以及它们各自的css和用到的js


然后开始 在index.jsp中引用如下(完整index.jsp页面代码参考最后的ps): 


<body>
   <div class="center">
 <%@ include file="header.jsp"%> 
 <%@ include file="left.jsp"%> 
 <%@ include file="footer.jsp"%>
		</div>
  </body>




同时引用 模版用到的css js


<link rel="stylesheet" type="text/css" href="css/header.css"/>
	<link rel="stylesheet" type="text/css" href="css/footer.css"/>
		<link rel="stylesheet" type="text/css" href="css/left.css"/>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/left.js"></script>


效果如图:

web开发----jsp中通用模版的引用 include的用法_web开发



ps:index.jsp页面完整代码


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!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>
    <base href="<%=basePath%>"/>
    
    <title>My JSP 'vera.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache"/>
	<meta http-equiv="cache-control" content="no-cache"/>
	<meta http-equiv="expires" content="0"/>    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"/>
	<meta http-equiv="description" content="This is my page"/>
		<link rel="stylesheet" type="text/css" href="css/header.css"/>
	<link rel="stylesheet" type="text/css" href="css/footer.css"/>
		<link rel="stylesheet" type="text/css" href="css/left.css"/>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/left.js"></script>
<style  type="text/css">
  html {
    margin: 0px; 
    padding: 0px 0px 0px 5px; 
}
 body {
	color: #3C3C3C;
	background-color:#FFFFFF;
	font-family: Verdana, Arial, Helvetica, sans-serif;
		margin: 0px; 
	padding: 0px;  
}
div{
display: block;
}
div.center{
  max-width:1140px;
    min-width:960px;
    margin:0pt auto; 
    z-index:99
}
div.center{
  width:910px;
  min-width:800px;
}



  </style>
  </head>
  
  <body>
   <div class="center">
 <%@ include file="header.jsp"%> 
 <%@ include file="left.jsp"%> 
 <%@ include file="footer.jsp"%>
		</div>
  </body>
</html>





标签:web,color,----,width,jsp,nav,div,页面
From: https://blog.51cto.com/u_16218512/7005667

相关文章

  • 11.DaemonSet的应用编排机制
    DaemonSet的应用编排机制DaemonSet:在集群中的每个节点上,都要部署一个且只能部署目标应用的一个实例;也可以基于标签选择器管控一组Pod副本;DaemonSet在什么场景中可以用到:我们使用zabbix监控目标主机的时候,通常在每一个目标主机上面部署一个zabbix.agent,但没必要在一个节......
  • js记住用户名密码
    现在很多浏览器都会提供是否记住密码的功能。当我们写登录模块是 如果是使用form提交则能被浏览器识别到但是form提交会在链接上暴露出传的参数如果是用js做的登录 浏览器是检测不到的这样我们需要自己加上js记住密码的功能 主要用到了cookie.js以及login.jsp代码如下:co......
  • centos安装php php-fpm 以及 配置nginx
    下载php源码包http://www.php.net/downloads.php安装phptar-xvfphp-5.5.13.tar.bz2cdphp-5.5.13./configure--prefix=/usr/local/php--with-config-file-path=/etc--enable-inline-optimization--disable-debug--disable-rpath--enable-shared--enable-opcache--......
  • 12.Job和CronJob
    Job和CronJob编排作业级应用JobJob控制器的应用编排机制如果说daemoset和deployment主要负责编排始终运行的守护进程类应用;而Job则是负责编排运行有结束时间的“一次性”任务。◼控制器要确保Pod内的进程“正常(成功完成任务)”地退出◼非正常退出的Pod可以根据需要重启,......
  • C++ | 运算符重载
    运算符重载在类中的函数进行重载(成员函数)运算符重载用于重新定义运算符的作用,使用函数名称operatorOP作为函数名,其中OP为具体的运算符(如operator+)classTime{Timeoperator+(constTime&t);};Timea,b;Timec=a+b;在成员函数中重载的运算符,如+-等,默认左边......
  • C语言(不完善)
    C语言程序设计分支和循环语句C语句可分为以下五类:表达式语句、函数调用语句、控制语句、符合语句、空语句选择语句if语句如果表达式的结果为真,则语句执行。(0为假,非0为真)else的匹配:else是和它离的最近的if匹配的。语法结构:if(表达式){语句;}if(表达式){......
  • C++ | const的使用
    const基础用法用于声明一个不可再被修改的变量:constintnum=17;num=33; //Invalid,会报错用于指针首先,如果将一个指针用const声明为常量指针,那么这个指针的指向将不能被改变。但可以通过这个指针来修改被指向的对象:intdemo=17;int*constp=&demo; //......
  • c# 同步 异步 (转)
    技巧c#Task返回值Task返回值,目前有2种情况,一种是异步async返回值,一种是同步返回值第一种:异步返回值Task方法如果加了async关键字,那么就是异步返回方法,如果是异步返回方法,需要返回一个值时,直接returnvalue,就可以了。第二种:同步返回值Task方法如果没有加async关键字,需要返回......
  • 记一个问题:为什么 Redis get 方法时间复杂度官网标称 O(1)
    事情源自于上一篇文章:Redis数据结构-字典dict在学习到dict结构会用来维护redis数据库时,联想到redis的get方法底层一定会访问dict来查找键值。本质上还是查找hash,那么既然会查找hash,redis又是采取拉链法来解决hash冲突,那当访问的哈希桶是一个链表时,不就会出......
  • ASP.NET+EASYUI 换肤代码
    ​​编辑​......