jsp内嵌jsp后样式丢失,当两个jsp单独显示样式存在问题的解决方法

来源:互联网 发布:2018域名行情预测 编辑:程序博客网 时间:2024/05/18 00:23

项目中有多个jsp页面用到同一个jsp页面内容,因此我使用了jsp页面内嵌jsp页面。但问题出现了,当两个jsp页面分别在浏览器打开时样式是存在的,而页面内嵌后样式丢失

两个jsp页面单独在浏览器显示时样式可以正常显示。有页面top.jsp和index.jsp,且在同一级目录

当页面top.jsp嵌入到另外一个index.jsp页面中时部分样式会丢失

在内嵌时我使用了几种方法
第一种: jsp指令<%@ include file="top.jsp">
 
结果:部分样式丢失

第二种:iframe
<Iframe src= "top.jsp " width= "100% " height= "100% " scroll= "no " frameborder= "0 " name= "content " > </iframe>

结果:top部分的内容会被index.jsp内容遮挡住,而且index.jsp中的层显示样式依然丢失。
           因为我的top.jsp中有一个隐藏的层,当点击一个按钮时这个层显示。但是使用了iframe后只是将top.jsp页面按结构嵌入到index.jsp中
          (iframe元素的功能是在一个html内嵌一个文档,创建一个浮动的帧。iframe可以嵌在网页中的任意部分),页面编译后是两个单独的页面,
          所以才会遮挡

第三种:include动作<jsp:include page="top.jsp">

结果:两个页面的层隐藏的样式丢失
         示例:
        当点击下图中的“登陆”按钮时
         
        显示效果:
        
        但是使用了以上几种内嵌方法都会出现问题,第一种和第三种是不显示层,第二种显示的层会被index.jsp中的内容遮挡。


我在网上查询的解决方法有很多种
第一:路径的问题(相对路径和绝对路径):这个解决方法的原因是图片可能不显示

获得绝对路径:1.在jsp页面投中添加如下语句:
                        <%
                            String path = request.getContextPath();
                            String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
                            request.setAttribute("basePath", basePath);
                        %>

                        这样就可以对个位置使用了,在其他页面使用样式表就可以写成
                        <link rel="stylesheet" type="text/css" href="${basePath }css/right_content.css">
                        (或者也可以写成这样
                            <%
                            String path = request.getContextPath();
                            String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
                            %>
                            <link rel="stylesheet" type="text/css" href="<%=basePath%>css/right_content.css">
                            每个页面都要获得basePath的,因为这种获得方式是存储在page中。智能单个页面使用
                            )
结果是:我的样式都没了

第二:大小写的问题(html不区分大小写,w3c关于html标准时全小写。但是jsp中是分大小写的)
            w3c关于html的标准详解连接:http://panjunlai.blog.163.com/blog/static/5819030120096255446267/
            我没详细了解过jsp的标准。但是jsp可以和servlet交互,所以和java一样肯定区分大小写的。

最终解决方法:
        top.jsp中<html>以及<body>标签去掉
        
        去掉标签(只是top.jsp中去掉这几个标签,不要去其他东西):
        
        <!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=gb2312" />
                <link href="css/style.css" type="text/css" rel="stylesheet" />
                <script type="text/javascript" src="js/jquery.1.9.1.min.js"></script>
                <script type="text/javascript" charset="utf-8" src="js/index.js"></script>
                <title>版面头部</title>
            </head>
            <body>
            </body>
        </html>

    


    


 

原创粉丝点击