图解服务器端网络架构-网络层L3

图解服务器端网络架构-网络层L3,第1张

数据链路层只是将同一网段中的节点连接起来,而网络层将不同的网段连接起来。

假如我们要连接国外的Web服务器,由于网段不同,在数据链路层这个层面是根本无法连接起来的,而网络层群能将数据链路层中能够的一个个小网段拼接成一个大网络。

有些IP地址已近被系统占用了,其中三种常用于网络设计和故障排除,它们分别是网络地址,广播地址,环回地址。

网络地址:是指主机部分的IP地址位都是0的IP地址,代表了网络本身。

例如,针对IP地址192.168.1.1设置的子网掩码时255.255.255.0,那么192.168.1.0就是网络地址。

广播地址:指主机部分的IP地址位都是1的IP地址,代表了同一网段中的所有节点。

例如,如果针对192.168.1.1设置的子网掩码时255.255.255.0,那么192.168.1.255就是广播地址。

路由器和L3(网络层)交换机是工具L3中的IP地执信息转发数据包的。对数据包的转发目的地进行切换的过程叫做路由选择。

L3交换机和路由器是通过路由表对IP数据包进行路由选择的。

路由表由“目的网段””下一跳“”路由协议“”度量值“等多种信息构成,它告诉我们将数据包转发给哪个IP地址就能抵达目的网段。其中,最重要的信息是”目的网段“和”下一跳“。

假设有如下设置的两个节点,它们是双向通信的。

MAC地址是物理地址,仅在同一网段中有效,因此,每当要跨越网段——也就是需要跨越路由器时——都必须更换MAC地址才行,ARP能解决这个目的MAC地址的更换问题。

WEB软件打印功能实现方式:

1、浏览器本身的打印功能,效果最差。

2、在web服务器上产生好PDF或Excel文件,下载到本地打印。很多在服务器端运行的报表软件采用这样的方式。因为就是下载文件,所以各种浏览器都支持。缺点就用户操作麻烦,服务器附载大。

3、报表插件方式,可以做到与桌面软件一样的打印功能,这种方式实现的效果最好。缺点就是插件是针对特定浏览器的,不能做到支持各种浏览器,报表插件一般是支持IE浏览器。

在不需要使用插件,直接打开通过链接方式打开

<%@ page language="java" import="java.util.*,java.io.*"

pageEncoding="UTF-8"%>

<%

String path = request.getContextPath()

String basePath = request.getScheme() + "://"

    + request.getServerName() + ":" + request.getServerPort()

    + path + "/"

%>

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

<html>

<head>

   <base href="<%=basePath%>">

</head>

<%

   out.clear()

   out = pageContext.pushBody()

   response.setContentType("application/pdf")

   try {

    String strPdfPath = new String("D://200701010001.PDF")

    //判断该路径下的文件是否存在

    File file = new File(strPdfPath)

    if (file.exists()) {

     DataOutputStream temps = new DataOutputStream(response

       .getOutputStream())

     DataInputStream in = new DataInputStream(

       new FileInputStream(strPdfPath))

     byte[] b = new byte[2048]

     while ((in.read(b)) != -1) {

      temps.write(b)

      temps.flush()

     }

     in.close()

     temps.close()

    } else {

     out.print(strPdfPath + " 文件不存在!")

    }

   } catch (Exception e) {

    out.println(e.getMessage())

   }

%>

<body>

   <br>

</body>

</html>

如果访问者的计算机上没有装acrobat reader,直接用iframe或者直接用链接打开,那就不是打开文档,而是直接下载了,为了防止下载,想像到媒体文件的播放方式,加上一些官方的docs,考虑用用object标签使用pdf插件嵌入ie中

<HTML>

    <HEAD>

        <META http-equiv="Content-Type" content="text/html charset=gb2312">

        <META http-equiv="Content-Style-Type" content="text/css">

        <META http-equiv="Content-Script-Type" content="text/javascript">

        <TITLE>Checking if Acrobat Reader installed (IE4+)...</TITLE>

        <SCRIPT for="window" event="onload"

<!--

            document.all [

                         document.all.PDFNotKnown ? "IfNoAcrobat" : "IfAcrobat"

                         ] .style.display = "block"

        //--></SCRIPT>

    </HEAD>

    <BODY>

        <NOSCRIPT>

            Cannot determine if you have Acrobat Reader (or the full Acrobat)

            installed <FONT size="-1">(because JavaScript is unavailable or 

            turned off)</FONT>.

        </NOSCRIPT>

        <DIV id="IfNoAcrobat" style="display:none">

            <a href="http://get.adobe.com/cn/reader/">你需要先安装Adobe Reader才能正常浏览文件,请点击这里下载Adobe Reader.</a>   

      </DIV>

        <OBJECT type="application/pdf" width=0 height=0 style="display:none">

            <DIV id="PDFNotKnown" style="display:none">&nbsp</DIV>

        </OBJECT>

   <DIV id=showdiv

style="Z-INDEX: 0 LEFT:10px WIDTH: 990px POSITION: absolute TOP: -8px HEIGHT: 10px">

<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="990" height="700" border="0" top="-10" name="pdf"> 

<param name="toolbar" value="false">

<param name="_Version" value="65539">

<param name="_ExtentX" value="20108">

<param name="_ExtentY" value="10866">

<param name="_StockProps" value="0">

<param name="SRC" value="MXL.pdf">

</object>

</DIV>

</BODY>

</HTML>

在网页中直接显示pdf格式的文件方便阅读。但是如果文件较大加载速度会很慢,另外如果客户端没有安装pdf阅读插件的话,也就看不了了,不过还是贴出来了,各取所需吗。(1.pdf要改成自己的pdf文件路径插入到页面文件中)

Html代码

<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="1050" border="0">   

<param name="_Version" value="65539">   

<param name="_ExtentX" value="20108">   

<param name="_ExtentY" value="10866">   

<param name="_StockProps" value="0">   

<param name="SRC" value="1.pdf">   

</object>   

<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="1050" border="0">

<param name="_Version" value="65539">

<param name="_ExtentX" value="20108">

<param name="_ExtentY" value="10866">

<param name="_StockProps" value="0">

<param name="SRC" value="1.pdf">

</object>

标准浏览器中:

Java代码

<object data="1.pdf" type="application/pdf" width="300" height="200">    

alt : <a href="1.pdf">test.pdf</a>    

</object>   

<object data="1.pdf" type="application/pdf" width="300" height="200"> 

 alt : <a href="1.pdf">test.pdf</a>

</object>

IE7.0以上版本的浏览器中可用如下方法,低版本的IE会显示两个Object区域

Java代码

<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="1050" border="0">    

<param name="_Version" value="65539">    

<param name="_ExtentX" value="20108">    

<param name="_ExtentY" value="10866">    

<param name="_StockProps" value="0">    

<param name="SRC" value="1.pdf">    

<object data="1.pdf" type="application/pdf" width="300" height="200">    

alt : <a href="1.pdf">test.pdf</a>    

</object>    

</object>   

<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="1050" border="0">

<param name="_Version" value="65539">

<param name="_ExtentX" value="20108">

<param name="_ExtentY" value="10866">

<param name="_StockProps" value="0">

<param name="SRC" value="1.pdf">

<object data="1.pdf" type="application/pdf" width="300" height="200"> 

 alt : <a href="1.pdf">test.pdf</a>

</object>

</object>

低版本浏览器中的处理方法1:

Java代码

<!--[if IE]>    

<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="1050" border="0">    

<param name="_Version" value="65539">    

<param name="_ExtentX" value="20108">    

<param name="_ExtentY" value="10866">    

<param name="_StockProps" value="0">    

<param name="SRC" value="1.pdf">    

</object>    

<![endif]-->    

<!--[if !IE]> <!-->    

<object data="1.pdf" type="application/pdf" width="800" height="1050">       

alt : <a href='http://get.adobe.com/cn/reader'>Adobe Reader.pdf</a>    

</object>    

<!--<![endif]-->   

<!--[if IE]>

 <object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="1050" border="0">

<param name="_Version" value="65539">

<param name="_ExtentX" value="20108">

<param name="_ExtentY" value="10866">

<param name="_StockProps" value="0">

<param name="SRC" value="1.pdf">

 </object>

<![endif]-->

 <!--[if !IE]> <!-->

 <object data="1.pdf" type="application/pdf" width="800" height="1050">   

alt : <a href='http://get.adobe.com/cn/reader'>Adobe Reader.pdf</a>

</object>

 <!--<![endif]-->

   低版本浏览器中的处理方法2:通过CSS控制显示隐藏

Html代码

/* hides the second object from all versions of IE */    

   

   

* html object.hiddenObjectForIE { display: none }    

/* display the second object only for IE5 Mac */    

/* IE Mac /*//*/    

* html object.hiddenObjectForIE { display: inline }    

/**/   

/* hides the second object from all versions of IE */

* html object.hiddenObjectForIE { display: none }

/* display the second object only for IE5 Mac */

/* IE Mac /*//*/

* html object.hiddenObjectForIE { display: inline }

/**/

Html代码

<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="1050" border="0">   

<param name="_Version" value="65539">   

<param name="_ExtentX" value="20108">   

<param name="_ExtentY" value="10866">   

<param name="_StockProps" value="0">   

<param name="SRC" value="1.pdf">   

<object data="1.pdf" type="application/pdf" width="300" height="200" class="hiddenObjectForIE">    

alt : <a href="1.pdf">test.pdf</a>   

</object>   

</object>

以上文章转自   http://www.cnblogs.com/mengzw/p/4754757.html


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/337682.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存